ChatGLM-6B résumé pratique de réglage fin du grand modèle

À propos de l'auteur : Zhao Hui, expert en technologie blockchain, maîtrise les principes sous-jacents de diverses chaînes d'alliance et chaînes publiques, et possède une riche expérience dans le développement d'applications blockchain.

Dans l'article précédent, nous avions déjà l'environnement d'exploitation initial de ChatGLM-6B, qui a jeté les bases pour réaliser notre propre modèle ( déploiement rapide du résumé pratique du modèle à grande échelle ChatGLM-6B ), puis nous allons affiner le modèle afin qu'il puisse vraiment devenir un assistant intelligent personnalisé. Dans ce processus, j'utiliserai directement l'outil officiel P-Tuning v2 pour affiner les paramètres du modèle ChatGLM-6B.

installer les dépendances

Entrez dans le répertoire ptuning et installez les dépendances via pip

root@VM-0-17-ubuntu:~# cd ChatGLM-6B/ptuning
root@VM-0-17-ubuntu:ptuning# pip install rouge_chinese nltk jieba datasets

utilisez votre propre jeu de données

Afin d'assurer un succès ponctuel, des exemples de données peuvent être téléchargés à partir du réseau public :

https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1

  1. Décompressez après le téléchargement

root@VM-0-17-ubuntu:ptuning# tar xvf AdvertiseGen.tar.gz
  1. Il y a deux fichiers json dans le répertoire décompressé d'AdvertiseGen, un train.json pour la formation et un dev.json pour le raisonnement. Le contenu des fichiers est le suivant :

be154e45bda9a0a647e9d1c16d202016.png

Comme on peut le voir sur la figure, le fichier de formation est construit à partir de plusieurs lignes de données de chaîne json, comprenant principalement deux champs, un contenu et un résumé. Ce format s'intègre dans un modèle de questions-réponses :

