LLaMA-Factory 微调 Qwen2-7B-Instruct

news2025/5/20 16:38:11

一、系统环境

  • 使用的 autoDL 算力平台
    在这里插入图片描述
1、下载基座模型
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com  # (可选)配置 hf 国内镜像站

huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --local-dir /root/autodl-tmp/models/Llama3-8B-Chinese-Chat1

二、llama factory 框架

1、安装框架
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install unsloth
pip install vllm==0.7.3
pip install torch==2.7.0
2、准备数据
  • fintech.json 数据格式如下:
[
    {
        "instruction": "国际经济与贸易专业的就业前景是怎样的?",
        "input": "",
        "output": "国际经济与贸易专业的就业前景较为广阔。随着全球经济一体化的深入发展,国际贸易交流不断增加,对专业人才的需求也日益增长。毕业生可以在跨国公司、国际贸易企业、金融机构以及政府部门等领域找到就业机会。此外,随着国家对外贸易政策的不断调整与改善,国际经济与贸易专业的就业前景也将更加乐观。综合来看,国际经济与贸易专业具有较高的就业率和就业质量,为毕业生提供了良好的职业发展空间。",
        "history": [
            [
                "从事国际经济与贸易专业的人可以有哪些工作机会?",
                "国际经济与贸易专业拥有广泛的就业领域。毕业生可以在进出口公司、物流公司、保险公司、银行中介类货代以及报关员、报检员等职位工作。此外,他们还可以在政府机构如外贸局、外汇局、商检局、海关等部门从事涉外经济贸易的实际业务、管理、调研和宣传策划工作。国际经济与贸易专业还培养了高素质的复合型涉外经贸人才,使他们具备从事国际经贸工作的能力和竞争力。"
            ]
        ]
    },
    {
        "instruction": "列出三种创造性的解决问题的技巧。",
        "input": "",
        "output": "1. 头脑风暴: 这种技巧旨在通过鼓励尽可能多的想法来产生新颖的解决方案。与团队成员合作,不管想法多么离奇都应该提出来。最终,团队成员可以一起筛选想法,找到可行的解决方案。\n2. 逆向思维: 这种技巧要求您从问题的根源入手,从结局反推回去。基于这种思想,您可以回顾失败的原因,找到问题的根本所在,并找到更好的解决方案。\n3. 生命周期思考: 这种技巧倡导从全局的角度思考问题。它要求您考虑问题的各个环节,从问题的产生,发展到最终的解决方案。每一个阶段都需要考虑,确保解决方案是全面和持久的。",
        "history": []
    },
    .
    .
    .
    {
        "instruction": "多元化是否更好",
        "input": "",
        "output": "多元化更好。\n\n通过多元化,不同的观点、文化、价值观和经验可以在一个社会中得到广泛的表达和交流。多元化可以促进创新和进步,因为它鼓励不同的思维方式和方法的交流和融合。不同的人才和智慧可以相互启发和补充,从而推动社会的发展。\n\n多元化还可以提供更多的选择和机会。在一个多元化的社会中,人们可以自由选择自己感兴趣的事业、教育、生活方式等。这种多样性可以促进个人的发展和幸福感,同时也为社会的进步和繁荣创造更多的机会。\n\n此外,多元化还有助于促进社会的稳定和和谐。在一个多元化的社会中,人们可以更好地理解和尊重彼此的差异,增进相互之间的理解和合作。这有助于减少冲突和分裂,促进社会的和谐和稳定。\n\n总的来说,多元化可以带来更多的创新、选择和机会,同时也有助于社会的稳定和和谐。因此,多元化是更好的选择。",
        "history": []
    }]
  • identity.json 数据格式如下:
[
  {
    "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?"
  },
  .
  .
  .
  {
    "instruction": "Who are you?",
    "input": "",
    "output": "I am 东东, an AI assistant developed by 科研🐶. How can I assist you today?"
  }]

将训练数据放在 LLaMA-Factory/data/fintech.json
并且修改数据注册文件:LLaMA-Factory/data/dataset_info.json

"fintech": {
  "file_name": "fintech.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
    "history": "history"
  }
}
3、启动 webui 界面
  • 注意:使用下述命令 将远程端口 转发到 本地端口
ssh -CNg -L 7860:127.0.0.1:7860 -p 12610 root@connect.nmb2.seetacloud.com
  • webui 启动命令
cd LLaMA-Factory
llamafactory-cli webui
  • 启动成功显示
    在这里插入图片描述

