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

使用LLaMA-Factory对AI进行认知的微调

使用LLaMA-Factory对AI进行认知的微调

    • 引言
    • 1. 安装LLaMA-Factory
      • 1.1. 克隆仓库
      • 1.2. 创建虚拟环境
      • 1.3. 安装LLaMA-Factory
      • 1.4. 验证
    • 2. 准备数据
      • 2.1. 创建数据集
      • 2.2. 更新数据集信息
    • 3. 启动LLaMA-Factory
    • 4. 进行微调
      • 4.1. 设置模型
      • 4.2. 预览数据集
      • 4.3. 设置学习率等参数
      • 4.4. 预览和执行命令
      • 4.5. 训练完成
    • 5. 与微调后的模型聊天
      • 5.1. 加载模型
      • 5.2. 开始聊天
      • 5.3. 导出模型
      • 5.4. 使用Vllm启动
    • 总结

引言

本文将介绍如何使用LLaMA-Factory对AI进行微调,使其具备“忍者”的认知,并认知其是由“富士电视台”开发的。

image.png

1. 安装LLaMA-Factory

1.1. 克隆仓库

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

1.2. 创建虚拟环境

conda create -n llama_factory python=3.11 -y
conda activate llama_factory

1.3. 安装LLaMA-Factory

pip install -e '.[torch,metrics]'

1.4. 验证

import torch
print(torch.cuda.current_device())
print(torch.cuda.get_device_name(0))
print(torch.__version__)
print(torch.cuda.is_available())

image.png

2. 准备数据

2.1. 创建数据集

进入LLaMA-Factory目录:

cd LLaMA-Factory

复制identity.json并创建identity_ninja.json

cp data/identity.json data/identity_ninja.json

{{name}}{{author}}替换为“忍者”和“富士电视台”:

sed -i 's/{{name}}/一人の忍者/g' data/identity_ninja.json
sed -i 's/{{author}}/フジテレビ/g' data/identity_ninja.json

验证:

head data/identity_ninja.json

image-20250201092802054.png

2.2. 更新数据集信息

编辑data/dataset_info.json,添加新的数据集:

vi data/dataset_info.json

添加以下内容:

  "identity_ninja": {"file_name": "identity_ninja.json"},

3. 启动LLaMA-Factory

启动LLaMA-Factory:

llamafactory-cli webui

在浏览器中访问http://localhost:7860。

4. 进行微调

4.1. 设置模型

设置模型名称和微调方法,本文使用Vicuna-v1.5-7B-Chat作为基础模型。

image.png

4.2. 预览数据集

点击“预览数据集”按钮,确认数据。

image.png

4.3. 设置学习率等参数

设置学习率和训练轮数。

image.png

4.4. 预览和执行命令

设置输出目录,点击“预览命令”按钮确认命令,无误后点击“开始”。

image.png

命令示例:

llamafactory-cli train \--stage sft \--do_train True \--model_name_or_path lmsys/vicuna-7b-v1.5 \--preprocessing_num_workers 16 \--finetuning_type lora \--template vicuna \--flash_attn auto \--dataset_dir data \--dataset identity_ninja \--cutoff_len 2048 \--learning_rate 0.0001 \--num_train_epochs 6.0 \--max_samples 100000 \--per_device_train_batch_size 2 \--gradient_accumulation_steps 2 \--lr_scheduler_type cosine \--max_grad_norm 1.0 \--logging_steps 5 \--save_steps 100 \--warmup_steps 0 \--packing False \--report_to none \--output_dir saves/Vicuna-v1.5-7B-Chat/lora/train_vicuna_7b_identity_ninja_1e-4_epoch6 \--bf16 True \--plot_loss True \--trust_remote_code True \--ddp_timeout 180000000 \--include_num_input_tokens_seen True \--optim adamw_torch \--lora_rank 8 \--lora_alpha 16 \--lora_dropout 0 \--loraplus_lr_ratio 16 \--lora_target all

4.5. 训练完成

训练完成后,会显示以下消息:

image.png

5. 与微调后的模型聊天

5.1. 加载模型

选择“检查点路径”,点击“Chat”选项卡,然后点击“加载模型”。

