开放助手 LLaMa 30B SFT 6
由于 Meta AI 对 LLaMA 模型附加了许可证,因此无法直接分发基于 LLaMA 的模型。相反,我们为OA模型提供了XOR权重。
感谢 Mick 编写了启用此过程的脚本xor_codec.py
过程
注意:此过程适用于模型。将来可以将相同的过程应用于其他模型,但校验和会有所不同。oasst-sft-6-llama-30b
此过程仅在Linux(特别是Ubuntu)上进行测试。一些用户报告说,该过程在Windows上不起作用。如果只有一台 Windows 计算机,我们建议使用 WSL。
要使用基于 OpenAssistant LLaMA 的模型,您应该拥有原始 LLaMA 模型权重的副本,并将它们添加到此处的子目录中。如果您无法获得原始LLaMA,请参阅下面的斜体注释以获取可能的替代方案。llama
确保您的 LLaMA 30B 检查点与正确的 md5sum 匹配:
f856e9d99c30855d6ead4d00cc3a5573 consolidated.00.pth
d9dbfbea61309dc1e087f5081e98331a consolidated.01.pth
2b2bed47912ceb828c0a37aac4b99073 consolidated.02.pth
ea0405cdb5bc638fee12de614f729ebc consolidated.03.pth
4babdbd05b8923226a9e9622492054b6 params.json
如果您没有原始LLaMA权重的副本并且无法获得,您仍然可以完成此过程。一些用户报告说,该模型可以用作异或转换的基础。这也将允许您跳到步骤 7。但是,我们仅支持从 LLaMA 原始检查点开始的转换,如果您在使用此替代方法时遇到问题,则无法提供支持。
重要提示:请按照以下确切步骤将原始LLaMA检查点转换为与HuggingFace Transformers兼容的格式。如果您使用任何依赖项的错误版本,则最终可能会得到与 XOR 文件不兼容的权重。
- 创建一个干净的Python 3.10虚拟环境并激活它:
python3.10 -m venv xor_venv
source xor_venv/bin/activate
- 克隆变压器存储库并切换到测试版本:
git clone https://github.com/huggingface/transformers.git
cd transformers
git checkout d04ec99bec8a0b432fc03ed60cea9a1a20ebaf3c
pip install .
- 完全安装以下依赖项版本:
pip install torch==1.13.1 accelerate==0.18.0 sentencepiece==0.1.98 protobuf==3.20.1
- 检查输出:
pip freeze
accelerate==0.18.0
certifi==2022.12.7
charset-normalizer==3.1.0
filelock==3.12.0
huggingface-hub==0.13.4
idna==3.4
numpy==1.24.2
nvidia-cublas-cu11==11.10.3.66
nvidia-cuda-nvrtc-cu11==11.7.99
nvidia-cuda-runtime-cu11==11.7.99
nvidia-cudnn-cu11==8.5.0.96
packaging==23.1
protobuf==3.20.1
psutil==5.9.5
PyYAML==6.0
regex==2023.3.23
requests==2.28.2
sentencepiece==0.1.98
tokenizers==0.13.3
torch==1.13.1
tqdm==4.65.0
transformers @ file:///mnt/data/koepf/transformers
typing_extensions==4.5.0
urllib3==1.26.15
- 在存储库根目录中,运行 HF LLaMA 转换脚本:
transformers
python src/transformers/models/llama/convert_llama_weights_to_hf.py --input_dir <input_path_llama_base> --output_dir <output_path_llama30b_hf> --model_size 30B
- 在转换目标目录 () 中运行。如果您的文件正确,这应该产生以下校验和:
find . -type f -exec md5sum "{}" +
output_dir
462a2d07f65776f27c0facfa2affb9f9 ./pytorch_model-00007-of-00007.bin
e1dc8c48a65279fb1fbccff14562e6a3 ./pytorch_model-00003-of-00007.bin
9cffb1aeba11b16da84b56abb773d099 ./pytorch_model-00001-of-00007.bin
aee09e21813368c49baaece120125ae3 ./generation_config.json
92754d6c6f291819ffc3dfcaf470f541 ./pytorch_model-00005-of-00007.bin
3eddc6fc02c0172d38727e5826181adb ./pytorch_model-00004-of-00007.bin
eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
99762d59efa6b96599e863893cf2da02 ./pytorch_model-00006-of-00007.bin
598538f18fed1877b41f77de034c0c8a ./config.json
fdb311c39b8659a5d5c1991339bafc09 ./tokenizer.json
fecfda4fba7bfd911e187a85db5fa2ef ./pytorch_model.bin.index.json
edd1a5897748864768b1fab645b31491 ./tokenizer_config.json
6b2e0a735969660e720c27061ef3f3d3 ./special_tokens_map.json
5cfcb78b908ffa02e681cce69dbe4303 ./pytorch_model-00002-of-00007.bin
重要提示:您现在应该拥有正确的 LLaMA 权重,并准备好应用 XOR。如果上面的校验和与您的校验和不匹配,则存在问题。
- 获得正确格式的LLaMA权重后,您可以应用异或解码:
python xor_codec.py oasst-sft-6-llama-30b/ oasst-sft-6-llama-30b-xor/oasst-sft-6-llama-30b-xor/ llama30b_hf/
您应该会在执行期间看到一条警告消息:
Exception when processing 'added_tokens.json'
这是正常的。如果其他文件出现类似消息,则表示出了问题。
- 现在在输出目录中运行(此处)。您应该得到一个包含以下校验和的文件:
find . -type f -exec md5sum "{}" +
oasst-sft-6-llama-30b
970e99665d66ba3fad6fdf9b4910acc5 ./pytorch_model-00007-of-00007.bin
659fcb7598dcd22e7d008189ecb2bb42 ./pytorch_model-00003-of-00007.bin
ff6e4cf43ddf02fb5d3960f850af1220 ./pytorch_model-00001-of-00007.bin
27b0dc092f99aa2efaf467b2d8026c3f ./added_tokens.json
2917a1cafb895cf57e746cfd7696bfe5 ./generation_config.json
740c324ae65b1ec25976643cda79e479 ./pytorch_model-00005-of-00007.bin
f7aefb4c63be2ac512fd905b45295235 ./pytorch_model-00004-of-00007.bin
eeec4125e9c7560836b4873b6f8e3025 ./tokenizer.model
369df2f0e38bda0d9629a12a77c10dfc ./pytorch_model-00006-of-00007.bin
cc9dbf56b68b68a585cc7367696e06a7 ./config.json
76d47e4f51a8df1d703c6f594981fcab ./pytorch_model.bin.index.json
fd9452959d711be29ccf04a97598e8d1 ./tokenizer_config.json
785905630a0fe583122a8446a5abe287 ./special_tokens_map.json
ae48c4c68e4e171d502dd0896aa19a84 ./pytorch_model-00002-of-00007.bin
如果是这样,您已经成功解码了权重,并且应该能够将该模型与HuggingFace变压器一起使用。如果您的校验和与上述校验和不匹配,则存在问题。
配置
llama-30b-sft-6:
dtype: fp16
log_dir: "llama_log_30b"
learning_rate: 1e-5
model_name: /home/ubuntu/Open-Assistant/model/model_training/.saved/llama-30b-super-pretrain/checkpoint-3500
output_dir: llama_model_30b
deepspeed_config: configs/zero3_config_sft.json
weight_decay: 0.0
residual_dropout: 0.0
max_length: 2048
use_flash_attention: true
warmup_steps: 20
gradient_checkpointing: true
gradient_accumulation_steps: 16
per_device_train_batch_size: 2
per_device_eval_batch_size: 3
eval_steps: 101
save_steps: 292
num_train_epochs: 8
save_total_limit: 3
use_custom_sampler: true
sort_by_length: false
save_strategy: steps
datasets:
- oasst_export:
lang: "bg,ca,cs,da,de,en,es,fr,hr,hu,it,nl,pl,pt,ro,ru,sl,sr,sv,uk"
input_file_path: 2023-04-12_oasst_release_ready_synth.jsonl.gz
val_split: 0.05
- vicuna:
val_split: 0.05
max_val_set: 800
fraction: 0.8
- dolly15k:
val_split: 0.05
max_val_set: 300
- grade_school_math_instructions:
val_split: 0.05
- code_alpaca:
val_split: 0.05
max_val_set: 250
- OASST 数据集论文:https://arxiv.org/abs/2304.07327