四、在 webui 中设置相关参数

  • 语言选择 zh,切换为中文界面
  • 选择支持的模型名称,填上本地模型地址,微调方法选择 lora,RoPE 插值方法 选择 dynamic,加速方式 选择 unsloth,选择数据集,其他选项基本不需要改变。

在这里插入图片描述
在这里插入图片描述

五、进行微调

1、方式一:在 webui 界面上进行微调

前提:已完成 第四步

  • 完成第四步后,点击下方的开始命令,开始训练
    在这里插入图片描述
2、方式二:根据 第四步 生成的参数,使用命令行进行微调

前提:已完成 第四步

  • 完成第四步后,点击下方的预览命令,根据第四步填写的微调参数,生成相关命令;命令如下:
llamafactory-cli train \
    --stage sft \
    --do_train True \
    --model_name_or_path /root/autodl-tmp/models/Llama3-8B-Chinese-Chat \
    --preprocessing_num_workers 16 \
    --finetuning_type lora \
    --template llama3 \
    --rope_scaling dynamic \
    --flash_attn auto \
    --use_unsloth True \
    --dataset_dir data \
    --dataset identity,fintech \
    --cutoff_len 2048 \
    --learning_rate 0.0002 \
    --num_train_epochs 10.0 \
    --max_samples 1000 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 8 \
    --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/Llama-3-8B-Chinese-Chat/lora/train_2025-05-14-20-32-17 \
    --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 \
    --lora_target all

在这里插入图片描述

3、微调中

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、微调前后(聊天结果)进行对比

微调前
  • 模型路径为 微调前模型本地路径,点击 下方chat选项,点击加载模型
    在这里插入图片描述
    在这里插入图片描述
微调后
  • 模型路径为 微调前模型本地路径,检查点路径选择 刚刚微调产生的lora权重,点击 下方chat选项,点击加载模型
    在这里插入图片描述
    在这里插入图片描述

七、开放 openai 式接口

# 指定多卡和端口
CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 
llamafactory-cli api custom.yaml
#custom.yaml的文件内容为上述第五步中,方式二的命令参数

八、模型合并

将 base model 与训练好的 LoRA Adapter 合并成一个新的模型。

1、方式一
  • custom_merge.yml 文件内容如下:

### model
model_name_or_path: /root/autodl-tmp/models/Llama3-8B-Chinese-Chat/ (原始模型路径)
adapter_name_or_path: /root/code/LLaMA-Factory/saves/LLaMA3-8B-Chinese-Chat/lora/train_2024-05-25-20-27-47 (lora权重参数路径)
template: llama3(模版)
finetuning_type: lora(微调类型)

### export
export_dir: /root/autodl-tmp/models/LLaMA3-8B-Chinese-Chat-merged(合并后的路径)
export_size: 4(设置单个文件大小为4g)
export_device: cuda
export_legacy_format: false  
  • 运行下方指令
llamafactory-cli export custom_merge.yml
  • 运行结果
    在这里插入图片描述
2、方式二
  • 模型路径为 微调前模型本地路径,检查点路径选择 刚刚微调产生的lora权重,点击 下方export选项,导出目录填写需要保存的地址,点击开始导出
    在这里插入图片描述
  • 导出结果为:
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac本地docker镜像上传指定虚拟机

在Mac本地将Docker镜像上传至指定虚拟机的完整步骤 1. 在Mac本地保存Docker镜像为文件 通过docker save命令将镜像打包为.tar文件,便于传输至虚拟机。 # 示例:保存名为"my_image"的镜像到当前目录 docker save -o my_image.tar my_image:ta…

从代码学习深度学习 - 风格迁移 PyTorch版

文章目录 前言方法 (Methodology)阅读内容和风格图像预处理和后处理抽取图像特征定义损失函数内容损失 (Content Loss)风格损失 (Style Loss)全变分损失 (Total Variation Loss)总损失函数初始化合成图像训练模型总结前言 大家好!欢迎来到我们的深度学习代码学习系列。今天,…

软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析

软件设计师考试《综合知识》工厂模式与抽象工厂模式考点分析 1. 分值占比与考察趋势(75分制) 年份题量分值占总分比例核心考点2023111.33%抽象工厂模式适用场景2022222.67%工厂方法 vs 抽象工厂区别2021111.33%工厂方法模式结构2020111.33%简单工厂模式…

轻量级离线版二维码工具的技术分析与开发指南

摘要 本文介绍一款基于本地化运行的轻量级二维码处理工具。该工具采用标准QR Code规范实现,具备完整的生成与识别功能。通过实测验证其核心功能表现及适用场景。 主要功能模块分析 编码生成模块:支持文本/URL等多种数据类型转换;提供尺寸调…

