Fandrosoana amin'ny fanjohian-kevitra LLM: Dive lalina ara-teknika | B4N1

Fandrosoana amin'ny fanjohian-kevitra LLM: Dive lalina ara-teknika

9 months ago · b4n1 Tiempo de lectura: 4 min

Fampidirana

Ny Large Language Models (LLMs) dia nanova ny sehatry ny fanodinana fiteny voajanahary (NLP) tato anatin'ny taona vitsivitsy. Ireo maodely ireo dia nahazo vokatra manara-penitra amin'ny asa NLP isan-karazany, ao anatin'izany ny fandikana amin'ny fiteny, famintinana lahatsoratra ary famaliana fanontaniana. Na izany aza, ny tena mety ho an'ny LLM dia miankina amin'ny fahaizany misaina sy mahatakatra ny fifandraisana sarotra misy eo amin'ny foto-kevitra. Ato amin'ity lahatsoratra ity isika dia handinika ny fandrosoana amin'ny fanjohian-kevitra LLM, hikaroka ny teknika, ny maritrano ary ny fanamby.

Lafo

LLM dia karazana tambajotra neural izay voaofana amin'ny angona lahatsoratra be dia be mba hianarana lamina sy fifandraisana misy eo amin'ny teny sy ny hevitra. Ireo modely ireo matetika dia misy encoder sy decoder, izay ny encoder no manodina ny lahatsoratra fampidirana ary ny decoder no mamoaka ny lahatsoratra mivoaka. Ny encoder dia matetika rafitra mifototra amin'ny transformer, izay mety indrindra amin'ny angona manaraka toy ny lahatsoratra.

Architecture Transformer

Ny rafitra transformer, nampidirina tao amin'ny taratasy "Attention is all you need" nataon'i Vaswani et al. (2017), dia lasa fenitra de facto ho an'ny LLM. Ny transformer dia misy encoder sy decoder, samy misy sosona maromaro. Ny sosona tsirairay dia misy sosona roa: mekanika mifantoka amin'ny tena sy tamba-jotra famatsiana (FFNN) mifandray tanteraka.

fanilo fanafarana
manafatra fanilo.nn toy ny nn

kilasy TransformerLayer(nn.Module):
    def __init__(tena, d_model, n_heads, d_ff):
        super(TransformerLayer, tena).__init__()
        self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
        self.ffnn = nn.Linear(d_model, d_ff)
        self.dropout = nn.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def mandroso (tena, x):
        # Mekanika mifantoka amin'ny tena
        x_attn = tena.self_attn(x, x)
        x_attn = self.dropout(x_attn)
        x_attn = x + x_attn

        #FFNN
        x_ffnn = tena.ffnn(x_attn)
        x_ffnn = self.dropout(x_ffnn)
        x_ffnn = self.layer_norm(x_ffnn + x_attn)

        miverina x_ffnn

Fandrosoana amin'ny fanjohian-kevitra LLM

Nandroso be ny LLM tamin'ny fanjohian-kevitra sy fahatakarana ny fifandraisana sarotra misy eo amin'ny foto-kevitra. Ny sasany amin'ireo fandrosoana lehibe dia ahitana:

1. Fanjohian-kevitra mifototra amin'ny sary

Ny fanjohian-kevitra mifototra amin'ny graph dia ahitana ny fanehoana ny fahalalana ho toy ny grafika, izay ny nodes dia maneho hevitra ary ny sisiny dia maneho ny fifandraisana misy eo amin'izy ireo. Ny LLM dia azo ampiofanina hieritreritra momba ireo kisary ireo, manao faminaniana momba ny fifandraisana misy eo amin'ny nodes.

mampiasa graph::Graph;
mampiasa neural_network::NeuralNetwork;

fn graph_reasoning(graph: &Graph, query: &str) -> String {
    avelao embedding = neural_network.query(graph, query);
    avelao ny vokatra = neural_network.reason(graph, embedding);
    result.to_string()
}

2. Fianarana asa maro

