LLaMA-Factory 微调 Qwen2-7B-Instruct

一、系统环境

  • 使用的 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.mzph.cn/pingmian/80874.shtml

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

相关文章

Redis三种高可用模式的使用场景及特点的详细介绍

Redis三种高可用模式的使用场景及特点的详细介绍,结合不同业务需求提供选择建议: 主从模式(Replication) 核心能力:数据冗余备份、读写分离 适用场景: 读多写少:例如内容发布平台、新闻网站等…

通俗易懂版知识点:Keepalived + LVS + Web + NFS 高可用集群到底是干什么的?

实验开始前,先搞懂为什么要部署该集群? 这个方案的目标是让网站 永不宕机,即使某台服务器挂了,用户也感觉不到。它主要涉及 负载均衡(LVS) 高可用(Keepalived) 共享存储&#xff…

Qt中解决UI线程阻塞导致弹窗无法显示的两种方法

在Qt应用程序开发中,我们经常会遇到这样的问题:当执行一个耗时操作时,整个界面会卡住,无法响应任何用户操作,甚至连一个简单的提示弹窗都无法正常显示。本文将介绍两种解决这个问题的方法,并通过完整的代码示例进行说明。 问题描述 先来看一个常见的错误示例: #inclu…

2025年中国DevOps工具选型指南:主流平台能力横向对比

在数字化转型纵深发展的2025年,中国企业的DevOps工具选型呈现多元化态势。本文从技术架构、合规适配、生态整合三个维度,对Gitee、阿里云效(云效DevOps)、GitLab CE(中国版)三大主流平台进行客观对比分析&a…

isp流程介绍(yuv格式阶段)

一、前言介绍 前面两章里面,已经分别讲解了在Raw和Rgb域里面,ISP的相关算法流程,从前面文章里面可以看到,在Raw和Rgb域里面,很多ISP算法操作,更像是属于sensor矫正或者说sensor标定操作。本质上来说&#x…

虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框

虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框1. 退出编辑器时弹出的“Save Content”窗口2. File 菜单中的保存选项3. 区别总结 1. 退出编辑器时弹出的“Save Content”窗口 退出时…

如何判断IP是否被平台标记

一、基础检测:连通性与黑名单筛查 网络连通性测试 Ping与Traceroute:通过命令测试延迟和路由路径,若延迟>50ms或存在异常节点(如某跳延迟>200ms),可能影响可用性。示例命令: bash ping 8.…

零Gas授权实战:用线下签名玩转智能合约 Permit 机制

目录 链下签名背景什么是 Permit ?链下签名应用场景Permit 原理简述实战:从合约到前端完整实现安全注意事项总结链下签名背景 在以太坊智能合约开发中,很多初学者经常面临这样一个问题:ERC20 代币授权必须先调用链上合约的 approve(),再调用链上合约的 transferFrom(),每…

React 简介:核心概念、组件化架构与声明式编程

本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示​例与实战源)。完整介绍…

LeetCode100.7 接雨水

对于这题&#xff0c;有一个非常直观简洁的思路&#xff1a;水量等于柱子围成的体积减去柱子的体积。 首先计算每一个高度的体积&#xff0c;相加即为总体积&#xff0c;减去sum(height)即为水的体积。 class Solution { public:int trap(vector<int>& height) {in…

NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级

NineData 社区版 V4.1.0 正式更新发布。本次通过新增 4 条迁移链路扩展、国产数据库深度适配、敏感数据保护增强‌等升级&#xff0c;进一步巩固了其作为高效、安全、易用的数据管理工具的定位。无论是开发测试、数据迁移&#xff0c;还是多环境的数据管理&#xff0c;NineData…

Go 语言 sqlx 库使用:对 MySQL 增删改查

MySQL 作为目前最流行的开源关系型数据库&#xff0c;其 SQL 语法体系已形成行业标准&#xff0c;相关知识体系庞大且成熟&#xff0c;本文不再对 SQL 基础进行详细展开&#xff0c;建议尚未掌握的读者先行系统学习。本文聚焦于如何使用 Go 语言进行 MySQL 数据库操作&#xff…

单片机-STM32部分:13、PWM

飞书文档https://x509p6c8to.feishu.cn/wiki/NjhuwbVP7iaEOikVK95cmJNLnWf PWM&#xff08;Pulse Width Modulation&#xff09;脉冲宽度调制&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是把每一脉冲宽度均相等的脉冲列作为PWM波形&am…

抽奖系统-奖品-活动

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言获取奖品列表前端页面活动创建需求分析活动创建后端实现1-控制层实现及校验活动活动创建后端实现2-保存信息活动插入活动奖品插入 整合活动信息存入redis测试活…

Dense 与 MoE 系列模型架构的全面对比与应用策略

0. 简介 人工智能领域正经历着一场架构革命&#xff0c;从传统的密集连接模型&#xff08;Dense&#xff09;向混合专家模型&#xff08;Mixture of Experts, MoE&#xff09;的转变。本文将全面剖析这两种模型架构的本质差异、各自优势与挑战&#xff0c;并提供战略性的选择框…

代码随想录算法训练营第四十天

LeetCode题目: 647. 回文子串516. 最长回文子序列 其他: 今日总结 往期打卡 647. 回文子串 跳转: 647. 回文子串 学习: 代码随想录公开讲解 问题: 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。…

Supabase 的入门详细介绍

Supabase 是什么&#xff1f; 简单来说&#xff0c;Supabase 是一个开源的 Firebase 替代品。它提供了一整套后端即服务 (BaaS - Backend as a Service) 的工具&#xff0c;让你能够快速构建应用程序的后端&#xff0c;而无需自己从头搭建和管理服务器、数据库等基础设施。 S…

【MySQL】mysql/bin目录下程序介绍

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【MySQL】探秘&#xff1a;数据库世界的瑞士军刀 MySQL在安装完成后&#xff0c;通常会包含以下程序&#xff0c;以Ubuntu上的mysql为例&#xff0c;我们可以查看到 以下是常用的mysql程序 程序名作用…

IDEA+git将分支合并到主分支、IDEA合并分支

文章目录 一、合并分支二、可能遇到的问题2.1、代码冲突 开发过程中我们可能在开发分支(dev)中进行开发&#xff0c;等上线后将代码合并到主分支(master)中&#xff0c;本文讲解如何在IDEA中将dev分支的代码合并到master分支中。 一、合并分支 功能说明&#xff1a;将dev分支的…

通过Ollama读取模型

通过Ollama读取模型 前言一、查看本地Ollama上有哪些模型二、调用bge-m3模型1、调用模型2、使用bge-m3进行相似度比较 三、调用大模型 前言 手动下载和加载大模型通常需要复杂的环境配置&#xff0c;而使用Ollama可以避免这一问题。本文将介绍如何调用Ollama上的模型。 一、查…