我所使用的代码仓库是LLaMA-Factoryhiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) (github.com)https://github.com/hiyouga/LLaMA-Factory/tree/main
和Issues · baichuan-inc/Baichuan2 (github.com)
import os
import torch
import torch as torch
from modelscope import snapshot_download, AutoModelForCausalLM, AutoTokenizer, GenerationConfig
model_dir = snapshot_download("baichuan-inc/Baichuan2-7B-Chat", revision='v1.0.4', cache_dir='Base_LLMs')
tokenizer = AutoTokenizer.from_pretrained(model_dir, device_map="auto",
trust_remote_code=True, torch_dtype=torch.float16)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto",
trust_remote_code=True, torch_dtype=torch.float16)
参考:百川2-7B-对话模型 · 模型库 (modelscope.cn)
解决办法:
pip install fsspec==2023.9.2
我的配置是:
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ --stage sft \ --model_name_or_path ./Base_LLMs/baichuan-inc/Baichuan2-7B-Chat \ --do_train \ --dataset jjxq \ --template baichuan2 \ --finetuning_type lora \ --lora_target q_proj,v_proj \ --output_dir ./new_baichuan_test \ --overwrite_cache \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 8 \ --quantization_bit 4 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --save_steps 1000 \ --learning_rate 5e-5 \ --num_train_epochs 3.0 \ --plot_loss \ --fp16
解决办法:将 --lora_target q_proj,v_proj \改为
--lora_target q_proj,v_proj,W_pack \
还可参考下面链接中说明的各种模型参数:
LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory (github.com)https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B
解决办法:好像是torch版本的问题,2.0以上就没有问题了,pip install torch==2.0.1
或者pip install xformers -i https://pypi.tuna.tsinghua.edu.cn/simple,不加镜像我安装时这个包下载的很慢,也挺大的,注意加镜像。
可参考:Baichuan2-7B-Chat执行推理报错TypeError: sdp_kernel() got an unexpected keyword argument 'enable_mem_efficient' · Issue #111 · baichuan-inc/Baichuan2 (github.com)https://github.com/baichuan-inc/Baichuan2/issues/111
$ df -h
df -h
显示/
盘空间用尽
解决办法:将其放在一个空间尚充足的目录(我设为了home下的一个自建目录),就可以顺利安装了,如下:
$ mkdir $HOME/tmp
$ export TMPDIR=$HOME/tmp
export TMPDIR=$HOME/tmp
该命令指定 tmp 目录。 此规范是临时的,在会话关闭时将被丢弃。
也可以扩容ubuntu–vg-ubuntu–lv,参考下面链接:Linux /dev/mapper/ubuntu–vg-ubuntu–lv磁盘满了 - 知乎 (zhihu.com)