1.摘要
用llama-factory-0.7.0微调Llama-3-8B-Instruct-262k,微调数据是1.5k的论文审稿。
GPU配置是A40.
用llama-factory的0.7.1版本微调Llama-3-8B-Instruct-262k.
2.准备工作
2.1软硬件依赖
2.2 安装LLaMA-Factory
下载0.7.0版本
cd LLaMA-Factory
pip install –r requirements.txt
pip install -e .[metrics]
2.3 下载模型Llama-3-8B-Instruct-262k
https://huggingface.co/gradientai/Llama-3-8B-Instruct-262k
2.4 微调数据整理
数据文件:paper_review.json
微调数据文件paper_review.json中的数据格式:
{
"input_sys": "",
"instruction":"",
"input": "",
"output": "",
}
把微调数据文件paper_review.json放到LLaMA-Factory/data/目录下面。
2.5 修改LLaMA-Factory/data/dataset_info.json
在data/dataset_info.json中增加:
"paper_review": {
"file_name": "paper_review.json",
"columns": {
"system": "input_sys",
"prompt": "instruction",
"query": "input",
"response": "output"
}
}
2.6 增加LLaMA-Factory/examples/lora_single_gpu/paper-review-sft.sh
cp sft.sh paper-review-sft.sh
在paper-review-sft.sh文件中修改下面三项(黄色部分):
#!/bin/bash CUDA_VISIBLE_DEVICES=0 python ../../src/train_bash.py \ --stage sft \ --do_train \ --model_name_or_path /root/autodl-tmp/LLM/Llama-3-8B-Instruct-262k \ --dataset alpaca_gpt4_en,glaive_toolcall \ --dataset_dir ../../data \ --template default \ --finetuning_type lora \ --lora_target q_proj,v_proj \ --output_dir /root/autodl-tmp/LLM/saves-7.0/llama3-8b/lora/sft \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 256000 \ --preprocessing_num_workers 16 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 8 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --warmup_steps 20 \ --save_steps 100 \ --eval_steps 100 \ --evaluation_strategy steps \ --load_best_model_at_end \ --learning_rate 5e-5 \ --num_train_epochs 3.0 \ --max_samples 3000 \ --val_size 0.1 \ --plot_loss \ --fp16
3. 开始微调
cd LLaMA-Factory/examples/lora_single_gpu/
sh paper-review-sft.sh
跑起来以后GPU占用24G左右
跑完用时100分钟
4.推理
4.1 增加LLaMA-Factory/examples/inference/cli_demo_test.sh文件
cp cli_demo.sh cli_demo_test.sh
4.2 修改cli_demo_test.sh中的内容
CUDA_VISIBLE_DEVICES=0 python ../../src/cli_demo.py \
--model_name_or_path /root/autodl-tmp/LLM/Llama-3-8B-Instruct-262k \
--adapter_name_or_path /root/autodl-tmp/LLM/saves-7.0/llama3-8b/lora/sft \
--template default \
--finetuning_type lora \
--max_length 256000 \
--buffer_size 256000 \
--cutoff_len 256000
4.3 运行推理
cd LLaMA-Factory/examples/inference
sh cli_demo_test.sh
5. 推理的时候遇到的错误RuntimeError: "triu_tril_cuda_template" not implemented for 'BFloat16'
经过观察日志
训练时:Instantiating LlamaForCausalLM model under default dtype torch.float16.
推理时:Instantiating LlamaForCausalLM model under default dtype torch.bfloat16.
说明训练用的是torch.float16.,推理用的是torch.bfloat16. 我们可以修改Llama-3-8B-Instruct-262k中的config.json文件,把config.json里面的"torch_dtype": "bfloat16",修改成"torch_dtype": "float16"。
在运行推理时,正常