当前位置: 首页 > article >正文

LlamaFactory可视化模型微调-Deepseek模型微调+CUDA Toolkit+cuDNN安装

LlamaFactory

https://llamafactory.readthedocs.io/zh-cn/latest/

在这里插入图片描述

安装

必须保证版本匹配,否则到训练时,找不到gpu cuda。
否则需要重装。下面图片仅供参考。因为cuda12.8装了没法用,重新搞12.6

cudacudnnpytorch
12.69.612.6
最新:12.89.7.1
Windows

CUDA 安装

打开 设置 ,在 关于 中找到 Windows 规格 保证系统版本在以下列表中:
windows11 如下
在这里插入图片描述

支持版本号

Microsoft Windows 11 21H2
Microsoft Windows 11 22H2-SV2
Microsoft Windows 11 23H2
Microsoft Windows 10 21H2
Microsoft Windows 10 22H2
Microsoft Windows Server 2022

安装之前确认版本
在命令提示符也就是cmd中输入nvidia-smi.exe,查看你电脑支持的cuda最高版本。(第一行最后)

这个的话必须要有显卡!
在这里插入图片描述

选择对应的版本下载并根据提示安装。
在这里插入图片描述
在这里插入图片描述
如果自己使用不了最新版本,根据自己配置,下载对应的版本,如下图:
在这里插入图片描述

安装CUDA完成

打开 cmd 输入 nvcc -V ,若出现类似内容则安装成功。
在这里插入图片描述

否则,检查系统环境变量,保证 CUDA 被正确导入。

cuDNN安装

‌cuDNN(CUDA Deep Neural Network library)是一个由NVIDIA开发的深度学习GPU加速库,旨在为深度学习任务提供高效、标准化的原语(基本操作)来加速深度学习框架在NVIDIA GPU上的运算。

在这里插入图片描述
选择对应版本进行下载。如果当前界面没有你需要的版本,可访问如下历史版本页面进行下载:

https://developer.nvidia.com/rdp/cudnn-archive
解压后,目录结构如图:

在这里插入图片描述
将目录bin、lib、include复制到CUDA的安装目录下(LICENSE除外),可以先对CUDA安装目录下的这三个目录做备份,以免出现覆盖无法恢复。如图:
默认安装:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
在这里插入图片描述
最后将如下path添加到环境变量Path中:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\libnvvp

验证

配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和 bandwithTest.exe:
首先win+R启动cmd,cd到CUDA安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exedeviceQuery.exe,应该得到下图:
在这里插入图片描述
执行测试CUDA是否可用GPU
在这里插入图片描述

LLaMA-Factory 安装

在安装 LLaMA-Factory 之前,请确保您安装了下列依赖:
运行以下指令以安装 LLaMA-Factory 及其依赖:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

如果出现环境冲突,请尝试使用 pip install --no-deps -e . 解决

LLaMA-Factory 校验

完成安装后,可以通过使用 llamafactory-cli version 来快速校验安装是否成功

如果您能成功看到类似下面的界面,就说明安装成功了。
在这里插入图片描述
Windows

QLoRA

如果您想在 Windows 上启用量化 LoRA(QLoRA),请根据您的 CUDA 版本选择适当的 bitsandbytes 发行版本。
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl

FlashAttention-2

如果您要在 Windows 平台上启用 FlashAttention-2,请根据您的 CUDA 版本选择适当的 flash-attention 发行版本。

其他依赖

在这里插入图片描述

数据处理

https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html

目前我们支持 Alpaca 格式和 ShareGPT 格式的数据集。