<center>[
{ “content”: “问句1”,  “summary”: "答案1“}  
  { “content”: “问句1”, “summary”: "答案1“}
   {…}]</center>

former

Modifiez train.sh au style suivant

PRE_SEQ_LEN=128
LR=2e-2

CUDA_VISIBLE_DEVICES=0 python3 main.py \
    --do_train \
    --train_file AdvertiseGen/train.json \     # 训练数据
    --validation_file AdvertiseGen/dev.json \  # 推理数据
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path ../THUDM/chatglm-6b \  # 加载模型文件地址
    --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \   # 保存训练模型文件地址
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 3000 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN

PRE_SEQ_LEN et LR dans train.sh sont respectivement la longueur de l'invite logicielle et le taux d'apprentissage de la formation, qui peuvent être ajustés pour obtenir les meilleurs résultats.

La méthode P-Tuning-v2 gèlera tous les paramètres du modèle, et le niveau de quantification du modèle d'origine peut être défini en ajustant quantization_bit. Si cette option n'est pas ajoutée, elle sera chargée avec une précision FP16.

Sous la configuration par défaut de quantization_bit=4, per_device_train_batch_size=1, gradient_accumulation_steps=16, les paramètres du modèle de INT4 sont gelés, et une itération de formation effectuera 16 propagations avant et arrière accumulées avec une taille de lot de 1, ce qui équivaut à un total lot de 16 À l'heure actuelle, la mémoire vidéo minimale n'est que de 6,7 Go. Si vous souhaitez améliorer l'efficacité de la formation sous la même taille de lot, vous pouvez augmenter la valeur de per_device_train_batch_size sans changer le produit des deux, mais cela entraînera également plus de consommation de mémoire, veuillez l'ajuster en fonction de la situation réelle.

formation des cadres

root@VM-0-17-ubuntu:ptuning# bash train.sh

La formation consomme beaucoup de ressources, et le modèle de course et la formation de course ne peuvent pas être démarrés en même temps, sinon les ressources GPU existantes sont insuffisantes, et cette formation de course prend plus de 11 heures. L'effet du démarrage de la formation est comme indiqué dans la figure :

89a6b72bf220cb4b4b54d0d079b0a5a4.png

raisonnement

Modifier évalue.sh au style suivant

PRE_SEQ_LEN=128
CHECKPOINT=adgen-chatglm-6b-pt-128-2e-2
STEP=3000

CUDA_VISIBLE_DEVICES=0 python3 main.py \
    --do_predict \
    --validation_file AdvertiseGen/dev.json \   # 推理文件路径 
    --test_file AdvertiseGen/dev.json \         # 推理文件路径
    --overwrite_cache \
    --prompt_column content \
    --response_column summary \
    --model_name_or_path ../THUDM/chatglm-6b \
    --ptuning_checkpoint ./output/$CHECKPOINT/checkpoint-$STEP \ # 推理输出路径
    --output_dir ./output/$CHECKPOINT \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_eval_batch_size 1 \
    --predict_with_generate \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4

exécuter l'inférence

Remplacez CHECKPOINT dans evaluation.sh par le nom du point de contrôle enregistré pendant la formation, et exécutez les commandes suivantes pour l'inférence et l'évaluation du modèle :

root@VM-0-17-ubuntu:ptuning# bash evaluate.sh

Après l'exécution, cette image apparaît pour indiquer que la formation est réussie, et train_runtime est le temps consommé par la formation du modèle

50739265e604dd240e1025b8bff133bb.png

Effet

Une fois la formation et le raisonnement ci-dessus terminés, vous pouvez exécuter le modèle formé pour voir quel est l'effet de réglage fin réel.

Modifiez ptuning/web_demo.sh comme suit :

PRE_SEQ_LEN=128

CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \
    --model_name_or_path ../THUDM/chatglm-6b \
    --ptuning_checkpoint output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000 \
    --pre_seq_len $PRE_SEQ_LEN

Afin de rendre le réseau externe accessible, modifiez le fichier web_demo.py et trouvez la ligne demo.queue().launch et remplacez-la par :

demo.queue().launch(share=False, inbrowser=True, server_name='0.0.0.0', server_port=27777)

Exécutez bash web_demo.sh, et obtenez les résultats suivants : bdbc9a358fc866b73b44581f57a97611.pngOuvrez le navigateur, vous pouvez voir les effets suivants :

2434e8681a2609df5bc2a3d6119f5052.png

Commencer une conversation:

Entrée Selon l'entrée pour générer un paragraphe de mots publicitaires, l'entrée est : type#matière supérieure # couleur denim # style blanc#motif simple # style de vêtement brodé # style de pardessus#trou

Le résultat est comme indiqué sur la figure :

d5d06f0b4de90873ed76896fbfe567ff.png

À en juger par les résultats, l'effet n'est pas très bon, mais au moins le contenu a été formé, et le reste est le problème de l'enrichissement du contenu des données. Avec un ensemble de données complet et à grande échelle, le modèle affiné est plus significatif, sinon ce n'est qu'un jouet avec une valeur commerciale extrêmement faible.

Résumer

Grâce à l'affinement du modèle et à l'expérience pratique du raisonnement, certains problèmes et pistes d'amélioration ont été découverts. Bien qu'il y ait encore une certaine distance par rapport à la gouvernante intelligente Jarvis d'Iron Man, cette exploration nous a permis d'approfondir comprendre les mystères de l'intelligence artificielle et accumuler une expérience précieuse pour de futures études et explorations.

En pratique, nous avons utilisé le modèle ChatGLM-6B et suivi le processus de formation et d'inférence du modèle. La formation du modèle prend un temps considérable, mais elle nous permet également d'apprécier la complexité et les défis de la formation du modèle. Bien qu'au stade de l'inférence, le modèle a généré du contenu, mais l'effet d'expérience n'est pas parfait, et d'autres améliorations et optimisations sont encore nécessaires.

Ce processus nous a donné une meilleure compréhension du développement et de l'application de l'intelligence artificielle, et une compréhension plus claire de l'affinement et du développement des modèles. Bien que les résultats ne soient pas satisfaisants, cela nous ouvre la voie pour explorer l'intelligence artificielle et développer des assistants personnalisés. à l'avenir Sur la route, je crois qu'à l'avenir, nous nous rapprocherons de plus en plus de la réalisation de la vision d'un assistant intelligent de type Jarvis.


L'écriture est difficile ? / Manque d'inspiration pour la production de cours ? / Le texte marketing n'est pas attractif ? / La production de PPT prend-elle du temps et est-elle laborieuse ? / Le court script vidéo n'est pas créatif ?

Sur la base des problèmes courants d'écriture ci-dessus, j'ai écrit un manuel "Getting Started with AI Writing in 30 Seconds" pour expliquer systématiquement l'autonomisation que l'IA peut vous apporter par écrit, que vous soyez enraciné dans Xiaohongshu, Douyin, Kuaishou, compte vidéo , compte public, ou Zhihu, Weibo, Bilibili, ou blog auto-construit, plateforme auto-gérée, vous pouvez trouver les compétences de création d'IA qui vous conviennent dans le contenu de la colonne, et améliorer rapidement votre productivité. , qui a dit qu'une personne ne pouvait pas vivre en équipe ?

b55e2519dd3a25a8bfc58aa9e7a97bc3.pngLe prix d'origine est de 299 ¥ et le prix actuel est de 49 ¥ pour une durée limitée. À mesure que le nombre d'abonnements augmente, le prix d'origine sera rétabli à l'avenir. 2fa0ee2f25d88e8f33e546105893b443.png[Appuyez longuement sur le code QR pour identifier]


Le compte officiel répond « Claude combat réel », « ChatGPT combat réel », « WPSAI combat réel », et obtient les e-books correspondants.

—Lecture étendue—

L'application de grand modèle d'IA qui se produit ou se produira bientôt, comme en témoigne la publication

ChatGPT, Claude et Bard, la confrontation tripartite est devenue

Résumé du combat WPS Office AI, l'ère du bureau intelligent est arrivée

Pour toutes vos questions sur ChatGPT, il vous suffit de lire cet article

Je suppose que tu aimes

Origine blog.csdn.net/hero272285642/article/details/132074112
conseillé
Classement