Nā holomua ma ka LLM Noʻonoʻo: He Luʻu Hohonu ʻenehana | B4N1

Nā holomua ma ka LLM Noʻonoʻo: He Luʻu Hohonu ʻenehana

9 months ago · b4n1 Read time: 5 min

Hoʻolauna

Ua hoʻololi ka Large Language Models (LLMs) i ke kahua o ka hana ʻōlelo kūlohelohe (NLP) i nā makahiki i hala iho nei. Ua loaʻa i kēia mau hiʻohiʻona nā hopena hou loa i nā hana NLP like ʻole, me ka unuhi ʻōlelo, ka hōʻuluʻulu kikokikona, a me ka pane nīnau. Eia naʻe, aia ka mana maoli o nā LLM i ko lākou hiki ke noʻonoʻo a hoʻomaopopo i ka pilina paʻakikī ma waena o nā manaʻo. Ma kēia ʻatikala, e ʻimi mākou i ka holomua o ka noʻonoʻo LLM, e ʻimi ana i nā ʻenehana kumu, nā hale hana, a me nā pilikia.

Kāpae

ʻO nā LLM kahi ʻano pūnaewele neural i hoʻomaʻamaʻa ʻia ma ka nui o ka ʻikepili kikokikona e aʻo i nā ʻano a me nā pilina ma waena o nā huaʻōlelo a me nā manaʻo. Loaʻa kēia mau hiʻohiʻona i kahi encoder a me kahi decoder, kahi e hana ai ka encoder i ka kikokikona hoʻokomo a me ka decoder e hana i ka kikokikona puka. ʻO ka encoder ka mea maʻamau i kahi hoʻolālā e pili ana i ka transformer, i kūpono loa no ka ʻikepili sequential e like me ke kikokikona.

Hoʻolālā Hoʻololi

ʻO ka hoʻolālā transformer, i hoʻokomoʻia ma ka pepa "Attention is All You Need" na Vaswani et al. (2017), ua lilo i mea maʻamau de facto no nā LLM. Aia ka mea hoʻololi i kahi encoder a me kahi decoder, kēlā me kēia me nā papa he nui. Loaʻa i kēlā me kēia papa he ʻelua sub-layers: kahi mīkini nānā ponoʻī a me kahi pūnaewele feed-forward pili piha (FFNN).

ipukukui lawe mai
lawe mai i ka lama.nn e like me nn