Ny fianarana asa maro dia mitaky fanofanana modely tokana amin'ny asa maro miaraka. Ity fomba fiasa ity dia naseho hanatsara ny fahombiazan'ny LLM amin'ny asa isan-karazany, ao anatin'izany ny fanjohian-kevitra sy ny fahazoana fifandraisana sarotra.

fonosana lehibe

import (
	"fmt"
	"gonum.org/v1/gonum/mat"
)

karazana Model struct {
	*nn.Linear
	*nn.Linear
}

func (m *Modely) Mandrosoa(x *mat.Dense) *mat.Dense {
	// Fandalovana mandroso
	z := m.Linear(x)
	z = m.Linear(z)
	miverina z
}

3. Mekanisma saina

Ny mekanika saina dia mamela ny LLM hifantoka amin'ny ampahany manokana amin'ny lahatsoratra fampidirana rehefa mamorona ny vokatra. Ity fomba fiasa ity dia naseho hanatsara ny fahombiazan'ny LLM amin'ny asa isan-karazany, ao anatin'izany ny fanjohian-kevitra sy ny fahazoana fifandraisana sarotra.

fanilo fanafarana
manafatra fanilo.nn toy ny nn

Class 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.Dropout(0.1)
        self.layer_norm = nn.LayerNorm(d_model)

    def mandroso (tena, x):
        # Fanontaniana, lakile ary sanda
        q = self.query(x)
        k = tena.key(x)
        v = self.value(x)

        # Lanja saina
        lanja = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
        lanja = self.dropout(lanja)
        lanja = fanilo.softmax(lanja, dim=-1)

        # Vector context
        context = torch.matmul(lanja, v)

        miverina context

Visualization

Mba hampisehoana ny fahombiazan'ny LLM amin'ny asa isan-karazany, dia afaka mampiasa tabilao isika mba hampitahana ny fahamarinan'ny modely samihafa amin'ny asa iray. Ity misy ohatra amin'ny tabilao mampiasa Chart.js:

{
  "type": "bar",
  "data": {
    "labels": ["Asa 1", "Asa 2", "Asa 3"],
    "datasets": [
      {
        "label": "Môdely 1",
        "data": [0.8, 0.7, 0.9],
        "backgroundColor": "rgba(255, 99, 132, 0.2)",
        "borderColor": "rgba(255, 99, 132, 1)",
        "BorderWidth": 1
      },
      {
        "label": "Modely 2",
        "data": [0.9, 0.8, 0.7],
        "backgroundColor": "rgba(54, 162, 235, 0.2)",
        "borderColor": "rgba(54, 162, 235, 1)",
        "BorderWidth": 1
      }
    ]
  },
  "safidy": {
    "lohateny": {
      "fampisehoana": marina,
      "text": "Ny fahamarinan'ny maodely samihafa amin'ny asa isan-karazany"
    },
    "mizana": {
      "yAxes": [
        {
          "tonga": {
            "beginAtZero": marina
          }
        }
      ]
    }
  }
}

Fehiny

Ato amin'ity lahatsoratra ity, dia nandinika ny fandrosoana amin'ny fanjohian-kevitra LLM isika, ao anatin'izany ny fanjohian-kevitra mifototra amin'ny grafika, ny fianarana asa maro, ary ny fomba fiasan'ny saina. Nanome ohatra kaody amin'ny Python, Rust, ary Go ihany koa izahay mba hanehoana ireo hevitra ireo. Farany, nampiasa tabilao izahay mba hijerena ny fahombiazan'ny LLM amin'ny asa isan-karazany. Ireo fandrosoana ireo dia mety hanova ny sehatry ny NLP, ahafahan'ny LLM manjohy hevitra sy mahatakatra ny fifandraisana sarotra misy eo amin'ny foto-kevitra.

References

  • Vaswani et al. (2017). Ny saina no ilainao. arXiv preprint arXiv:1706.03762.
  • Devlin et al. (2018). BERT: Fanofanana mialoha ny Transformers Deep Bidirectional ho an'ny fahatakarana ny fiteny. arXiv preprint arXiv:1810.04805.
  • Radford et al. (2019). Ny Modely amin'ny fiteny dia Mpianatra Multitask tsy voafehy. arXiv preprint arXiv:1906.08237.

¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn