部落格 |代碼 |示範
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 的模型)的限制。請在此處查看我們的現場演示。
我們提供各種型號的版本如下:
示範中使用的分片版本:
我們提供的訓練集如下:
我們使用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)。