Blogue | Códigos | Demonstração
WangChanGLM é um Facebook XGLM-7.5B multilíngue e com instruções ajustadas que usa conjuntos de dados comercialmente permitidos de código aberto (LAION OIG chip2 e infill_dbpedia, DataBricks Dolly v2, OpenAI TL;DR e Hello-SimpleAI HC3; cerca de 400 mil exemplos), lançado sob CC-BY SA 4.0. Os modelos são treinados para realizar um subconjunto de tarefas de acompanhamento de instruções que consideramos mais relevantes, a saber: compreensão de leitura, brainstorming e escrita criativa. Fornecemos os pesos para um modelo ajustado em um conjunto de dados somente em inglês (wangchanglm-7.5B-sft-en) e outro ponto de verificação ainda mais ajustado no conjunto de dados tailandês traduzido pelo Google (wangchanglm-7.5B-sft-enth). Realizamos avaliação no estilo Vicuna usando humanos e ChatGPT (no nosso caso, gpt-3.5-turbo
já que ainda estamos na lista de espera para gpt-4
) e observamos algumas discrepâncias entre os dois tipos de anotadores. Todos os códigos de treinamento e avaliação são compartilhados sob a licença Apache-2.0 em nosso Github, bem como conjuntos de dados e pesos de modelo no HuggingFace. De maneira semelhante ao Dolly v2, usamos apenas modelos e conjuntos de dados pré-treinados de código aberto e comercialmente permissivos, nossos modelos não são restritos por cláusulas não comerciais, como modelos que usam LLaMA como base, nem cláusulas de não concorrência, como modelos que usam self -instruir conjuntos de dados do ChatGPT. Veja nossa demonstração ao vivo aqui.
Fornecemos várias versões de nossos modelos da seguinte forma:
Versões fragmentadas usadas na demonstração:
Fornecemos nossos conjuntos de treinamento da seguinte forma:
Ajustamos o XGLM-7.5B em 4 GPU V100 (32GB VARM) com os hiperparâmetros descritos em 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
O adaptador é mesclado aos pesos principais com o script de lvwerra/trl.
É possível ajustar o XGLM-7.5B em uma única GPU VRAM de 32 GB ou em várias GPUs com uma VRAM menor com os hiperparâmetros descritos em 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
Também fornecemos um script para ajuste completo que experimentamos com um modelo menor em um conjunto diferente de dados de treinamento.
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
Realizamos inferência nos prompts do OpenAssistant usando hiperparâmetros descritos em 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
Avaliamos qualquer par de respostas do modelo usando gpt-3.5-turbo
conforme descrito em script/eval_vicuna_style.py
. Toda a inferência e avaliação são armazenadas em script/infer_and_eval.sh
. Os questionários humanos são armazenados em data/human_questionnaire
.
Os experimentos foram realizados utilizando uma infraestrutura privada, que tem uma eficiência de carbono de 0,432 kgCO2eq/kWh. Um cumulativo de 500 horas de computação foi realizado em hardware do tipo Tesla V100-SXM2-32GB (TDP de 300W). As emissões totais são estimadas em 64,8 CO2eq, das quais 0 por cento foram compensadas diretamente. As estimativas foram realizadas usando a calculadora de impacto do MachineLearning apresentada na quantificação lacoste2019.
@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}
}
Gostaríamos de agradecer ao Huggingface pela infraestrutura e ecossistema de código aberto que eles construíram, especialmente lvwerra do repositório trl. Agradecemos aos pioneiros do ajuste fino de código aberto que vieram antes de nós, incluindo, entre outros, Alpaca, Alpaca-LoRA, GPT4All, OpenAssistant, Koala, Vicuna e Dolly.
O código-fonte está licenciado sob a licença Apache-2.0. Os pesos do modelo são licenciados sob CC-BY-SA 4.0. Os conjuntos de dados de ajuste fino são provenientes de LAION OIG chip2 e infill_dbpedia (Apache-2.0), DataBricks Dolly v2 (Apache-2.0), OpenAI TL;DR (MIT) e Hello-SimpleAI HC3 (CC-BY SA).