image.png

5.2. 开始聊天

模型加载完成后,输入问题并确认AI的回答。此时,AI将具备“忍者(一人の忍者)”的认知,并认知其是由“富士电视台(フジテレビ)”开发的。

image.png

5.3. 导出模型

选择“检查点路径”,点击“Export”选项卡,输入“导出目录”,然后点击“导出”。

image.png

导出完成后,会显示“模型导出完成”消息。

5.4. 使用Vllm启动

使用以下命令在Vllm中启动导出的模型:

CUDA_VISIBLE_DEVICES=3,1,0,2 VLLM_USE_V1=1 VLLM_WORKER_MULTIPROC_METHOD=spawn vllm serve /root/HuggingFaceCache/models--lmsys--vicuna-7b-v1.5-sft --trust-remote-code --served-model-name gpt-4 --gpu-memory-utilization 0.98 --tensor-parallel-size 4 --port 8000

总结

通过以上步骤,我们成功使用LLaMA-Factory对AI进行了微调,使其具备特定的认知。希望大家能够尝试并应用这些方法进行更多的定制化。

相关文章:

使用LLaMA-Factory对AI进行认知的微调

使用LLaMA-Factory对AI进行认知的微调 引言1. 安装LLaMA-Factory1.1. 克隆仓库1.2. 创建虚拟环境1.3. 安装LLaMA-Factory1.4. 验证 2. 准备数据2.1. 创建数据集2.2. 更新数据集信息 3. 启动LLaMA-Factory4. 进行微调4.1. 设置模型4.2. 预览数据集4.3. 设置学习率等参数4.4. 预览…...

@Nullable 注解

