基于NPU的LLama factory安装&微调大模型使用指南
·
目录
文章目录
LLaMA Factory介绍
- LLaMA-Factory是一个集多种微调技术于一身的高效框架,支持包括Qwen2-7B在内的多种大型语言模型。它通过集成如LoRA、QLoRA等先进的微调算法,以及提供丰富的实验监控工具,如LlamaBoard、TensorBoard等,为用户提供了一个便捷、高效的微调环境。
- 详细见https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md
环境准备
下载CANN
- cann更新迭代比较快,建议下载最新的商用版本
- 下载地址:https://cmc-szv.clouddragon.huawei.com/cmcversion/index/releaseView?deltaId=10757799896352000&isSelect=Software&url_data=run
- 下载好之后上传对应的宿主机

安装CANN
-
到一般的默认路径,查看是否有已经有的cann版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.cfgcann也有可能没有安装在默认路径,可以采用直接source当前cann路径,注意一定要在容器里面source,否则后面启动llama factory依然会报错,详细见后面问题记录。
-
如果当前没有安装,使用如下命令安装,注意: 在宿主机上安装,不要在conda镜像或者docker里面装,否则会安装失败
chmod +x Ascend-cann-* ./Ascend-cann-toolkit_8.0.RC2_linux-aarch64.run --check ./Ascend-cann-toolkit_8.0.RC2_linux-aarch64.run --install ./Ascend-cann-kernels-910b_8.0.RC2_linux.run --check ./Ascend-cann-kernels-910b_8.0.RC2_linux.run --install -
tips: 可以通过后面加
--full --quiet --install-path=your path指定安装目录 -
例: ./Ascend-cann-toolkit_8.0.RC2_linux-aarch64.run --full --quiet --install-path=your path`
conda环境创建
conda create -n llamaFactory python=3.10conda activate llamaFactory
LLaMA-Factory仓库下载
git clone https://github.com/hiyouga/LLaMA-Factory.gitcd LLaMA-Factorypip install -e .
环境设置
- 进入上一步下拉的LLaMA-Factory仓库:
cd LLaMA-Factory, 执行如下命令
# 禁止grado注册外网
export GRADIO_ANALYTICS_ENABLED=False
# 设置端口号,如不指定则为随机端口
export GRADIO_SERVER_PORT=8080
# 按需指定使用的NPU编号
export ASCEND_RT_VISIBLE_DEVICES=0,1
启动服务
# 启动服务(后台)
nohup llamafactory-cli webui > start.log &
# 启动服务(前台)
llamafactory-cli webui
- 启动成功, 会显示如下:

- 在本地浏览器,输入
http://{your host ip}:8080
微调训练
模型文件设置
- 当前推荐使用本地的模型文件,直接把本地文件的路径复制一下,如下
数据集设置
-
将自己要微调的数据传到
LLaMA-Factory/data路径下 -
修改对应
LLaMA-Factory/data下面的dataset_info.json文件,仿照上面的用例,添加自定义数据的key,value -
添加完以后,在前端界面上
data下拉框下面,就可以看到对应数据 -
点击右边
Preview dataset, 可以预览下整个数据
启动微调
-
参数配置好了以后,便可以选择下方开始,进行微调,会保存到默认的微调后的模型权重文件位于
LlamaFactory的saves目录 -
页面&后台可以看到具体的日志
-
训练完成后,会在本地输出微调后的相关权重文件
-
页面上也可以看到,训练完毕字样,包括整体loss情况
模型推理加载
- 在高级设置中有一个“Chat”页签,可用于模型推理对话, 点击加载,下面会显示在加载中
- 加载完成后,前端页面便可以访问了
模型合并导出
方法1:页面操作
- 模型训练完成后,我们可以将训练完后的Lora相关权重文件,和基础模型进行合并导出生成新的模型
方法2:后台命令行操作
-
进入到
lora微调后保存的目录,查看微调后模型权重路径 -
进入到目录
LLaMA-Factory/examples/merge_lora, 创建yaml脚本,以qwen2-7b模型为例,内容大概如下# LoraAdaper目录样例 # /home/ylx/LLaMA-Factory/saves/Qwen2-7B-Chat/lora/train_2024-08-20-11-20-07 ### model model_name_or_path: /data1/ylx/models/Qwen2-7B-Instruct # 基础模型目录 adapter_name_or_path: /home/ylx/LLaMA-Factory/saves/Qwen2-7B-Chat/lora/train_2024-08-20-11-20-07 # Lora微调模型目录 template: qwen finetuning_type: lora ### export export_dir: /data1/ylx/models/Qwen2-7B-Chat-Lora-ZF # 合并文件导出目录 export_size: 2 export_device: cpu export_legacy_format: false -
切换到LLaMA-Factory目录,执行模型合并,执行命令如下样例
# 执行模型合并 llamafactory-cli export /home/ylx/LLaMA-Factory/examples/merge_lora/qwen2_7b_lora_merge.yaml
安装问题记录
1. git clone报错
- 具体错误:error: RPC failed; curl 18 transfer closed with outstanding read data remaining
- 问题解决: 网上查了是因为文件太大,尝试了各种方法,最终采用
git clone https://github.com/hiyouga/LLaMA-Factory.git --depth 1解决
2. pip install报错
- 具体报错:pip subprocess to install build dependencies did not run successfully.
- 问题解决:重新配置了下代理
3. 使用命令llamafactory-cli webui失败
- 具体报错:libhccl.so: cannot open shared object file: No such file or directory. Please check that the cann package is installed. Please run ‘source set_env.sh’ in the CANN installation path.
- 定位到应该是cann的原因
尝试解决方案1
- 进到/usr/local/Ascend下面发现没有ascend-toolkit,尝试重新安装cann, 发现总是报错,
[ERROR] CANN-compiler-7.3.0.1.231-linux.aarch64.run install failed
尝试解决方案2
source当前已有cann, 成功! 记得一定要在你安装llamafactory的conda环境中source, 否则还是会报错- 例:
source /data1/fengbin/cann_env.sh
Tips
- 缺什么装什么,torch_npu同样安装商用版本,设置华为源https://mirrors.tools.huawei.com/mirrorDetail/5ea63909e521113e010adfe2?mirrorName=pypi&catalog=language,再pip install torch torch_npu
参考网址
- https://help.aliyun.com/zh/pai/use-cases/fine-tune-a-llama-3-model-with-llama-factory
- https://3ms.huawei.com/km/blogs/details/15112046?l=zh-cn
- 华为源设置:https://mirrors.tools.huawei.com/mirrorDetail/5ea63909e521113e010adfe2?mirrorName=pypi&catalog=language
- 大模型微调实战:基于 LLaMAFactory 通过 LoRA 微调修改模型自我认知https://www.lixueduan.com/posts/ai/05-finetune-llamafactory/【好文!】
- GPT 是如何炼成的:大模型微调基础概念指北 https://www.lixueduan.com/posts/ai/04-finetune-concept/ 【好文!】
更多推荐

所有评论(0)