Blogue | Codes | Démo
WangChanGLM est un Facebook XGLM-7.5B multilingue et affiné avec des instructions utilisant des ensembles de données open source et commercialement autorisés (LAION OIG chip2 et infill_dbpedia, DataBricks Dolly v2, OpenAI TL; DR et Hello-SimpleAI HC3 ; environ 400 000 exemples), publié sous CC-BY SA 4.0. Les modèles sont formés pour effectuer un sous-ensemble de tâches de suivi d'instructions que nous avons trouvées les plus pertinentes, à savoir : la compréhension écrite, le brainstorming et l'écriture créative. Nous fournissons les pondérations pour un modèle affiné sur un ensemble de données uniquement en anglais (wangchanglm-7.5B-sft-en) et un autre point de contrôle affiné sur un ensemble de données thaïlandais traduit par Google (wangchanglm-7.5B-sft-enth). Nous effectuons une évaluation de style Vicuna en utilisant à la fois des humains et ChatGPT (dans notre cas, gpt-3.5-turbo
puisque nous sommes toujours sur la liste d'attente pour gpt-4
) et observons quelques écarts entre les deux types d'annoateurs. Tous les codes de formation et d'évaluation sont partagés sous la licence Apache-2.0 dans notre Github, ainsi que les ensembles de données et les poids de modèle sur HuggingFace. De la même manière que Dolly v2, nous utilisons uniquement des modèles et des ensembles de données pré-entraînés open source et commercialement permissifs, nos modèles ne sont ni limités par une clause non commerciale comme les modèles qui utilisent LLaMA comme base, ni par une clause de non-concurrence comme les modèles qui utilisent self -instruire les ensembles de données de ChatGPT. Voir notre démo en direct ici.
Nous proposons différentes versions de nos modèles comme suit :
Versions fragmentées utilisées dans la démo :
Nous proposons nos ensembles de formation comme suit :
Nous avons affiné XGLM-7.5B sur 4 GPU V100 (VARM de 32 Go) avec les hyperparamètres décrits dans script/train_sft_peft_multi_world.py
.
python -m torch.distributed.launch --nproc_per_node=4 train_sft_peft_multi_world.py
--per_device_train_batch_size 1 --gradient_accumulation_steps 32 #effective batch size = 128 (4 GPUs * 1 batch size * 32 gradient accumulation)
--wandb_project your_project_name
--model_name facebook/xglm-7.5B
--dataset_name pythainlp/final_training_set_v1
--adapter_name save_adapter_to
L'adaptateur est fusionné avec les poids principaux avec le script de lvwerra/trl.
Il est possible d'affiner XGLM-7.5B sur un seul GPU de 32 Go de VRAM ou plusieurs GPU avec une VRAM plus petite avec les hyperparamètres décrits dans script/train_sft_peft_single_world.py
.
python train_sft_peft_single_world.py
--per_device_train_batch_size 2 --gradient_accumulation_steps 64 #effective batch size = 128 (1 GPU * 2 batch size * 64 gradient accumulation)
--wandb_project your_project_name
--model_name facebook/xglm-7.5B
--dataset_name pythainlp/final_training_set_v1
--adapter_name save_adapter_to
Nous fournissons également un script pour un réglage complet que nous avons expérimenté avec un modèle plus petit sur un ensemble différent de données d'entraînement.
python -m torch.distributed.launch --nproc_per_node=8 train_sft.py
--per_device_train_batch_size=8 --per_device_eval_batch_size=8 --gradient_accumulation_steps=16
--model_name=facebook/xglm-1.7B --bf16 --deepspeed=../config/sft_deepspeed_config.json
Nous avons effectué une inférence sur les invites OpenAssistant à l'aide des hyperparamètres décrits dans script/generate_huggingface_answer.py
.
python generate_huggingface_answer.py --input_fname ../data/oasst1_gpt35turbo_answer.csv
--model_name pythainlp/wangchanglm-7.5B-sft-en
--tokenizer_name pythainlp/wangchanglm-7.5B-sft-en
--output_fname ../data/oasst1_wangchang_sft_en_only_answer_answer.csv
Nous avons évalué n'importe quelle paire de réponses modèles à l'aide de gpt-3.5-turbo
comme décrit dans script/eval_vicuna_style.py
. L'intégralité de l'inférence et de l'évaluation est stockée dans script/infer_and_eval.sh
. Les questionnaires humains sont stockés dans data/human_questionnaire
.
Les expérimentations ont été menées en utilisant une infrastructure privée, qui présente une efficacité carbone de 0,432 kgCO2eq/kWh. Un cumul de 500 heures de calcul a été réalisé sur du matériel de type Tesla V100-SXM2-32GB (TDP de 300W). Les émissions totales sont estimées à 64,8 équivalent CO2, dont 0 % ont été directement compensés. Les estimations ont été réalisées à l'aide du calculateur MachineLearning Impact présenté dans lacoste2019quantifying.
@software{charin_polpanumas_2023_7878101,
author = {Charin Polpanumas and
Wannaphong Phatthiyaphaibun and
Patomporn Payoungkhamdee and
Peerat Limkonchotiwat and
Lalita Lowphansirikul and
Can Udomcharoenchaikit and
Titipat Achakulwisut and
Ekapol Chuangsuwanich and
Sarana Nutanong},
title = {{WangChanGLM? — The Multilingual Instruction-
Following Model}},
month = apr,
year = 2023,
publisher = {Zenodo},
version = {v0.1},
doi = {10.5281/zenodo.7878101},
url = {https://doi.org/10.5281/zenodo.7878101}
}
Nous tenons à remercier Huggingface pour l'infrastructure et l'écosystème open source qu'ils ont construits, en particulier lvwerra du référentiel trl. Nous remercions les pionniers du réglage fin open source qui nous ont précédés, notamment, mais sans s'y limiter, Alpaca, Alpaca-LoRA, GPT4All, OpenAssistant, Koala, Vicuna et Dolly.
Le code source est sous licence Apache-2.0. Les poids des modèles sont sous licence CC-BY-SA 4.0. Les ensembles de données de réglage fin proviennent de LAION OIG chip2 et infill_dbpedia (Apache-2.0), DataBricks Dolly v2 (Apache-2.0), OpenAI TL;DR (MIT) et Hello-SimpleAI HC3 (CC-BY SA).