


Est-il nécessaire de « participer » ? Andrej Karpathy : Il est temps de jeter ce bagage historique
L'émergence de l'IA conversationnelle telle que ChatGPT a habitué les gens à ce genre de choses : saisissez un texte, un code ou une image, et le robot conversationnel vous donnera la réponse que vous souhaitez. Mais derrière cette méthode d'interaction simple, le modèle d'IA doit effectuer un traitement de données et des calculs très complexes, et la tokenisation est courante.
Dans le domaine du traitement du langage naturel, la tokenisation fait référence à la division du texte saisi en unités plus petites, appelées « jetons ». Ces jetons peuvent être des mots, des sous-mots ou des caractères, en fonction de la stratégie spécifique de segmentation des mots et des exigences de la tâche. Par exemple, si nous effectuons une tokenisation sur la phrase « J'aime manger des pommes », nous obtiendrons une séquence de tokens : ["I", "Like", "Eat", "Apple"]. Certaines personnes traduisent la tokenisation par « segmentation de mots », mais d'autres pensent que cette traduction est trompeuse. Après tout, le jeton segmenté n'est peut-être pas le « mot » que nous comprenons tous les jours.
Source de l'image : https://towardsdatascience.com/dynamic-word-tokenization-with-regex-tokenizer-801ae839d1cd
Le but de la tokenisation est de convertir les données d'entrée en quelque chose que l'ordinateur peut traiter la forme et fournir une représentation structurée pour la formation et l'analyse ultérieures du modèle. Cette méthode apporte de la commodité à la recherche sur l’apprentissage profond, mais elle pose également beaucoup de problèmes. Andrej Karpathy, qui vient de rejoindre OpenAI il y a quelque temps, en a souligné plusieurs.
Tout d'abord, Karpathy estime que la tokenisation introduit de la complexité : en utilisant la tokenisation, le modèle de langage n'est pas un modèle complet de bout en bout. Cela nécessite une étape distincte pour la tokenisation, qui possède son propre processus de formation et d'inférence et nécessite des bibliothèques supplémentaires. Cela augmente la complexité de l’introduction de données provenant d’autres modalités.
De plus, la tokenisation rendra également le modèle sujet aux erreurs dans certains scénarios. Par exemple, lors de l'utilisation de l'API de complétion de texte, si votre invite se termine par un espace, les résultats que vous obtenez peuvent être très. différent. .
Source de l'image : https://blog.scottlogic.com/2021/08/31/a-primer-on-the-openai-api-1.html
encore Par exemple, en raison de l'existence de la tokenisation, le puissant ChatGPT n'écrira pas les mots à l'envers (les résultats des tests suivants proviennent de GPT 3.5).
Il peut y avoir beaucoup d'autres exemples comme celui-ci. Karpathy estime que pour résoudre ces problèmes, nous devons d'abord abandonner la tokenisation.
Un nouvel article publié par Meta AI explore cette question. Plus précisément, ils ont proposé une architecture de décodeur multi-échelle appelée « MEGABYTE » capable d'effectuer une modélisation différentiable de bout en bout de séquences dépassant un million d'octets.
Lien papier : https://arxiv.org/pdf/2305.07185.pdf
Il est important de noter que cet article montre la faisabilité de l'abandon de la tokenisation et a été évalué par Karpathy comme « prometteur ». ".
Voici les détails du document.
Présentation du papier
Comme mentionné dans l'article sur l'apprentissage automatique, la raison pour laquelle l'apprentissage automatique semble être capable de résoudre de nombreux problèmes complexes est qu'il transforme ces problèmes en problèmes mathématiques.
Et la PNL a la même idée. Les textes sont tous des "données non structurées". Nous devons d'abord convertir ces données en "données structurées". Ensuite, les données structurées peuvent être converties en problèmes mathématiques. la première étape de la transformation.
En raison du coût élevé des mécanismes d'auto-attention et des grands réseaux de rétroaction, les grands décodeurs de transformateurs (LLM) n'utilisent généralement que des milliers de jetons de contexte. Cela limite considérablement l'ensemble des tâches auxquelles le LLM peut être appliqué.
Sur cette base, les chercheurs de Meta AI ont proposé une nouvelle méthode de modélisation de séquences d'octets longs - MEGABYTE. Cette méthode divise la séquence d'octets en patchs de taille fixe, similaires au jeton. Le modèle
MEGABYTE se compose de trois parties :
- l'intégrateur de patchs, qui encode simplement les patchs en concaténant sans perte les intégrations de chaque octet ;
- module global - avec entrées et sorties Grand transformateur autorégressif représenté par le patch ;
- module local - un petit modèle autorégressif qui peut prédire les octets dans le patch.
L'étude a révélé que pour de nombreuses tâches, la plupart des octets sont relativement faciles à prédire (par exemple, compléter un mot à partir des premiers caractères), ce qui signifie qu'il n'est pas nécessaire qu'un octet utilise de grands réseaux de neurones, mais peut utiliser des modèles beaucoup plus petits pour la modélisation intra-patch.
L'architecture MEGABYTE a apporté trois améliorations majeures à Transformer pour la modélisation de séquences longues :
auto-attention sous-quadratique. La plupart des travaux sur les modèles à séquence longue se concentrent sur la réduction du coût quadratique de l’attention personnelle. En décomposant une longue séquence en deux séquences plus courtes et en taille de patch optimale, MEGABYTE réduit le coût du mécanisme d'auto-attention à , rendant même les séquences longues faciles à traiter.
couche de rétroaction par patch. Dans les très grands modèles tels que GPT-3, plus de 98 % des FLOPS sont utilisés pour calculer des couches de rétroaction en fonction de la position. MEGABYTE permet des modèles plus grands et plus expressifs au même coût en utilisant de grandes couches de rétroaction par patch (au lieu de par position). Avec une taille de patch P, le transformateur de base utilisera la même couche de rétroaction avec m paramètres P fois, tandis que MEGABYTE n'aura besoin d'utiliser la couche avec les paramètres mP qu'une seule fois au même coût.
3. Décodage parallèle. Le transformateur doit effectuer tous les calculs en série pendant la génération car l'entrée de chaque pas de temps est la sortie du pas de temps précédent. En générant des représentations de correctifs en parallèle, MEGABYTE obtient un plus grand parallélisme dans le processus de génération. Par exemple, un modèle MEGABYTE avec 1,5 Mo de paramètres génère des séquences 40 % plus rapidement qu'un transformateur de paramètres standard de 350 Mo, tout en améliorant également la perplexité lors de l'entraînement à l'aide du même calcul.
Dans l'ensemble, MEGABYTE nous permet de former des modèles plus grands et plus performants avec le même budget de calcul, sera capable de gérer des séquences très longues et d'augmenter la vitesse de construction lors du déploiement.
MEGABYTE contraste également avec les modèles autorégressifs existants, qui utilisent généralement une certaine forme de tokenisation dans laquelle des séquences d'octets sont mappées en jetons discrets plus grands (Sennrich et al., 2015 ; Ramesh et al., 2021 ; Hsu et al., 2021). La tokenisation complique le prétraitement, la modélisation multimodale et le transfert vers de nouveaux domaines, tout en cachant la structure utile dans le modèle. Cela signifie que la plupart des modèles SOTA ne sont pas véritablement des modèles de bout en bout. Les méthodes de tokenisation les plus largement utilisées nécessitent l’utilisation d’heuristiques spécifiques au langage (Radford et al., 2019) ou la perte d’informations (Ramesh et al., 2021). Par conséquent, remplacer la tokenisation par un modèle d’octets efficace et performant présentera de nombreux avantages.
L'étude a mené des expériences sur MEGABYTE et certains modèles de base puissants. Les résultats expérimentaux montrent que MEGABYTE fonctionne de manière comparable aux modèles de sous-mots sur la modélisation de langage à contexte long, atteint une perplexité d'estimation de densité de pointe sur ImageNet et permet la modélisation audio à partir de fichiers audio bruts. Ces résultats expérimentaux démontrent la faisabilité d’une modélisation de séquences autorégressives sans tokenisation à grande échelle. #🎜🎜 ##### 🎜🎜#Le composant principal de Megabyte de#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜#patch intégrer
L'intégrateur de patch de taille P peut octeter une séquence
est mappé sur une longueur de
#🎜 🎜#, séquence d'intégration de patch avec dimensions
.
#🎜 🎜#
, formant un intégration de taille D_G avec l'intégration de position ajoutée. Ensuite, l'incorporation d'octets est Remodelez-le en une séquence d'intégrations de patch K avec les dimensions
. Pour permettre la modélisation autorégressive, la séquence de patchs est complétée par des intégrations de remplissage à partir de la taille du patch pouvant être entraîné ( #), puis supprime le dernier patch de l'entrée. Cette séquence est l'entrée du modèle global, représentée par
#🎜 🎜#
module global
Le module global est un modèle de transformateur dimensionnel P・D_G à architecture uniquement décodeur qui fonctionne sur k séquences de patchs. Le module global combine un mécanisme d'auto-attention et un masque causal pour capturer les dépendances entre les correctifs. Le module global saisit les représentations de k séquences de correctifs
et génère des mises à jour en effectuant une auto-attention sur les correctifs précédents. L'expression de
# 🎜🎜#
La sortie du module global final
K patchs contenant les dimensions P・D_G express . Pour chacun d'eux, nous les avons remodelés en une séquence de longueur P et de dimension D_G, où la position p utilise la dimension p·D_G à (p + 1)·D_G. Chaque position est ensuite mappée à la dimension du module local avec la matrice
, où D_L est la dimension du module local. Ceux-ci sont ensuite combinés avec une intégration d'octets de taille D_L pour le jeton suivant.
module local
module local est une architecture plus petite, réservée uniquement au décodeur, d'un modèle de transformateur dimensionnel D_L qui fonctionne sur un seul patch k contenant P éléments, chaque élément étant la somme d'une sortie globale du module et l'incorporation de l'octet précédent dans la séquence. K copies du module local sont exécutées indépendamment sur chaque patch et exécutées en parallèle pendant la formation, calculant ainsi la représentation #
analyse d'efficacité
#🎜🎜 # Efficacité de la formationLes chercheurs ont analysé les coûts de différentes architectures lors de la mise à l'échelle de la longueur des séquences et de la taille du modèle. Comme le montre la figure 3 ci-dessous, l'architecture MEGABYTE utilise moins de FLOPS que des transformateurs et des transformateurs linéaires de taille comparable sur une variété de tailles de modèle et de longueurs de séquence, permettant l'utilisation de modèles plus grands pour le même coût de calcul.
Efficacité de la génération
Considérez un tel modèle MEGABYTE, qui a la couche L_global dans le modèle global, la couche L_local dans le module local, la taille du patch est P et a L_local + Le transformateur L'architecture de la couche L_global est comparée. La génération de chaque patch avec MEGABYTE nécessite une séquence O (L_global + P·L_local) d'opérations en série. Lorsque L_global ≥ L_local (les modules globaux ont plus de couches que les modules locaux), MEGABYTE peut réduire le coût d'inférence de près de P fois.
Résultats expérimentaux
Modélisation du langage
Les chercheurs ont évalué la fonction de modélisation du langage de MEGABYTE sur 5 ensembles de données différents qui mettent l'accent sur les dépendances à long terme, à savoir le projet Gutenberg (PG-19), les livres, les histoires, arXiv et Code. Les résultats sont présentés dans le tableau 7 ci-dessous, MEGABYTE surpasse systématiquement le transformateur de base et PerceiverAR sur tous les ensembles de données.
Les chercheurs ont également élargi les données de formation sur PG-19. Les résultats présentés dans le tableau 8 ci-dessous sont nettement meilleurs que les autres modèles d'octets et peuvent être comparés aux données de formation sur les sous-mots comparables. aux modèles SOTA.
Modélisation d'image
Les chercheurs ont formé un grand modèle MEGABYTE sur l'ensemble de données ImageNet 64x64, dans lequel les paramètres des modules globaux et locaux sont respectivement de 2,7 Mo et 350 Mo, et ont 1,4 Jeton T. Ils estiment que la formation du modèle prend moins de la moitié du nombre d'heures GPU nécessaires pour reproduire le meilleur modèle PerceiverAR dans l'article de Hawthorne et al., 2022. Comme le montre le tableau 8 ci-dessus, MEGABYTE a des performances comparables à celles du SOTA de PerceiverAR, tout en n'utilisant que la moitié des calculs de ce dernier.
Les chercheurs ont comparé trois variantes de transformateur, à savoir vanilla, PerceiverAR et MEGABYTE, pour tester l'évolutivité de longues séquences à des résolutions d'image de plus en plus grandes. Les résultats sont présentés dans le tableau 5 ci-dessous. Dans ce paramètre de contrôle informatique, MEGABYTE surpasse le modèle de base à toutes les résolutions.
Le tableau 14 ci-dessous résume les paramètres exacts utilisés par chaque modèle de base, y compris la longueur du contexte et le nombre de latents.
Modélisation audio
L'audio possède à la fois la structure séquentielle du texte et les propriétés continues des images, ce qui est une application intéressante pour MEGABYTE. Le modèle de cet article a obtenu un bpb de 3,477, ce qui est nettement inférieur au modèle percepterAR (3,543) et au transformateur vanille (3,567). Des résultats d'ablation supplémentaires sont détaillés dans le tableau 10 ci-dessous.
Veuillez vous référer à l'article original pour plus de détails techniques et de résultats expérimentaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans Debian Systems, les appels du système ReadDir sont utilisés pour lire le contenu des répertoires. Si ses performances ne sont pas bonnes, essayez la stratégie d'optimisation suivante: simplifiez le nombre de fichiers d'annuaire: divisez les grands répertoires en plusieurs petits répertoires autant que possible, en réduisant le nombre d'éléments traités par appel ReadDir. Activer la mise en cache de contenu du répertoire: construire un mécanisme de cache, mettre à jour le cache régulièrement ou lorsque le contenu du répertoire change et réduire les appels fréquents à Readdir. Les caches de mémoire (telles que Memcached ou Redis) ou les caches locales (telles que les fichiers ou les bases de données) peuvent être prises en compte. Adoptez une structure de données efficace: si vous implémentez vous-même la traversée du répertoire, sélectionnez des structures de données plus efficaces (telles que les tables de hachage au lieu de la recherche linéaire) pour stocker et accéder aux informations du répertoire

La configuration du pare-feu d'un serveur de courrier Debian est une étape importante pour assurer la sécurité du serveur. Voici plusieurs méthodes de configuration de pare-feu couramment utilisées, y compris l'utilisation d'iptables et de pare-feu. Utilisez les iptables pour configurer le pare-feu pour installer iptables (sinon déjà installé): Sudoapt-getUpDaSuDoapt-getinstalliptableView Règles actuelles iptables: Sudoiptable-L Configuration

Dans Debian Systems, la fonction ReadDir est utilisée pour lire le contenu du répertoire, mais l'ordre dans lequel il revient n'est pas prédéfini. Pour trier les fichiers dans un répertoire, vous devez d'abord lire tous les fichiers, puis les trier à l'aide de la fonction QSORT. Le code suivant montre comment trier les fichiers de répertoire à l'aide de ReadDir et QSort dans Debian System: # include # include # include # include # include // Fonction de comparaison personnalisée, utilisée pour qsortintCompare (constvoid * a, constvoid * b) {returnstrcmp (* (

Cet article décrit comment ajuster le niveau de journalisation du serveur Apacheweb dans le système Debian. En modifiant le fichier de configuration, vous pouvez contrôler le niveau verbeux des informations de journal enregistrées par Apache. Méthode 1: Modifiez le fichier de configuration principal pour localiser le fichier de configuration: le fichier de configuration d'Apache2.x est généralement situé dans le répertoire / etc / apache2 /. Le nom de fichier peut être apache2.conf ou httpd.conf, selon votre méthode d'installation. Modifier le fichier de configuration: Ouvrez le fichier de configuration avec les autorisations racine à l'aide d'un éditeur de texte (comme Nano): Sutonano / etc / apache2 / apache2.conf

Dans Debian Systems, OpenSSL est une bibliothèque importante pour le chiffrement, le décryptage et la gestion des certificats. Pour empêcher une attaque d'homme dans le milieu (MITM), les mesures suivantes peuvent être prises: utilisez HTTPS: assurez-vous que toutes les demandes de réseau utilisent le protocole HTTPS au lieu de HTTP. HTTPS utilise TLS (Protocole de sécurité de la couche de transport) pour chiffrer les données de communication pour garantir que les données ne sont pas volées ou falsifiées pendant la transmission. Vérifiez le certificat de serveur: vérifiez manuellement le certificat de serveur sur le client pour vous assurer qu'il est digne de confiance. Le serveur peut être vérifié manuellement via la méthode du délégué d'URLSession

Les étapes pour installer un certificat SSL sur le serveur de messagerie Debian sont les suivantes: 1. Installez d'abord la boîte à outils OpenSSL, assurez-vous que la boîte à outils OpenSSL est déjà installée sur votre système. Si ce n'est pas installé, vous pouvez utiliser la commande suivante pour installer: Sudoapt-getUpDaSuDoapt-getInstallOpenSSL2. Générer la clé privée et la demande de certificat Suivant, utilisez OpenSSL pour générer une clé privée RSA 2048 bits et une demande de certificat (RSE): OpenSS

La fonction ReadDir dans le système Debian est un appel système utilisé pour lire le contenu des répertoires et est souvent utilisé dans la programmation C. Cet article expliquera comment intégrer ReadDir avec d'autres outils pour améliorer sa fonctionnalité. Méthode 1: combinant d'abord le programme de langue C et le pipeline, écrivez un programme C pour appeler la fonction readdir et sortir le résultat: # include # include # include # includeIntmain (intargc, char * argv []) {dir * dir; structDirent * entrée; if (argc! = 2) {

Gérer les journaux Hadoop sur Debian, vous pouvez suivre les étapes et les meilleures pratiques suivantes: l'agrégation de journal Activer l'agrégation de journaux: définir yarn.log-aggregation-inable à true dans le fichier yarn-site.xml pour activer l'agrégation de journaux. Configurer la stratégie de rétention du journal: Définissez Yarn.log-agregation.retain-secondes pour définir le temps de rétention du journal, tel que 172800 secondes (2 jours). Spécifiez le chemin de stockage des journaux: via yarn.n
