LLaMA-Factory部署、自定义数据集、模型微调、模型调用(NVIDIA) ...

诗林  论坛元老 | 2025-4-11 08:12:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1454|帖子 1454|积分 4362

项目所在:
https://github.com/hiyouga/LLaMA-Factory.git
https://github.com/hiyouga/LLaMA-Factory.git
项目已经有比较完善步调,但有几个点容易出错。

情况配置

起首用Anaconda创建个情况,因为必要安装许多额外的包,并且pytorch版本和cuda也不肯定对。
conda情况使用基本下令
  1. conda update -n base conda              #update最新版本的conda
  2. conda create -n xxxx python=3.10         #创建python3.5的xxxx虚拟环境
  3. conda activate xxxx                     #开启xxxx环境
  4. conda deactivate                        #关闭环境
  5. conda env list                          #显示所有的虚拟环境
  6. conda info --envs                       #显示所有的虚拟环境
  7. conda remove -n xxxx --all              #删除xxxx虚拟环境
  8. conda list                              #查看已经安装的文件包
  9. conda list -n xxx                       #指定查看xxx虚拟环境下安装的package
  10. conda update xxx                        #更新xxx文件包
  11. conda uninstall xxx                     #卸载xxx文件包
复制代码

用项目自带的requirements.txt文件先配置一下情况(配置完也不肯定能用,但能配置大部分
  1. pip install -r requirements.txt
复制代码

然后先将requirements.txt文件自动配置的torch卸载掉
  1. conda uninstall torch
复制代码

然后查看自己cuda最高版本和当前版本
  1. nvidia-smi
复制代码

下面是查看当前cuda版本(但这个不重要,因为咱们要在conda情况中安装
  1. nvcc -V
复制代码

图1

图2


图1中是当前驱动和最大CUDA版本,
图2中是限定条件CUDA最少要求11.6不然运行时会提示没有CUDA情况
但CUDA最大版本又受NVIDIA显卡驱动版本影响

下面是安装驱动参考链接:保举使用software & updates直接安装(省事)
【亲测有效】Linux系统安装NVIDIA显卡驱动_linux安装nvidia显卡驱动-CSDN博客
ubuntu18.04安装显卡驱动(四种方式)-CSDN博客

差别 nvidia-driver 版本大抵对应的 CUDA 版本,不外现实的对应关系大概会受操作系统、硬件等因素影响,你可以参考 NVIDIA 官方 CUDA 兼容性矩阵 获取最正确信息:
  1. 1. nvidia-driver-390
  2. 此驱动系列支持的 CUDA 版本上限为 CUDA 10.1 ,同时也能向下兼容较旧的 CUDA 版本,像 CUDA 9.x 等。
  3. 2. nvidia-driver-470
  4. 该驱动系列支持 CUDA 11.4 至 CUDA 11.7 。能较好适配基于 CUDA 11 系列开发的应用程序。
  5. 3. nvidia-driver-510
  6. 支持 CUDA 11.6 到 CUDA 11.8 。此驱动版本是 CUDA 11 系列持续优化阶段的产物,可确保在这些 CUDA 版本下硬件的稳定运行。
  7. 4. nvidia-driver-515
  8. 支持 CUDA 11.7 到 CUDA 11.8 。是从 CUDA 11 系列向更新版本过渡阶段的重要驱动版本,对 CUDA 11 的后期版本兼容性良好。
  9. 5. nvidia-driver-525
  10. 支持 CUDA 12.0 及部分后续版本。它是为适应新的 CUDA 12 架构和特性而推出的驱动版本,开始支持 CUDA 12 引入的新功能。
  11. 6. nvidia-driver-530
  12. 支持 CUDA 12.1 及后续部分版本。随着 CUDA 技术的发展,该驱动进一步适配了新的 CUDA 特性和优化。
复制代码

然后安装PyTorch记着要安装GPU版本


在假造情况中想要测试是否安装成功,不能使用nvcc -V下令测试,必要在假造情况中安装pytorch包进行测试。
  1. # 虚拟环境中,进入python环境
  2. import torch
  3. # 查看pytorch版本
  4. print(torch.__version__)
  5. # cuda是否可用
  6. print(torch.cuda.is_available())
  7. # cuda版本
  8. print(torch.version.cuda)
  9. # cudnn版本
  10. print(torch.backends.cudnn.version())
复制代码


运行测试

这时候尝试启动一下(web界面方式)
  1. llamafactory-cli webui
复制代码

这时候大概会报一个错误:llamafactory-cli: command not found
执行这个
  1. pip install -e .[metrics]
复制代码

再运行一下,就能看到web界面了。


但注意执行前要注意一下自己内存,nvidia-smi不然大概因内存不足启动失败


自定义数据集 

详细用什么数据集要看自己的详细需求,我接纳的是Alpaca 格式,必要将配置文件放到data目录下,并在dataset_info.json文件中添加数据集路径,详情参考下方链接:
参考链接:LLaMA-Factory|微调大语言模型初探索(2),练习自己的谈天机器人_ai 练习 数据集 参数 阐明 "instruction":"","input":"""output-CSDN博客

假如数据集是sharegpt ,那数据集格式比较严酷,在dataset_info.json文件中添加
  1. 示例:这是在dataset_info.json中添加格式
  2. "dataset_name": {
  3.   "file_name": "data.json",
  4.   "formatting": "sharegpt",
  5.   "columns": {
  6.     "messages": "conversations",
  7.     "system": "system",
  8.     "tools": "tools"
  9.   }
  10. }
  11. # system和tools是可选的,可以不添加
复制代码
  1. 示例:这是sharegpt 格式数据集,必须符合格式,不然运行报错
  2. [
  3.   {
  4.     "conversations": [
  5.       {
  6.         "from": "human",
  7.         "value": "human instruction"
  8.       },
  9.       {
  10.         "from": "function_call",
  11.         "value": "tool arguments"
  12.       },
  13.       {
  14.         "from": "observation",
  15.         "value": "tool result"
  16.       },
  17.       {
  18.         "from": "gpt",
  19.         "value": "model response"
  20.       }
  21.     ],
  22.     "system": "system prompt (optional)",
  23.     "tools": "tool description (optional)"
  24.   }
  25. ]
  26. # 用户和模型键值必须是 "from": "human" 和 "from": "gpt"不然也报错,具体看说明,同样system和tools
  27.   也可选,但必须和dataset_info.json中匹配
复制代码
参考链接:
https://github.com/hiyouga/LLaMA-Factory/tree/main/data


开始微调

设置完自定义数据集后轻微调整参数,开始微调,注意微调时本地无模型时会先下载模型,速率很慢,发起先下载到本地。
模型下载所在,这是国内镜像,下载很快:
HF-Mirror加快访问Hugging Face的流派。作为一个公益项目,我们致力于提供稳固、快速的镜像服务,资助国内用户无停滞访问Hugging Face的资源。
https://hf-mirror.com



微调完后就能看到“存储的目录”,这整个文件夹是整个微调后的模型


微调后模型合并

把练习的LoRA和原始的大模型进行融合,输出一个完整的模型文件
  1. CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
  2.     --model_name_or_path xxx/xxx/xxx \                    #原始大模型所在文件夹路径
  3.     --adapter_name_or_path xxx/xxx/xxx  \                 #微调后大模型所在文件夹路径
  4.     --template llama3 \                                   
  5.     --finetuning_type lora \                              #微调类型
  6.     --export_dir megred-model-path \                      #合并后模型存储路径
  7.     --export_size 2 \
  8.     --export_device cpu \
  9.     --export_legacy_format False
复制代码
 合并完是如许的
 

参考链接:
LLaMA-Factory QuickStart - 知乎

ollama调用微调后的模型

方法一:使用Llama.cpp

通过LlaMA-Factory导出的模型与Ollama所需格式有区别,必要借助Llama.cpp的代码进行转换。
仓库所在:https://github.com/ggerganov/llama.cpp
安装依赖
  1. pip install -r requirements.txt
复制代码
转换下令
  1. python convert_hf_to_gguf.py xxx/xxx/xxx \    #上面转换完模型路径
  2. --outfile /xxx/xxx/xxx.gguf \                 #要导出的gguf文件路径和名称
  3. --outtype q8_0                                #模型精度:可选f32/f16/q8_0等
复制代码
运行代码后会把safetensors格式转换为gguf格式,接下来创建Modelfile,用于将模型导入Ollama中,Modelfile文件中写下面内容,gguf文件所在路径:
  1. FROM /xxx/xxx/xxx.gguf
复制代码
在ollama中创建模型:
  1. ollama create model_name -f /path/to/Modelfile
复制代码
查看模型是否创建:
  1. ollama list
复制代码
创建成功就会看到你创建的模型名称。

方法二:使用LLaMA-Factory的export(保举)

这相称于微调后模型合并调用微调后的模型的结合版,更方便快捷


导出完模型,已经自动天生Modelfile文件了,可被ollama直接添加

然后在ollama中创建模型就行了
  1. ollama create xxx_name -f ./Modelfile  #xxx_name是自定义模型名字
复制代码

参考链接:
LLaMA-Factory+Ollama:本地部署大模型流程详解-CSDN博客

llama-factory别的参数使用时库安装

例如:bitsandbytes等,必要安装库,还是发起用:
  1. pip install -e .[bitsandbytes]
复制代码
自己安装非常容易出现,各库之间不兼容,或是与cuda版本不兼容



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表