目录

LLaMA Factory介绍

  • LLaMA-Factory是一个集多种微调技术于一身的高效框架,支持包括Qwen2-7B在内的多种大型语言模型。它通过集成如LoRA、QLoRA等先进的微调算法,以及提供丰富的实验监控工具,如LlamaBoard、TensorBoard等,为用户提供了一个便捷、高效的微调环境。
  • 详细见https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md

环境准备

下载CANN

安装CANN

  • 到一般的默认路径,查看是否有已经有的cann版本
    cat /usr/local/Ascend/ascend-toolkit/latest/version.cfg

    • cann也有可能没有安装在默认路径,可以采用直接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.10
  • conda activate llamaFactory

LLaMA-Factory仓库下载

  • git clone https://github.com/hiyouga/LLaMA-Factory.git
  • cd LLaMA-Factory
  • pip 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文件,仿照上面的用例,添加自定义数据的keyvalue

  • 添加完以后,在前端界面上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

参考网址

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