[LISEZMOI] [?HF Repo] [?Version Web]
Chinois | Anglais
Le grand modèle Yayi est obtenu en affinant les instructions sur des millions de données de domaine de haute qualité construites manuellement. Les données de formation couvrent cinq domaines principaux tels que la publicité médiatique, l'analyse de l'opinion publique, la sécurité publique, le contrôle des risques financiers et la gouvernance urbaine. des centaines de tâches d'enseignement du langage naturel. Au cours du processus itératif du grand modèle Yayi, depuis les poids d'initialisation de pré-formation jusqu'aux modèles de domaine, nous avons progressivement amélioré ses capacités chinoises de base et ses capacités d'analyse de domaine, et ajouté plusieurs cycles de dialogue et certaines capacités de plug-in. Dans le même temps, grâce à l'optimisation continue des commentaires manuels au cours du processus de test interne de centaines d'utilisateurs, nous avons encore amélioré les performances et la sécurité du modèle.
Grâce à l'open source du grand modèle Yayi, nous contribuerons par nos propres efforts à promouvoir le développement de la communauté open source chinoise pré-formée des grands modèles. Grâce à l'open source, nous construirons l'écosystème du grand modèle Yayi avec chaque partenaire.
Actualités : Yayi Large Model a open source la version du modèle d'optimisation chinois basée sur LLaMA 2 pour explorer les dernières pratiques adaptées aux tâches multi-domaines chinoises.
Nom du modèle | ?Identification du modèle HF | Adresse de téléchargement |
---|---|---|
YAYI -7B | wengé-recherche/ YAYI -7b | Téléchargement du modèle |
YAYI -7B-Llama2 | wenge-research/ YAYI -7b-llama2 | Téléchargement du modèle |
YAYI -13B-Lama2 | wenge-research/ YAYI -13b-llama2 | Téléchargement du modèle |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
Il n'est pas recommandé que les versions torch
et transformers
soient inférieures aux versions recommandées.
Les poids des modèles (version 7b) sont disponibles en open source dans notre entrepôt de modèles Huggingface, et vous pouvez les télécharger et les utiliser. Ce qui suit est un exemple de code qui appelle simplement YAYI -7b
pour l'inférence de tâches en aval. Il peut être exécuté sur un seul GPU tel que A100/A800/3090. Il occupe environ 20 Go de mémoire vidéo lors de l'utilisation de l'inférence de précision FP16 :
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
Notez que le jeton spécial <|End|>
est ajouté comme caractère de fin lors de la formation du modèle, donc eos_token_id
est défini sur l'identifiant du jeton correspondant au caractère de fin dans GenerationConfig
du code ci-dessus. Le code d'inférence basé sur le modèle de réglage fin des instructions LlaMA2 est légèrement différent. Pour plus de détails, veuillez vous référer à la version correspondante dans notre entrepôt de modèles Huggingface.
Ce projet est basé sur le framework deepspeed
pour la formation de modèles. Après avoir configuré l'environnement, exécutez le script correspondant pour démarrer la formation. Prend en charge le réglage fin des paramètres complets des données de commande, le réglage fin LoRA des données de commande, le réglage fin des paramètres complets des données de dialogue multi-tours et le réglage fin LoRA des données de dialogue multi-tours.
Format des données : reportez-vous à data/ YAYI _train_example.json
, qui adopte le format de données jsonline du projet Alpaca. Chaque ligne contient une donnée json, composée de trois champs "instruction"
, "input"
et "output"
. Parmi eux, "instruction"
et "input"
sont l'entrée de l'instruction, et "output"
est la réponse de sortie.
Instructions d'utilisation : Exécutez la commande suivante pour démarrer le réglage fin des paramètres complets du grand modèle Yayi. Cette commande prend en charge la formation multi-cartes sur une seule machine. Si vous devez configurer une formation multi-machines et multi-cartes, veuillez vous référer à la documentation officielle de deepspeed. Il est recommandé d'utiliser une configuration matérielle 4*A100(80G) ou supérieure.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
Format des données : identique à ci-dessus, reportez-vous à data/ YAYI _train_example.json
.
Instructions d'utilisation : LoRA est une méthode de réglage fin efficace et à faibles ressources, et une seule carte peut entraîner des dizaines de milliards de modèles de paramètres. Ce projet implémente principalement le réglage fin de LoRA basé sur peft
. Exécutez la commande suivante pour démarrer le réglage fin de LoRA du grand modèle Yayi. Le réglage fin peut être effectué à l'aide d'une seule carte A100 (80G), et le taux d'apprentissage peut être ajusté à une valeur plus grande. Parmi eux, --lora-dim
définit le rang de la matrice de mise à jour. Plus la valeur est grande, plus le nombre de paramètres pour la formation est grand ; --lora-module-name
définit le module de la matrice de mise à jour LoRA, qui peut être modifié ; selon le type de modèle.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
Format des données : reportez-vous à data/ YAYI _train_example_multi_rounds.json
, qui est un fichier JSON standard. Chaque élément de données se compose de "system"
et "conversations"
, où "system"
est les informations de définition de rôle globales et peut être une chaîne vide. "conversations"
Il s'agit d'un dialogue à plusieurs tours entre deux personnages, l'humain et YAYI .
Instructions d'utilisation : Exécutez la commande suivante pour démarrer le réglage fin des paramètres complets du grand modèle Yayi Pour les données de dialogue à plusieurs tours, seule la perte de la réponse générée par le modèle est calculée. Cette commande prend en charge la formation multi-cartes sur une seule machine. Si vous devez configurer une formation multi-machines et multi-cartes, veuillez vous référer à la documentation officielle de deepspeed. Il est recommandé d'utiliser une configuration matérielle 4*A100(80G) ou supérieure.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
.Le grand modèle Yayi est formé sur la base de l'ensemble de données de réglage fin des instructions de domaine de haute qualité de niveau million de Zhongke Wenge. Cette fois, nous ouvrons 50 000 ensembles de données de formation, qui peuvent être téléchargés à partir de notre entrepôt de données Huggingface. L'ensemble de données couvre principalement plusieurs domaines majeurs tels que la finance, la sécurité, l'opinion publique et les médias. Nous avons ajouté des préfixes d'invite discrets à la plupart des données de commande des tâches dans chaque domaine afin de distinguer les données de chaque domaine. En outre, les données de formation comprennent également certaines données d'amélioration de la sécurité, des données sur les capacités du plug-in, des données de dialogue à plusieurs tours, etc.
Le modèle SFT formé sur la base des données actuelles et des modèles de base présente toujours les problèmes suivants en termes d'efficacité :
Sur la base des limitations du modèle ci-dessus, nous demandons aux développeurs d'utiliser uniquement notre code open source, nos données, nos modèles et les dérivés ultérieurs générés par ce projet à des fins de recherche et non à des fins commerciales ou à d'autres utilisations susceptibles de nuire à la société. Veuillez faire attention à identifier et à utiliser le contenu généré par Yayi Big Model, et à ne pas diffuser le contenu nuisible généré sur Internet. Si des conséquences néfastes surviennent, le communicateur en sera responsable.
Ce projet ne peut être utilisé qu'à des fins de recherche, et le développeur du projet n'est pas responsable de tout dommage ou perte causé par l'utilisation de ce projet (y compris, mais sans s'y limiter, les données, modèles, codes, etc.). Veuillez vous référer à la clause de non-responsabilité pour plus de détails.
Le code de ce projet est open source selon le protocole Apache-2.0, les données adoptent le protocole CC BY-NC 4.0 et l'utilisation des poids de modèle de la série YAYI doit suivre la licence de modèle.