开放助手 LLaMa 30B SFT 6

工具软件2年前 (2023)发布 gpts
68 0

开放助手 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 文件不兼容的权重。

  1. 创建一个干净的Python 3.10虚拟环境并激活它:
python3.10 -m venv xor_venv
source xor_venv/bin/activate

  1. 克隆变压器存储库并切换到测试版本:
git clone https://github.com/huggingface/transformers.git
cd transformers
git checkout d04ec99bec8a0b432fc03ed60cea9a1a20ebaf3c
pip install .

  1. 完全安装以下依赖项版本:
pip install torch==1.13.1 accelerate==0.18.0 sentencepiece==0.1.98 protobuf==3.20.1

  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

  1. 在存储库根目录中,运行 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

  1. 在转换目标目录 () 中运行。如果您的文件正确,这应该产生以下校验和: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。如果上面的校验和与您的校验和不匹配,则存在问题。

  1. 获得正确格式的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'

这是正常的。如果其他文件出现类似消息,则表示出了问题

  1. 现在在输出目录中运行(此处)。您应该得到一个包含以下校验和的文件: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

© 版权声明

相关文章