文章目录 解释 Nullable 注解注解的组成部分:如何使用 Nullable 注解a. 标注方法返回值:b. 标注方法参数:c. 标注字段: 结合其他工具与 Nonnull 配合使用总结 Nullable 注解在 Java 中的使用场景通常与 Nullability(空…...

Arduino大师练成手册 -- 控制 AS608 指纹识别模块

要在 Arduino 上控制 AS608 指纹识别模块,你可以按照以下步骤进行: 硬件连接 连接指纹模块:将 AS608 指纹模块与 Arduino 连接。通常,AS608 使用 UART 接口进行通信。你需要将 AS608 的 TX、RX、VCC 和 GND 引脚分别连接到 Ardu…...

Mask R-CNN与YOLOv8的区别

Mask R-CNN与YOLOv8虽然都是深度学习在计算机视觉领域的应用,但它们属于不同类型的视觉框架,各有特点和优势。 以下是关于 Mask R-CNN 和 YOLOv8 的详细对比分析,涵盖核心原理、性能差异、应用场景和选择建议: 1. 核心原理与功能…...

在Ubuntu上使用Docker部署DeepSeek

在Ubuntu上使用Docker部署DeepSeek,并确保其可以访问公网网址进行对话,可以按照以下步骤进行: 一、安装Docker 更新Ubuntu的软件包索引: sudo apt-get update安装必要的软件包,这些软件包允许apt通过HTTPS使用存储库…...

MySQL的覆盖索引

MySQL的覆盖索引 前言 当一个索引包含了查询所需的全部字段时,就可以提高查询效率,这样的索引又被称之为覆盖索引。 以MySQL常见的三种存储引擎为例:InnoDB、MyISAM、Memory,对于覆盖索引提高查询效率的方式均不同,…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.12 连续数组:为什么contiguous这么重要?

2.12 连续数组:为什么contiguous这么重要? 目录 #mermaid-svg-wxhozKbHdFIldAkj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wxhozKbHdFIldAkj .error-icon{fill:#552222;}#mermaid-svg-…...

在React中使用redux

一、首先安装两个插件 1.Redux Toolkit 2.react-redux 第一步:创建模块counterStore 第二步:在store的入口文件进行子模块的导入组合 第三步:在index.js中进行store的全局注入 第四步:在组件中进行使用 第五步:在组件中…...

lstm预测

import numpy as np import pandas as pd import tensorflow as tf import math import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.layers import LSTM,Activation,Dense,Dropout# 时间序列数据转换为监督学习的格式 def creatXY(d…...

《 C++ 点滴漫谈: 二十五 》空指针,隐秘而危险的杀手:程序崩溃的真凶就在你眼前!

摘要 本博客全面解析了 C 中指针与空值的相关知识,从基础概念到现代 C 的改进展开,涵盖了空指针的定义、表示方式、使用场景以及常见注意事项。同时,深入探讨了 nullptr 的引入及智能指针在提升代码安全性和简化内存管理方面的优势。通过实际…...

【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践

Hi ! 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理(NLP)? 2. NLP的基础技术 2.1 词袋模型(Bag-of-Words,BoW&#xff…...

2025年Android开发趋势全景解读

文章目录 一、界面开发:从"手写代码"到"智能拼装"1.1 Jetpack Compose实战进化1.2 淘汰XML布局的三大信号 二、AI融合开发:无需炼丹的普惠智能2.1 设备端AI三大杀手级应用2.2 成本对比:设备端VS云端AI 三、跨平台演进&am…...

C#面试常考随笔11:Dictionary<K, V>、Hashtable的内部实现原理是什么?效率如何?

Dictionary<K, V> 底层数据结构&#xff1a;使用哈希表&#xff08;Hash Table&#xff09;&#xff0c;由一个数组和链表&#xff08;或在.NET Core 2.1 及之后版本中&#xff0c;当链表长度达到一定阈值时转换为红黑树&#xff09;组成。数组中的每个元素称为一个桶&a…...

Linux防火墙基础

一、Linux防火墙的状态机制 1.iptables是可以配置有状态的防火墙&#xff0c;其有状态的特点是能够指定并记住发送或者接收信息包所建立的连接状态&#xff0c;其一共有四种状态&#xff0c;分别为established invalid new related。 established:该信息包已建立连接&#x…...

Qt u盘自动升级软件

Qt u盘自动升级软件 Chapter1 Qt u盘自动升级软件u盘自动升级软件思路&#xff1a;step1. 获取U盘 判断U盘名字是否正确&#xff0c; 升级文件是否存在。step2. 升级step3. 升级界面 Chapter2 Qt 嵌入式设备应用程序&#xff0c;通过U盘升级的一种思路Chapter3 在开发板上运行的…...

【Conda 和 虚拟环境详细指南】

Conda 和 虚拟环境的详细指南 什么是 Conda&#xff1f; Conda 是一个开源的包管理和环境管理系统&#xff0c;支持多种编程语言&#xff08;如Python、R等&#xff09;&#xff0c;最初由Continuum Analytics开发。 主要功能&#xff1a; 包管理&#xff1a;安装、更新、删…...

Python递归函数深度解析:从原理到实战

Python递归函数深度解析&#xff1a;从原理到实战 递归是计算机科学中重要的编程范式&#xff0c;也是算法设计的核心思想之一。本文将通过20实战案例&#xff0c;带你深入理解Python递归函数的精髓&#xff0c;掌握递归算法的实现技巧。 一、递归函数核心原理 1.1 递归三要…...

OpenGL学习笔记(五):Textures 纹理

文章目录 纹理坐标纹理环绕方式纹理过滤——处理纹理分辨率低的情况多级渐远纹理Mipmap——处理纹理分辨率高的情况加载与创建纹理 &#xff08; <stb_image.h> &#xff09;生成纹理应用纹理纹理单元练习1练习2练习3练习4 通过上一篇着色部分的学习&#xff0c;我们可以…...

【TypeScript】基础:数据类型

文章目录 TypeScript一、简介二、类型声明三、数据类型anyunknownnervervoidobjecttupleenumType一些特殊情况 TypeScript 是JavaScript的超集&#xff0c;代码量比JavaScript复杂、繁多&#xff1b;但是结构更清晰 一、简介 为什么需要TypeScript&#xff1f; JavaScript的…...

Notepad++消除生成bak文件

设置(T) ⇒ 首选项... ⇒ 备份 ⇒ 勾选 "禁用" 勾选禁用 就不会再生成bak文件了 notepad怎么修改字符集编码格式为gbk 如图所示...

如何用LinkSwift解锁九大网盘下载新姿势?完整攻略揭秘

如何用LinkSwift解锁九大网盘下载新姿势&#xff1f;完整攻略揭秘 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

终极MifareOneTool使用指南:零基础玩转MIFARE经典卡的Windows图形化神器

终极MifareOneTool使用指南&#xff1a;零基础玩转MIFARE经典卡的Windows图形化神器 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows&#xff08;停工/最新版v1.7.0&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool 想要…...

基于MCP协议与RAG技术构建智能聊天应用:架构解析与实战指南

1. 项目概述&#xff1a;一个基于MCP协议的RAG聊天应用最近在开源社区里&#xff0c;一个名为gogabrielordonez/mcp-ragchat的项目引起了我的注意。乍一看标题&#xff0c;它融合了当下两个非常热门的技术概念&#xff1a;MCP和RAG。对于从事AI应用开发&#xff0c;特别是希望构…...

基于Adafruit Trinket的光控互动玩具:嵌入式系统入门实战

1. 项目概述&#xff1a;给毛绒玩具注入灵魂几年前&#xff0c;我女儿的一个旧毛绒玩具被冷落在角落&#xff0c;除了偶尔被当作抱枕&#xff0c;几乎失去了“玩具”的活力。这让我萌生了一个想法&#xff1a;能不能用一些简单的电子元件&#xff0c;让这些静态的玩偶重新“活”…...

MPLAB Harmony 2.0固件框架:从MISRA-C合规到图形化开发的嵌入式开发新范式

1. 项目概述&#xff1a;为什么我们需要一个“全功能”的固件框架&#xff1f;如果你和我一样&#xff0c;在PIC32单片机的世界里摸爬滚打过几年&#xff0c;肯定经历过这样的场景&#xff1a;项目启动&#xff0c;面对Microchip提供的海量外设库、驱动代码和中间件&#xff0c…...

3.【Python】Python3 数据类型转换

第一步&#xff1a;分析与整理数据类型转换1. 数据类型转换概述 数据类型转换分为两种&#xff1a; 隐式类型转换&#xff1a;Python 自动完成&#xff0c;无需干预。显式类型转换&#xff1a;使用内置函数手动转换。2. 隐式类型转换 规则&#xff1a;当不同类型的数据进行运算…...

PP 蜂窝板挤出成型工艺原理与关键技术要点

PP 蜂窝板挤出成型工艺原理与关键技术要点摘要&#xff1a;本文从高分子材料加工角度&#xff0c;分析 PP 蜂窝板连续挤出–热成型–复合的工艺原理&#xff0c;重点探讨挤出塑化、蜂窝模具成型、真空定型与冷却、牵引复合及定长裁切五大核心单元的技术要点&#xff0c;并结合大…...

c++ 动态链接器audit c++如何使用ld_audit监控so加载过程

Oracle监听端口被占用导致TNS-12541错误&#xff0c;需检查并更换端口&#xff08;如1522&#xff09;&#xff0c;同步更新listener.ora、tnsnames.ora及JDBC连接串&#xff0c;重启监听&#xff1b;EM Express需单独配置HTTP端口&#xff1b;Windows下还需手动开放防火墙新端…...

基于Dify平台快速构建AI对话机器人:从部署到生产级实践

1. 项目概述与核心价值最近在折腾AI应用落地的过程中&#xff0c;我反复被一个问题困扰&#xff1a;如何把一个强大的大语言模型&#xff08;LLM&#xff09;能力&#xff0c;快速、低成本地封装成一个能实际解决业务问题的对话机器人&#xff1f;自己从零开始搭框架、写API、处…...

Simulink仿真PMSM时,那个神秘的‘4’和‘30/π’到底怎么来的?手把手带你算清楚

Simulink仿真PMSM时关键参数转换原理与实战解析 在永磁同步电机(PMSM)的Simulink仿真过程中&#xff0c;工程师们常常会遇到几个看似"神秘"的增益系数——特别是30/π和4这两个数值。这些参数并非随意设置&#xff0c;而是深植于电机物理本质与单位系统转换的数学表达…...