Blog | Códigos | Manifestación
WangChanGLM es un Facebook XGLM-7.5B multilingüe y con instrucciones ajustadas que utiliza conjuntos de datos de código abierto y comercialmente permitidos (LAION OIG chip2 e infill_dbpedia, DataBricks Dolly v2, OpenAI TL;DR y Hello-SimpleAI HC3; alrededor de 400.000 ejemplos), lanzado bajo CC-BY SA 4.0. Los modelos están entrenados para realizar un subconjunto de tareas de seguimiento de instrucciones que consideramos más relevantes, a saber: comprensión lectora, lluvia de ideas y escritura creativa. Proporcionamos las ponderaciones de un modelo ajustado en un conjunto de datos solo en inglés (wangchanglm-7.5B-sft-en) y otro punto de control ajustado aún más en un conjunto de datos tailandés traducido por Google (wangchanglm-7.5B-sft-enth). Realizamos una evaluación estilo Vicuña utilizando humanos y ChatGPT (en nuestro caso, gpt-3.5-turbo
ya que todavía estamos en la lista de espera para gpt-4
) y observamos algunas discrepancias entre los dos tipos de anotadores. Todos los códigos de capacitación y evaluación se comparten bajo la licencia Apache-2.0 en nuestro Github, así como conjuntos de datos y pesos de modelos en HuggingFace. De manera similar a Dolly v2, solo utilizamos modelos y conjuntos de datos preentrenados comercialmente permisivos y de código abierto, nuestros modelos no están restringidos por cláusulas no comerciales como los modelos que usan LLaMA como base ni por cláusulas de no competencia como los modelos que usan self. -instruir conjuntos de datos desde ChatGPT. Vea nuestra demostración en vivo aquí.
Ofrecemos varias versiones de nuestros modelos de la siguiente manera:
Versiones fragmentadas utilizadas en la demostración:
Proporcionamos nuestros conjuntos de entrenamiento de la siguiente manera:
Ajustamos XGLM-7.5B en 4 GPU V100 (VARM de 32 GB) con los hiperparámetros descritos en 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
El adaptador se fusiona con los pesos principales con el script de lvwerra/trl.
Es posible ajustar XGLM-7.5B en una sola GPU de 32 GB de VRAM o en varias GPU con una VRAM más pequeña con los hiperparámetros descritos en 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
También proporcionamos un script para un ajuste completo que experimentamos con un modelo más pequeño en un conjunto diferente de datos de entrenamiento.
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 inferencias en las indicaciones de OpenAssistant utilizando hiperparámetros descritos en 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
Evaluamos cualquier par de respuestas del modelo usando gpt-3.5-turbo
como se describe en script/eval_vicuna_style.py
. Toda la inferencia y evaluación se almacena en script/infer_and_eval.sh
. Los cuestionarios humanos se almacenan en data/human_questionnaire
.
Los experimentos se realizaron utilizando una infraestructura privada, que tiene una eficiencia de carbono de 0,432 kgCO2eq/kWh. Se realizó un acumulado de 500 horas de cómputo en hardware del tipo Tesla V100-SXM2-32GB (TDP de 300W). Se estima que las emisiones totales ascienden a 64,8 CO2eq, de las cuales el 0 por ciento se compensó directamente. Las estimaciones se realizaron utilizando la calculadora MachineLearning Impact presentada en 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}
}
Nos gustaría agradecer a Huggingface por la infraestructura y el ecosistema de código abierto que han construido, especialmente a lvwerra del repositorio trl. Agradecemos a los pioneros del ajuste de código abierto que nos precedieron, incluidos, entre otros, Alpaca, Alpaca-LoRA, GPT4All, OpenAssistant, Koala, Vicuna y Dolly.
El código fuente tiene la licencia Apache-2.0. Los pesos del modelo tienen licencia CC-BY-SA 4.0. Los conjuntos de datos de ajuste provienen de LAION OIG chip2 e infill_dbpedia (Apache-2.0), DataBricks Dolly v2 (Apache-2.0), OpenAI TL;DR (MIT) y Hello-SimpleAI HC3 (CC-BY SA).