Alpaca

  • 指令监督微调数据集

    指令监督微调(Instruct Tuning)通过让模型学习详细的指令以及对应的回答来优化模型在特定指令下的表现。

    instruction 列对应的内容为人类指令, input 列对应的内容为人类输入, output 列对应的内容为模型回答。下面是一个例子

    "alpaca_zh_demo.json"
    {
      "instruction": "计算这些物品的总费用。 ",
      "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
      "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
    },
    

    进行指令监督微调时, instruction 列对应的内容会与 input 列对应的内容拼接后作为最终的人类输入,即人类输入为 instruction\ninput。而 output 列对应的内容为模型回答。 在上面的例子中,人类的最终输入是:

    计算这些物品的总费用。
    输入:汽车 - $3000,衣服 - $100,书 - $20。
    

    模型的回答是:

    汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。
    

    如果指定, system 列对应的内容将被作为系统提示词。

    history 列是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。注意在指令监督微调时,历史消息中的回答内容也会被用于模型学习。

    [
      {
        "instruction": "人类指令(必填)",
        "input": "人类输入(选填)",
        "output": "模型回答(必填)",
        "system": "系统提示词(选填)",
        "history": [
          ["第一轮指令(选填)", "第一轮回答(选填)"],
          ["第二轮指令(选填)", "第二轮回答(选填)"]
        ]
      }
    ]
    

    下面提供一个 alpaca 格式 多轮 对话的例子,对于单轮对话只需省略 history 列即可。

    [
      {
        "instruction": "今天的天气怎么样?",
        "input": "",
        "output": "今天的天气不错,是晴天。",
        "history": [
          [
            "今天会下雨吗?",
            "今天不会下雨,是个好天气。"
          ],
          [
            "今天适合出去玩吗?",
            "非常适合,空气质量很好。"
          ]
        ]
      }
    ]
    

    对于上述格式的数据, dataset_info.json 中的 数据集描述 应为:

    
    ```"数据集名称": {
      "file_name": "data.json",
      "columns": {
        "prompt": "instruction",
        "query": "input",
        "response": "output",
        "system": "system",
        "history": "history"
      }
    }
    
  • 预训练数据集
    在这里插入图片描述

  • 偏好数据集

  • KTO 数据集

  • 多模态数据集

ShareGPT

  • 指令监督微调数据集
  • 偏好数据集
  • OpenAI格式

WebUI

LLaMA-Factory 支持通过 WebUI 零代码微调大语言模型。 在完成 安装 后,您可以通过以下指令进入 WebUI:

llamafactory-cli webui

在这里插入图片描述
http://localhost:7860/
WebUI 主要分为四个界面:训练、评估与预测、对话、导出。
在这里插入图片描述

训练模型

在开始训练模型之前,您需要指定的参数有:

  1. 模型名称及路径
  2. 训练阶段
  3. 微调方法
  4. 训练数据集
  5. 学习率、训练轮数等训练参数
  6. 微调参数等其他参数
  7. 输出目录及配置路径

随后,您可以点击 开始 按钮开始训练模型。

关于断点重连:适配器断点保存于 output_dir 目录下,请指定 适配器路径 以加载断点继续训练。

如果您需要使用自定义数据集,请在 data/data_info.json 中添加自定义数据集描述并确保 数据集格式 正确,否则可能会导致训练失败。

示例

在example目录中有大量的示例可供参考。
参照配置
在这里插入图片描述

NOTE: 学习率 5e-5 = 0.0005 太小了,梯度下降慢。这里调整到0.001.下图是0.001 的loss函数下降的图。

  • 梯度下降就是对损失函数求最小值的过程。
    在这里插入图片描述

LLaMA-Factory\examples\README_zh.md记录各种微调配置和执行脚本

数据集例子
这里直接使用原有的identity文件微调
替换原LLaMA-Factory\data\identity.json文件中:{{name}} 为 小羽,{{author}} 为 嘉羽很烦
预览片段:

[
 {
   "instruction": "hi",
   "input": "",
   "output": "Hello! I am 小羽, an AI assistant developed by 嘉羽很烦. How can I assist you today?"
 },
 {
   "instruction": "hello",
   "input": "",
   "output": "Hello! I am 小羽, an AI assistant developed by 嘉羽很烦. How can I assist you today?"
 },...

对话模板选择deepseek3,官方有说明
在这里插入图片描述
这里注意一下

  1. 需要LlamaFactory在那个目录启动,这里test-dataset就放在那个目录
  2. 目录下需要包含dataset_info.json. 这是数据集描述文件。参考:安装目录下data/dataset_info.json
    {
      "identity": {
        "file_name": "identity.json"
      }
    }
    

在这里插入图片描述
预览一下数据集,是否争取正确在这里插入图片描述 修改输出目录
在这里插入图片描述
修改配置后,点击开始按钮,等待进度条训练完毕即可。CPU也能训练,但是时间太慢,有条件的最好用GPU,速度快

评估预测与对话

评估预测选项卡:
模型训练完毕后,您可以通过在评估与预测界面通过指定 模型 及 适配器 的路径在指定数据集上进行评估。

您也可以通过在对话界面指定 模型、 适配器 及 推理引擎 后输入对话内容与模型进行对话观察效果。
【windows 报错】,不影响之下 chat步骤可以回答出期望的结果即可

chat选项卡:
在这里插入图片描述
在这里插入图片描述

到这一步,已经加载 训练后模型了。进行问题测试。
在这里插入图片描述
可以看到,我们的 身份识别 训练微调数据已经整合进 模型中了。

导出

如果您对模型效果满意并需要导出模型,您可以在导出界面通过指定 模型、 适配器、 分块大小、 导出量化等级及校准数据集、 导出设备、 导出目录 等参数后点击 导出 按钮导出模型。

在这里插入图片描述
到处文件目录
在这里插入图片描述

Ollama安装教程

Ollama教程

Ollama部署微调模型步骤

1. 模型构建
  • 使用 ModelFile 文件定义模型参数和上下文。
  • 通过 ollama create 命令将模型导入到 Ollama 中。

将生成的ModelFile文件放到外部:
在这里插入图片描述
如果没有新建:
内容进入到ollama 模型页 https://ollama.com/library/deepseek-r1:1.5b/blobs/369ca498f347
copy template内容
在这里插入图片描述
下面内容导出时,llamafactory自动生成的。因为本地装了ollama。
需要修改From ,默认是 . 【自测不行】,可能需要修改成绝对路径【可行】
temperature参数DeepSeek-R1官方建议给0.6

# ollama modelfile auto-generated by llamafactory
# 必须是model.safetersors文件的目录。即我们导出的目录
FROM D:\model\fine-tune\DeepSeek-R1-1.5B-Distill-kong-idendity

TEMPLATE """<|begin▁of▁sentence|>{{ if .System }}{{ .System }}{{ end }}{{ range .Messages }}{{ if eq .Role "user" }}<|User|>{{ .Content }}<|Assistant|>{{ else if eq .Role "assistant" }}{{ .Content }}<|end▁of▁sentence|>{{ end }}{{ end }}"""

PARAMETER stop "<|end▁of▁sentence|>"
PARAMETER num_ctx 4096

进入cmd中执行命令
```shell
ollama create DeepSeek-R1-1.5B-Distill-kong-idendity -f ModelFile
```

在这里插入图片描述
可以看到,模型已经导入到ollama中。我们就可以ollama启动运行我们微调的大模型,提供open ai 接口调用了

3. 模型启动
  • 使用 ollama run 命令启动微调后的模型 DeepSeek-R1-1.5B-Distill-kong-idendity:latest

执行启动命令:
ollama run DeepSeek-R1-1.5B-Distill-kong-idendity:latest
在这里插入图片描述

4. API调用Ollama

在这里插入图片描述
调用地址:POST localhost:11434/api/chat
body: 修改自己的微调模型测试

{
    "model":"DeepSeek-R1-1.5B-Distill-kong-idendity",  // 模型名称,ollama上显示的名字
    "stream": true,						  // 是否流式,true流式返回
    "temperature": 0.6,						  // 思维发散程度
    "top_p":0.95,                             // 一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果
    "messages":[                              // 上下文
        {
            "role":"user",
            "content":"你是谁?"
        }
    ]
}

通过以上步骤,我们成功地将微调后的模型部署到 Ollama 中,并通过 API 接口进行调用和测试。

下一站

完成了LlamaFactory webui 可视化模型微调的所有步骤


http://www.kler.cn/a/549687.html

相关文章:

  • 缓存的介绍
  • STM32的DMA解释
  • hivemetastore 连接过多导致sql查询慢
  • Fiori APP配置中的Semantic object 小bug
  • 如何避免redis长期运行持久化AOF文件过大的问题:AOF重写
  • 深度学习:基于Qwen复现DeepSeek R1的推理能力
  • 基于mediapipe深度学习的手势数字识别系统python源码
  • 力扣 乘积最大子数组
  • 【动态路由】系统Web URL资源整合系列(后端技术实现)【apisix实现】
  • MySQL8.x版本的新的功能特性总结
  • 提升顾客转化率:融合2+1链动模式AI智能名片与S2B2C商城小程序的创新策略
  • 一文讲明白RAG 与 KAG 的区别:自然语言处理中的知识增强方法对比
  • 文件上传功能(四)——项目集成
  • Hive之分区表
  • 使用sublime_text中,TAB键无效怎么解决???
  • 【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)——4.2 LSTM的引入与解决长期依赖问题的方法】
  • Qt QOpenGLShaderProgram详解
  • Machine Learning:General Guide
  • 探索深度学习与人类智能交互的共生关系与发展路径
  • 【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测