博客 |代码 |演示
WangChanGLM 是一个多语言、指令微调的 Facebook XGLM-7.5B,使用开源、商业允许的数据集(LAION OIG Chip2 和 infill_dbpedia、DataBricks Dolly v2、OpenAI TL;DR 和 Hello-SimpleAI HC3;大约 40 万个示例),发布于CC-BY SA 4.0。这些模型经过训练,可以执行我们发现最相关的部分指令任务,即:阅读理解、头脑风暴和创意写作。我们提供了在纯英语数据集 (wangchanglm-7.5B-sft-en) 上微调的模型的权重,以及在 Google 翻译的泰语数据集 (wangchanglm-7.5B-sft-enth) 上进一步微调的另一个检查点。我们使用人类和 ChatGPT(在我们的例子中, gpt-3.5-turbo
,因为我们仍在gpt-4
的候补名单上)执行 Vicuna 式评估,并观察两种类型的注释器之间的一些差异。所有训练和评估代码均在我们的 Github 上的 Apache-2.0 许可下共享,数据集和模型权重也在 HuggingFace 上共享。与 Dolly v2 类似,我们只使用开源的、商业允许的预训练模型和数据集,我们的模型既不受非商业条款(如使用 LLaMA 作为基础的模型)的限制,也不受非竞争条款(如使用 self 的模型)的限制。 -来自 ChatGPT 的指令数据集。请在此处查看我们的现场演示。
我们提供各种型号的版本如下:
演示中使用的分片版本:
我们提供的训练集如下:
我们使用script/train_sft_peft_multi_world.py
中描述的超参数在 4 V100 GPU (32GB VARM) 上对 XGLM-7.5B 进行了微调。
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
使用 lvwerra/trl 中的脚本将适配器合并到主要权重。
可以使用script/train_sft_peft_single_world.py
中描述的超参数在单个 32GB-VRAM GPU 或具有较小 VRAM 的多个 GPU 上微调 XGLM-7.5B。
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
我们还提供了一个用于完全微调的脚本,我们在不同的训练数据集上尝试了较小的模型。
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
我们使用script/generate_huggingface_answer.py
中描述的超参数对 OpenAssistant 提示进行推理。
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
我们使用gpt-3.5-turbo
评估了任意一对模型答案,如script/eval_vicuna_style.py
中所述。整个推理和评估存储在script/infer_and_eval.sh
中。人类调查问卷存储在data/human_questionnaire
中。
实验是使用私人基础设施进行的,其碳效率为 0.432 kgCO2eq/kWh。在 Tesla V100-SXM2-32GB 类型的硬件(TDP 为 300W)上累计执行了 500 小时的计算。总排放量估计为 64.8 CO2eq,其中 0% 被直接抵消。使用 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}
}
我们要感谢 Huggingface 构建的开源基础设施和生态系统,特别是 trl 存储库的 lvwerra。我们向我们之前的开源微调先驱表示感谢,包括但不限于 Alpaca、Alpaca-LoRA、GPT4All、OpenAssistant、Koala、Vicuna 和 Dolly。
源代码根据 Apache-2.0 许可证获得许可。模型权重已获得 CC-BY-SA 4.0 许可。微调数据集源自 LAION OIG Chip2 和 infill_dbpedia (Apache-2.0)、DataBricks Dolly v2 (Apache-2.0)、OpenAI TL;DR (MIT) 和 Hello-SimpleAI HC3 (CC-BY SA)。