smallbard

Articles · Smallem : une mémoire de n-grammes

Ce que vaut un paramètre qui ne calcule pas

Quatrième article de la série Smallem : une mémoire de n-grammes.

L'article précédent a sorti la table de la carte : 2,1 milliards de paramètres pour 10 % du débit. Reste la question de la série : que valent-ils ? La série sur les lois d'échelle a mesuré ce que rapporte un paramètre du réseau, celui qui calcule. Celui-ci ne calcule pas : il attend qu'un n-gramme vienne le lire.

Toutes les mesures de cet article sont faites au budget de 10¹⁶ opérations, celui de la série sur les lois d'échelle, avec son réseau, ses taux, sa graine, et la table seule retenue à l'article 2. La table coûte ses opérations : 1 % pour xl, compté dans le budget. Chaque entraînement dure trois quarts d'heure, deux à la fois sur la carte.

La taille de la table

Le modèle xl, 29 millions de paramètres, sans table puis avec des tables de plus en plus grandes :

Lignes par têteParamètres de tablePerte, nats par octetGain
sans table00,9092
2¹⁶34 millions0,89280,016
2¹⁸134 millions0,89040,019
2²⁰537 millions0,88840,021
2²², en mémoire centrale2,1 milliards0,88850,021

La perte du modèle xl au budget 10¹⁶ selon la taille de la table : elle baisse en ligne droite avec le logarithme du nombre de lignes de 2¹⁶ à 2²⁰, puis ne baisse plus à 2²² ; la porte d'Engram fait un peu moins bien

La porte d'Engram, essayée à nouveau à cette taille avec 2²⁰ lignes, ne fait pas mieux : 0,8896, au lieu de 0,8884 pour la table seule.

Engram trouve une perte qui baisse en ligne droite avec le logarithme de la taille de la table. C'est ce qu'on voit de 2¹⁶ à 2²⁰ lignes : 0,0024 puis 0,0020 de gain chaque fois que la table quadruple. Puis la droite s'arrête net : 2²² lignes ne font pas mieux que 2²⁰.

La raison est dans les données. Au budget 10¹⁶, le modèle xl lit 49 millions de tokens, 6 % du corpus. Ils contiennent 3,5 millions de bigrammes distincts, et 18,6 millions de trigrammes, dont 13,5 millions n'apparaissent qu'une fois. Une ligne lue une seule fois reçoit un seul pas d'AdamW : elle n'apprend presque rien. Avec 2²⁰ lignes par tête et 8 têtes, presque tous les n-grammes vus au moins deux fois ont déjà une ligne à eux dans une des têtes. Les lignes de plus n'ont personne à servir.

L'article 1 avait compté les n-grammes du corpus entier, 141 millions de trigrammes. Mais ce qu'une table peut apprendre se compte dans ce que l'entraînement lit. Une table plus grande ne paie qu'avec un entraînement plus long.

À calcul constant

La série sur les lois d'échelle traçait, pour un budget donné, la perte selon la taille du réseau : une vallée, avec un creux, la bonne taille. Au budget 10¹⁶, ce creux était vers 15 millions de paramètres, entre les largeurs 384 et 448. La même courbe, chaque réseau recevant une table de 2²⁰ lignes par tête :

LargeurRéseauSans tableAvec tableGain
2565,3 millions0,92980,88370,046
3208,8 millions0,90550,87020,035
38413,8 millions0,89740,86900,028
44820,6 millions0,90000,87570,024
51229,4 millions0,90920,88840,021

Les courbes à calcul constant au budget 10¹⁶, sans table et avec une table de 2²⁰ lignes par tête : la courbe avec table est plus basse partout, d'autant plus que le réseau est petit, et son creux passe de 15 à 12 millions de paramètres

Le gain grandit à mesure que le réseau rétrécit : 0,046 nat par octet pour le plus petit, 0,021 pour le plus grand. Deux raisons s'y ajoutent. Un petit réseau sait moins de choses, et les n-grammes que la table retient sont plus souvent des choses qu'il ignorait. Et au même budget, il fait plus de pas : le réseau de largeur 256 lit 261 millions de tokens, le modèle xl 49. Sa table voit cinq fois plus de n-grammes, et chacun plus souvent : la section précédente a montré que c'est ce qui la limite.

Le creux se déplace donc vers les petits réseaux. Une parabole ajustée en log N sur chaque courbe, comme dans la série sur les lois d'échelle, le place à 15,3 millions de paramètres sans table et à 11,8 millions avec : un quart de moins. Une part de ce que les paramètres du réseau apprenaient, la table le retient à leur place, et le budget libéré va à plus de tokens.

Au creux, la perte passe de 0,8971 à 0,8683. Combien de calcul faudrait-il, sans table, pour en arriver là ? La série sur les lois d'échelle donne le creux sans table à 3 × 10¹⁶ : 0,8499. Entre les deux budgets, la perte du creux baisse de 0,099 par décade de calcul ; 0,029 en vaut 0,28, un facteur 1,9. La table vaut presque un doublement du calcul. Ses opérations sont déjà comptées dans le budget et en temps de carte, elle coûte 3 % de plus (article 3).

Au triple du calcul

Un gain mesuré à un seul budget pourrait n'être qu'un raccourci : la table apprendrait vite ce que le réseau aurait fini par apprendre seul. Le contrôle reprend donc la largeur 448 au budget 3 × 10¹⁶, trois fois plus de calcul, avec une table de 2²⁰ lignes par tête sur la carte, et une de 2²² en mémoire centrale.

Largeur 448Sans table2²⁰ lignes par tête2²², en mémoire centrale
10¹⁶0,90000,8757
3 × 10¹⁶0,85240,82670,8247

Le gain ne fond pas : 0,024 au budget 10¹⁶, 0,026 au triple. Il est même un peu plus grand, et ce n'est pas tout. Au budget 10¹⁶, la table de 2²² lignes ne faisait pas mieux que celle de 2²⁰ mais au triple, elle passe devant, de 0,002. Le réseau de largeur 448 lit cette fois 208 millions de tokens : assez de n-grammes revus pour occuper des lignes de plus. C'est ce qu'annonçait la première section : la taille utile de la table grandit avec l'entraînement.

Le creux sans table, à ce budget, était à 0,8499. Le seul réseau de largeur 448, avec sa table en mémoire centrale, fait 0,025 de mieux : selon la pente mesurée plus haut, ce que vaudrait encore, sans table, presque deux fois plus de calcul.

Ce qu'il faut retenir

  • Au budget 10¹⁶, la perte du modèle xl baisse en ligne droite avec le logarithme de la taille de la table jusqu'à 2²⁰ lignes par tête, puis plus du tout : ce que la table peut apprendre se compte dans les n-grammes que l'entraînement lit, et lit plusieurs fois.
  • Le gain est d'autant plus grand que le réseau est petit, de 0,021 à 0,046 nat par octet.
  • Le creux de la courbe à calcul constant passe de 15 à 12 millions de paramètres, et sa perte baisse de 0,029 : ce que vaudrait, sans table, presque deux fois plus de calcul.
  • Au triple du calcul, le gain tient, 0,026 à la largeur 448, et la table de 2²² lignes passe devant celle de 2²⁰ : plus l'entraînement lit, plus une grande table sert.

Article suivant : Générer avec une mémoire.