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 可视化模型微调的所有步骤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django 美化使用ModelForm的输入框

在初次使用ModelForm时&#xff0c;我的html文件代码如下&#xff0c;主要内容是显示一个卡片式表单&#xff0c;通过循环遍历 form 对象动态生成表单字段 {% extends layout.html %}{% block content %} <div class"container"><div class"c1"&g…

深度学习框架探秘|Keras:深度学习的魔法钥匙

一、引言&#xff1a;深度学习浪潮中的 Keras 前面的文章我们探秘了深度学习框架中的两大明星框架 —— TensorFlow 和 PyTorch 以及 两大框架的对比 在深度学习的众多框架中&#xff0c;还有一款框架备受开发者们的喜爱 —— Keras 。它就像是一位贴心的助手&#xff0c;为我…

深入解析SVG图片原理:从基础到高级应用

文章目录 引言一、SVG基础概念1.1 什么是SVG&#xff1f;1.2 SVG的优势 二、SVG的基本结构2.1 SVG文档结构2.2 常用SVG元素 三、SVG的工作原理3.1 坐标系与变换3.2 路径与曲线3.3 渐变与滤镜 四、SVG的高级应用4.1 动画与交互4.2 数据可视化4.3 响应式设计 五、SVG的优化与性能…

开源语音克隆项目 OpenVoice V2 本地部署

#本机环境 WIN11 I5 GPU 4060ti 16G 内存 32G #开始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

CANopen 基础

CANopen 是基于控制局域网络&#xff08;CAN&#xff09;开发的一种高层通信协议&#xff0c;广泛应用于工业自动化和嵌入式系统。它通过实现多种设备之间的互操作性&#xff0c;确保了数据传输的高效和可靠性。CANopen 协议在 CAN2.0A 基础上定义了物理层、数据链路层、传输层…

尚硅谷课程【笔记】——大数据之Hadoop【一】

课程视频链接&#xff1a;尚硅谷Hadoop3.x教程 一、大数据概论 1&#xff09;大数据概念 大数据&#xff08;Big Data&#xff09;&#xff1a;指无法再一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发…

海康摄像头IPV6模式,手动,自动,路由公告

海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议&#xff08;IP&#xff09;的第六版&#xff0c;用于替代IPv4&#xff0c;提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接&#xff1a; 手动&#xff1a;用户可…

CAS单点登录(第7版)22.中断通知

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 中断通知 概述 认证中断 CAS 能够暂停和中断身份验证流程以访问外部服务和资源&#xff0c;查询状态和设置&#xff0c;然后指示 CAS 应如何管理和控制 SSO 会话。中断服务能够向用户显示…

SQLMesh 系列教程4- 详解模型特点及模型类型

SQLMesh 作为一款强大的数据建模工具&#xff0c;以其灵活的模型设计和高效的增量处理能力脱颖而出。本文将详细介绍 SQLMesh 模型的特点和类型&#xff0c;帮助读者快速了解其强大功能。我们将深入探讨不同模型类型&#xff08;如增量模型、全量模型、SCD Type 2 等&#xff0…

遵循规则:利用大语言模型进行视频异常检测的推理

文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly &#xff08;正常与异常&#xff09;Abstract and Concrete &#xff08;抽象与具体&#xff09;Human and Environment &#xff08;人类与环境&#xff09; 3…

ISO9001| 分发受控号的详细说明及其管理方法 | QM-001/Rev. 01/002 (2023-10-15)

文章目录 引言I 分发受控号的详细说明及其管理方法1. 分发受控号的作用2. 分发受控号的组成3. 分发受控文件的管理流程4. 分发受控文件的管理工具5. 分发受控文件的示例表格6. ISO 9001 对文件控制的要求II 反例:各部门分发受控号III 常见问题引言 在质量管理体系(如 ISO 900…

CAS单点登录(第7版)18.日志和审计

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 日志和审计 Logging 概述 Logging CAS 提供了一个日志记录工具&#xff0c;用于记录重要信息事件&#xff0c;如身份验证成功和失败;可以对其进行自定义以生成用于故障排除的其他信息。…

机械学习常用的激活函数(ReLU 、Sigmoid、Tanh 、Softmax、Leaky ReLU、GELU、Swish、ELU、线性激活函数)

按照常用度大致从高到低排列的常用激活函数&#xff1a; ReLU 函数&#xff1a;计算简单、收敛速度快&#xff0c;能有效缓解梯度消失问题&#xff0c;在各种神经网络的隐藏层中广泛应用&#xff0c;是目前最常用的激活函数之一。Sigmoid 函数&#xff1a;常被用于将输出转换为…

前端面试题+算法题(二)

一、LeeCode 算法题 1、643. 子数组最大平均数 I 题目&#xff1a;给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。任何误差小于 10-5 的答案都将被视为正确答案。 场景1&#xff1a;输入…

【弹性计算】容器、裸金属

容器、裸金属 1.容器和云原生1.1 容器服务1.2 弹性容器实例1.3 函数计算 2.裸金属2.1 弹性裸金属服务器2.2 超级计算集群 1.容器和云原生 容器技术 起源于虚拟化技术&#xff0c;Docker 和虚拟机和谐共存&#xff0c;用户也找到了适合两者的应用场景&#xff0c;二者对比如下图…

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

在人工智能领域&#xff0c;DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型&#xff0c;各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析&#xff0c;帮助您更好地了解它们的特点和优势。…

DeepSeek 15天指导手册——从入门到精通

大家好&#xff0c;欢迎来到今天的教程&#xff01;前几天发表 DeepSeek 的文章&#xff0c;收到大家的一致好评。 YYDS&#xff01;WPS 集成 DeepSeek&#xff0c;办公从此更智能 DeepSeek使用技巧&#xff1a;9个技巧让AI助手变身超级英雄 今天我们为大家带来的是DeepSeek…

百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中

百问网(100ask)提供的烧写工具的原理 具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool 为了防止上面这个链接失效&#xff0c;我还对上面这个链接指向的页面保存成了mhtml文件&#xff0c;这个mhtml文件的百度网盘下载链接&#xff1a; https://pan.baidu.c…

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者&#xff1a;孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数&#xff08;扩缩容副本&#xff09;1.3、Partition Reassign场景限流1.4、节点内副本移动到不…

初阶c语言(练习题,猜随机数,关机程序)

目录 第一题&#xff0c;使用函数编写一个随机数&#xff0c;然后自己猜&#xff0c;猜随机数 第二道题&#xff08;关机程序&#xff09; 实现代码&#xff08;关机程序&#xff09; 实现代码&#xff08;猜数字&#xff09; 前言&#xff1a; 学习c语言&#xff0c;学习…