Maison > Article > Périphériques technologiques > Entraîner une version chinoise de ChatGPT n'est pas si difficile : vous pouvez le faire avec l'open source Alpaca-LoRA+RTX 4090 sans A100
En 2023, il semble ne rester que deux camps dans le domaine des chatbots : « OpenAI's ChatGPT » et « Others ».
ChatGPT est puissant, mais il est presque impossible pour OpenAI de le rendre open source. L'« autre » camp a obtenu de mauvais résultats, mais de nombreuses personnes travaillent sur l'open source, comme LLaMA, qui a été open source par Meta il y a quelque temps.
LLaMA est le nom général d'une série de modèles, avec des quantités de paramètres allant de 7 milliards à 65 milliards. Parmi eux, le modèle LLaMA à 13 milliards de paramètres peut surpasser GPT-3 avec 175 milliards de paramètres "sur la plupart des benchmarks". Cependant, le modèle n'a pas subi de réglage des instructions (réglage des instructions), donc l'effet de génération est médiocre.
Afin d'améliorer les performances du modèle, des chercheurs de Stanford l'ont aidé à terminer le travail de mise au point des instructions et ont formé un nouveau modèle de 7 milliards de paramètres appelé Alpaca (basé sur LLaMA 7B). Plus précisément, ils ont demandé au modèle text-davinci-003 d'OpenAI de générer 52 000 échantillons suivant les instructions de manière auto-instructive en tant que données d'entraînement pour Alpaca. Les résultats expérimentaux montrent que de nombreux comportements de l'Alpaga sont similaires à ceux de text-davinci-003. En d’autres termes, les performances du modèle léger Alpaca avec seulement 7 paramètres B sont comparables à celles des modèles de langage à très grande échelle tels que GPT-3.5.
Pour les chercheurs ordinaires, il s'agit d'un moyen réalisable et peu coûteux d'affiner, mais cela nécessite tout de même une grande quantité de calculs (l'auteur a déclaré qu'ils ont affiné pendant 3 heures sur huit A100 de 80 Go). De plus, les tâches de départ d'Alpaca sont toutes en anglais et les données collectées sont également en anglais, le modèle formé n'est donc pas optimisé pour le chinois.
Afin de réduire davantage le coût de mise au point, un autre chercheur de Stanford, Eric J. Wang, a utilisé la technologie LoRA (adaptation de bas rang) pour reproduire les résultats d'Alpaga. Plus précisément, Eric J. Wang a utilisé une carte graphique RTX 4090 pour entraîner un modèle équivalent à Alpaca en seulement 5 heures, réduisant ainsi les besoins en puissance de calcul de ces modèles au niveau du consommateur. De plus, le modèle peut fonctionner sur un Raspberry Pi (pour la recherche).
Principes techniques de LoRA. L'idée de LoRA est d'ajouter un contournement à côté du PLM d'origine et d'effectuer une réduction de dimensionnalité puis une opération de dimensionnalité pour simuler le rang dit intrinsèque. Pendant l'entraînement, les paramètres du PLM sont fixes, et seules la matrice de réduction de dimensionnalité A et la matrice d'amélioration de dimensionnalité B sont entraînées. Les dimensions d'entrée et de sortie du modèle restent inchangées et les paramètres de BA et PLM se superposent lors de la sortie. Initialisez A avec une distribution gaussienne aléatoire et initialisez B avec une matrice 0 pour vous assurer que la matrice de contournement est toujours une matrice 0 au début de la formation (cité de : https://finisky.github.io/lora/). Le plus grand avantage de LoRA est qu’il est plus rapide et utilise moins de mémoire, ce qui lui permet de fonctionner sur du matériel grand public.
Projet Alpaca-LoRA publié par Eric J. Wang.
Adresse du projet : https://github.com/tloen/alpaca-lora
Pour ceux qui souhaitent former leur propre modèle de type ChatGPT (y compris la version chinoise de ChatGPT-like) mais ne le font pas disposer de ressources informatiques de haut niveau, c'est sans doute une grande surprise pour les chercheurs. Ainsi, après l’avènement du projet Alpaca-LoRA, des tutoriels et des résultats de formation autour du projet ont continué à émerger, et cet article en présentera plusieurs.
Dans le projet Alpaca-LoRA, les auteurs ont mentionné que afin d'effectuer un réglage fin à moindre coût et efficacement, ils ont utilisé le PEFT de Hugging Face. PEFT est une bibliothèque (LoRA est l'une de ses technologies prises en charge) qui vous permet de prendre divers modèles de langage basés sur Transformer et de les affiner à l'aide de LoRA. L'avantage est qu'il vous permet d'affiner votre modèle à moindre coût et efficacement sur un matériel modeste, avec des sorties plus petites (peut-être composables).
Dans un blog récent, plusieurs chercheurs ont présenté comment utiliser Alpaca-LoRA pour affiner LLaMA.
Avant d'utiliser Alpaca-LoRA, vous devez avoir quelques prérequis. Le premier est le choix du GPU. Grâce à LoRA, vous pouvez désormais effectuer des réglages précis sur des GPU de faible spécification comme les GPU grand public NVIDIA T4 ou 4090. De plus, vous devez également demander des pondérations LLaMA car leurs pondérations ne sont pas publiques.
Maintenant que les prérequis sont remplis, la prochaine étape consiste à savoir comment utiliser Alpaca-LoRA. Vous devez d'abord cloner le référentiel Alpaca-LoRA, le code est le suivant :
git clone https://github.com/daanelson/alpaca-lora cd alpaca-lora
Deuxièmement, récupérez les poids LLaMA. Stockez les valeurs de poids téléchargées dans un dossier nommé poids non convertis. La hiérarchie des dossiers est la suivante :
unconverted-weights ├── 7B │ ├── checklist.chk │ ├── consolidated.00.pth │ └── params.json ├── tokenizer.model └── tokenizer_checklist.chk
Une fois les poids stockés, utilisez la commande suivante pour convertir les poids du point de contrôle PyTorch en formats compatibles avec les transformateurs. :
cog run python -m transformers.models.llama.convert_llama_weights_to_hf --input_dir unconverted-weights --model_size 7B --output_dir weights
La structure finale du répertoire devrait être comme ceci :
weights ├── llama-7b └── tokenizermdki
Après avoir traité les deux étapes ci-dessus, passez à la troisième étape et installez Cog :
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)" sudo chmod +x /usr/local/bin/cog
La quatrième étape consiste à affiner le modèle, par défaut, le GPU configuré sur le script finetune est moins puissant, mais si vous disposez d'un GPU plus puissant, vous pouvez augmenter MICRO_BATCH_SIZE dans finetune.py à 32 ou 64. De plus, si vous disposez de directives pour régler un ensemble de données, vous pouvez modifier le DATA_PATH dans finetune.py pour pointer vers votre propre ensemble de données. Il convient de noter que cette opération doit garantir que le format des données est le même que celui de alpaca_data_cleaned.json. Exécutez ensuite le script de réglage fin :
cog run python finetune.py
Le processus de réglage fin a pris 3,5 heures sur un GPU A100 de 40 Go, et plus de temps sur des GPU moins puissants.
La dernière étape consiste à exécuter le modèle avec Cog :
$ cog predict -i prompt="Tell me something about alpacas." Alpacas are domesticated animals from South America. They are closely related to llamas and guanacos and have a long, dense, woolly fleece that is used to make textiles. They are herd animals and live in small groups in the Andes mountains. They have a wide variety of sounds, including whistles, snorts, and barks. They are intelligent and social animals and can be trained to perform certain tasks.
L'auteur du didacticiel a déclaré qu'après avoir terminé les étapes ci-dessus, vous pouvez continuer à essayer divers gameplays, y compris, mais sans s'y limiter :
Bien que les performances d'Alpaca soient comparables à celles de GPT 3.5, ses tâches de départ sont toutes en anglais et les données collectées sont également en anglais, de sorte que le modèle formé n'est pas convivial pour le chinois. Afin d’améliorer l’efficacité du modèle de dialogue en chinois, examinons quelques meilleurs projets.
Le premier est le modèle open source de langue chinoise Luotuo (Luotuo) par trois développeurs individuels de l'Université normale de Chine centrale et d'autres institutions. Ce projet est basé sur LLaMA, Stanford Alpaca, Alpaca LoRA, Japanese-Alpaca-LoRA, etc. ., avec une seule carte. Capable de terminer le déploiement de la formation. Fait intéressant, ils ont nommé le chameau modèle parce que LLaMA (llama) et alpaga (alpaga) appartiennent à l'ordre des Artiodactyla - famille des Camelidae. De ce point de vue, ce nom est également attendu.
Ce modèle est basé sur le open source LLaMA de Meta, en référence aux deux projets Alpaca et Alpaca-LoRA, et a été formé en chinois.
Adresse du projet : https://github.com/LC1332/Chinese-alpaca-lora
Actuellement, le projet a publié deux modèles : luotuo-lora-7b-0.1 et luotuo-lora- 7b -0.3, il y a un autre modèle dans le plan :
Ce qui suit est l'affichage de l'effet :
Mais luotuo-lora-7b-0.1 (0.1), luotuo- lora-7b -0,3 (0,3) Il y a encore un écart. Lorsque l'utilisateur a demandé l'adresse de l'Université normale de Chine centrale, 0,1 a répondu de manière incorrecte :
.En plus des conversations simples, il y a aussi des personnes qui ont réalisé l'optimisation de modèles dans des domaines liés à l'assurance. Selon cet utilisateur de Twitter, avec l'aide du projet Alpaca-LoRA, il a saisi des données de questions et réponses sur l'assurance chinoise, et les résultats finaux ont été bons.
Plus précisément, l'auteur a utilisé plus de 3 000 corpus chinois de questions et réponses d'assurance pour former la version chinoise d'Alpaca LoRa. Le processus de mise en œuvre a utilisé la méthode LoRa et a affiné le modèle Alpaca 7B, ce qui a pris 240 minutes et a abouti à. une perte finale de 0,87.
Source de l'image : https://twitter.com/nash_su/status/1639273900222586882
Voici le processus et les résultats de la formation :
Test Les résultats montrent que : 1. Les contenus liés au corpus de formation peuvent recevoir une réponse grossière et raisonnable, mais seulement s'ils ne sont pas absurdes. 2. Les contenus non liés au corpus répondront avec force aux données d'un certain corpus. Le raisonnement logique et les calculs mathématiques n'ont pas cette capacité.
Après avoir vu ce résultat, les internautes ont crié qu'ils allaient perdre leur emploi :
Enfin, j'attends avec impatience que davantage de modèles de conversation chinois soient ajoutés.
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!