机器学习--特征工程具体案例

一、数据集介绍 sklearn库中的玩具数据集,葡萄酒数据集。在前两次发布的内容《机器学习基础中》有介绍。 1.1葡萄酒列标签名: wine.feature_names 结果: [alcohol, malic_acid, ash, alcalinity_of_ash, magnesium, total_phenols, flavanoi…

Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览

文章目录 前言SceneCaptureComponent2D实现步骤新建渲染目标新建材质UI控件激活3DPreview鼠标拖动旋转模型最后前言 我们在(电商展示/角色预览/装备查看)等应用场景中,经常会看到这种3D展示的页面。 即使用相机捕获一个3D的模型的视图,然后把这个视图显示在一个UI画布上,…

电机控制杂谈(25)——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?

1. 背景 最近都在写论文回复信。有个审稿人问了一个问题——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?同时,为什么相电流五、七次谐波电流会在dq基波旋转坐标系构成六次谐波电流? 回答这个问题挺简单的,但在网…

多模态大语言模型arxiv论文略读(七十八)

AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文标题:AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文作者:Zhen Xing, Qi Dai, Zejia Weng, Zuxuan W…

【C语言】易错题 经典题型

出错原因&#xff1a;之前运行起来的可执行程序没有关闭 关闭即可 平均数&#xff08;average&#xff09; 输入3个整数&#xff0c;输出它们的平均值&#xff0c;保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…

说一说Node.js高性能开发中的I/O操作

众所周知&#xff0c;在软件开发的领域中&#xff0c;输入输出&#xff08;I/O&#xff09;操作是程序与外部世界交互的重要环节&#xff0c;比如从文件读取数据、向网络发送请求等。这段时间&#xff0c;也指导项目中一些项目的开发工作&#xff0c;发现在Node.js运用中&#…

应用层协议简介:以 HTTP 和 MQTT 为例

文章目录 应用层协议简介&#xff1a;什么是应用层协议&#xff1f;为什么需要应用层协议&#xff1f;什么是应用层协议&#xff1f;为什么需要应用层协议&#xff1f; HTTP 协议详解HTTP 协议特点HTTP 工作的基本原理HTTP 请求与响应示例为什么 Web 应用基于 HTTP 请求&#x…

LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串

LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复&#xff08;重复的话需要执行去重操作&#xff09;&#xff0c;且元素都为正整数&#xff08;如果存在0&#xff0c;则会出现死循环&#xff09;。 思路1&#xff1a;暴力解法 对最后结果进行去重 每一…

如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保

了解如何在 Windows 11 或 10 上安装 Fliqlo,为您的 PC 或笔记本电脑屏幕添加一个翻转时钟屏保以显示时间。 Fliqlo 是一款适用于 Windows 和 macOS 平台的免费时钟屏保。它也适用于移动设备,但仅限于 iPhone 和 iPad。Fliqlo 的主要功能是在用户不活动时在 PC 或笔记本电脑…

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应

在汽车应用中&#xff0c;轮速传感器可用于车轮速度感应&#xff0c;为 ABS、ESC 等安全系统提供精确的轮速信息&#xff0c;帮助这些系统更好地发挥作用&#xff0c;在紧急制动或车辆出现不稳定状态时&#xff0c;及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…

小程序弹出层/抽屉封装 (抖音小程序)

最近忙于开发抖音小程序&#xff0c;最想吐槽的就是&#xff0c;既没有适配的UI框架&#xff0c;百度上还找不到关于抖音小程序的案列&#xff0c;我真的很裂开啊&#xff0c;于是我通过大模型封装了一套代码 效果如下 介绍 可以看到 这个弹出层是支持关闭和标题显示的&#xf…

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…

命令拼接符

Linux多命令顺序执行符号需要记住5个 【&#xff5c;】【||】【 ;】 【&】 【&&】 &#xff0c;在命令执行里面&#xff0c;如果服务器疏忽大意没做限制&#xff0c;黑客通过高命令拼接符&#xff0c;可以输入很多非法的操作。 ailx10 网络安全优秀回答者 互联网…

【通用智能体】Lynx :一款基于终端的纯文本网页浏览器

Lynx &#xff1a;一款基于终端的纯文本网页浏览器 一、Lynx简介二、应用场景及案例场景 1&#xff1a;服务器端网页内容快速查看场景 2&#xff1a;网页内容快速提取场景 3&#xff1a;表单提交与自动化交互场景 4&#xff1a;网络诊断与调试场景 5&#xff1a;辅助工具适配 三…

51单片机的lcd12864驱动程序

#include <reg51.h> #include <intrins.h>#define uchar

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…