papa TransformerLayer(nn.Module):
    def __init__(self, d_model, n_heads, d_ff):
        super(TransformerLayer, self).__init__()
        self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
        self.ffnn = nn.Linear(d_model, d_ff)
        self.dropout = nn.Haʻalele(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def i mua(self, x):
        # ʻO ka mīkini nānā ponoʻī
        x_attn = iho.aku_attn(x, x)
        x_attn = iho.
        x_attn = x + x_attn

        # FFNN
        x_ffnn = iho.ffnn(x_attn)
        x_ffnn = iho.haʻalele(x_ffnn)
        x_ffnn = self.layer_norm(x_ffnn + x_attn)

        hoʻihoʻi x_ffnn

Nā holomua i ka LLM Noʻonoʻo

Ua holomua nui nā LLM i ka noʻonoʻo a me ka hoʻomaopopo ʻana i nā pilina paʻakikī ma waena o nā manaʻo. ʻO kekahi o nā holomua koʻikoʻi:

1. Noʻonoʻo Ma muli o ka pakuhi

ʻO ka noʻonoʻo e pili ana i ka pakuhi ka hōʻike ʻana i ka ʻike ma ke ʻano he pakuhi, kahi e hōʻike ai nā nodes i nā manaʻo a me nā ʻaoʻao e hōʻike ana i ka pilina ma waena o lākou. Hiki ke aʻo ʻia nā LLM e noʻonoʻo e pili ana i kēia mau pakuhi, e hana ana i nā wānana e pili ana i ka pilina ma waena o nā node.

hoʻohana i ka pakuhi::Graph;
hoʻohana i ka neural_network::NeuralNetwork;

fn graph_reasoning(graph: &Graph, query: &str) -> String {
    e hoʻokomo = neural_network.query(graph, query);
    let result = neural_network.reason(graph, embedding);
    result.to_string()
}

2. Ke aʻo ʻana i nā hana he nui

Hoʻokomo ka aʻo ʻana i nā hana he nui i ke aʻo ʻana i hoʻokahi kumu hoʻohālike ma nā hana he nui i ka manawa like. Ua hōʻike ʻia kēia ala e hoʻomaikaʻi i ka hana o nā LLM ma nā hana like ʻole, me ka noʻonoʻo a me ka hoʻomaopopo ʻana i nā pilina paʻakikī.

pūʻolo nui

lawe mai (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

ʻano kumu hoʻohālike {
	*nn.Linear
	*nn.Linear
}

func (m *Model) Imua(x *mat.Dense) *mat.Dense {
	// Holo i mua
	z := m.Linear(x)
	z = m.Linear(z)
	hoʻihoʻi z
}

3. Mechanisms Nānā

Hiki i nā mīkini hoʻolohe ke nānā i nā LLM i nā ʻāpana kikoʻī o ka kikokikona hoʻokomo i ka wā e hana ai i ka puka. Ua hōʻike ʻia kēia ala e hoʻomaikaʻi i ka hana o nā LLM ma nā hana like ʻole, me ka noʻonoʻo a me ka hoʻomaopopo ʻana i nā pilina paʻakikī.

ipukukui lawe mai
lawe mai i ka lama.nn e like me nn

papa AttentionMechanism(nn.Module):
    def __init__(self, d_model, n_heads):
        super(AttentionMechanism, self).__init__()
        self.query = nn.Linear(d_model, d_model)
        self.key = nn.Linear(d_model, d_model)
        self.value = nn.Linear(d_model, d_model)
        self.dropout = nn.Haʻalele(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def i mua(self, x):
        # Nīnau, kī, a me ka waiwai
        q = pono.query(x)
        k = pono.ki(x)
        v = pono.waiwai(x)

        # Kaumaha nānā
        kaumaha = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        paona = self.dropout(kaumaha)
        kaumaha = torch.softmax(kaumaha, pōʻeleʻele=-1)

        # Hōʻikeʻike vector
        pōʻaiapili = torch.matmul(kaumaha, v)

        hoʻihoʻi pōʻaiapili

Hoikeike

No ka nānā ʻana i ka hana o nā LLM ma nā hana like ʻole, hiki iā mākou ke hoʻohana i ka pakuhi e hoʻohālikelike i ka pololei o nā hiʻohiʻona like ʻole ma kahi hana i hāʻawi ʻia. Eia kekahi laʻana o kahi pakuhi e hoʻohana ana iā Chart.js:

{
  "type": "pā",
  "ʻikepili": {
    "labels": ["Task 1", "Task 2", "Task 3"],
    "mau ʻikepili": [
      {
        "label": "Hoʻohālike 1",
        "ʻikepili": [0.8, 0.7, 0.9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "BorderWidth": 1
      },
      {
        "label": "Hoʻohālike 2",
        "ʻikepili": [0.9, 0.8, 0.7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "BorderWidth": 1
      }
    ]
  },
  "koho": {
    "poʻo inoa": {
      "hōʻike": ʻoiaʻiʻo,
      "text": "Ka pololei o nā kumu hoʻohālike like ʻole ma nā hana like ʻole"
    },
    "nā unahi": {
      "yAxes": [
        {
          "kuʻi": {
            "beginAtZero": ʻoiaʻiʻo
          }
        }
      ]
    }
  }
}

Ka hopena

Ma kēia ʻatikala, ua ʻimi mākou i nā holomua o ka noʻonoʻo LLM, me ka noʻonoʻo ʻana i ka pakuhi, ke aʻo ʻana i nā hana he nui, a me nā ʻano hana hoʻolohe. Ua hāʻawi pū mākou i nā hiʻohiʻona code ma Python, Rust, a me Go e hōʻike i kēia mau manaʻo. ʻO ka hope, ua hoʻohana mākou i ka pakuhi e nānā i ka hana o nā LLM ma nā hana like ʻole. Hiki i kēia mau holomua ke hoʻololi i ke kahua o NLP, e hiki ai i nā LLM ke noʻonoʻo a hoʻomaopopo i nā pilina paʻakikī ma waena o nā manaʻo.

Nā kuhikuhi

  • ʻO Vaswani et al. (2017). ʻO ka nānā wale nō kāu e pono ai. arXiv preprint arXiv:1706.03762.
  • ʻO Devlin et al. (2018). BERT: Hoʻomaʻamaʻa mua ʻana i nā mea hoʻololi ʻelua ʻaoʻao hohonu no ka hoʻomaopopo ʻana i ka ʻōlelo. arXiv preprint arXiv:1810.04805.
  • ʻO Radford et al. (2019). ʻO nā kumu hoʻohālike ʻōlelo he poʻe aʻo nui ʻole i mālama ʻia. arXiv preprint arXiv:1906.08237.

Have Questions?

Let's Talk

Contact me on LinkedIn