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.mfbz.cn/a/265.html

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

相关文章

Hapi.js知识框架

一、Hapi.js 基础 1. 核心概念 企业级Node.js框架:由Walmart团队创建,现由社区维护 配置驱动:强调声明式配置而非中间件 插件架构:高度模块化设计 安全优先:内置安全最佳实践 丰富的生态系统:官方维护…

串口模块详细讲解

目录 1.串口介绍 2。STC-ISP串口功能介绍 3.接口及引脚定义 4.串口知识点 4.1 硬件电路 4.2 电平标准 4.3 相关术语 4.4 常见通信接口比较 4.5 51单片机的UART 4.6 串口参数及时序图 4.7 串口模式图 4.8 串口和中断系统 4.9 串口相关寄存器 5.串口向电脑发送信息…

计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释

1、时域(时间域)——自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t)是描述信号在不同时刻取值的函数。 2、频域(频率域)——自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说…

鸿蒙 核心与非核心装饰器

HarmonyOS NEXT 版本中完整的 ArkTS 装饰器分类整理(含核心与非核心装饰器,已剔除废弃特性) 一、核心装饰器(Essential Decorators) 1. 组件基础 装饰器功能Entry应用入口组件,每个模块必须且仅有一个&am…

Spring Boot之Web服务器的启动流程分析

如何判断创建哪种web容器:servlet?reactive? 我们在启动Spring Boot程序的时候,会使用SpringApplication.run方法来启动,在启动流程中首先要判断的就是需要启动什么类型的服务器,是servlet?或者…

影刀RPA开发-采集爬取京东读书书籍

1.采集京东读书 我们先梳理下操作流程 首先,在首页输入要爬取的书籍名称,输入后,搜索 出现搜索结果后,会有很多版本的书籍 我们点击热门筛选,让书记排序,这样可以将最符合我们需求的书籍显示在第一位 点击…

VScode 的插件本地更改后怎么生效

首先 vscode 的插件安装地址为 C:\Users\%USERNAME%\.vscode\extensions 找到你的插件包进行更改 想要打印日志,用下面方法 vscode.window.showErrorMessage(console.log "${name}" exists.); 打印结果 找到插件,点击卸载 然后点击重新启动 …

前端项目2-01:个人简介页面

目录 一.代码显示 二.效果图 三.代码分析 1. 文档声明和 HTML 基本结构 2. CSS 样式部分 全局样式 body 样式 页面主要容器 box 样式 左侧区域 l 样式 右侧区域 r 样式 左侧区域中头像容器 to 样式 头像图片样式及悬停效果 左侧区域中个人信息容器 tit 样式 个人…

针对面试-mysql篇

1.如何定位慢查询? 1.1.介绍一下当时产生问题的场景(我们当时的接口测试的时候非常的慢,压测的结果大概5秒钟)),可以监测出哪个接口,最终因为是sql的问题 1.2.我们系统中当时采用了运维工具(Skywalkin就是2秒,一旦sql执行超过2秒…

无偿帮写毕业论文

以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行,脱产学习这么多年,终于熬出头了,完成毕设后有空就去多看看亲人好友,祝好! 一、找一个论文模板(最好是overleaf) 废话不多说&#…

Spring MVC 根据请求头 (如 Accept) 怎么返回 JSON 或 XML 数据?

Spring MVC 通过 内容协商 (Content Negotiation) 来根据客户端请求的 Accept 头决定返回 JSON、XML 还是其他格式的数据。 以下是核心机制和步骤: 客户端请求中的 Accept 头: 客户端(如浏览器、curl、Postman等)在发起HTTP请求时&#xff0…

Java 线程的堆栈跟踪信息

Java 线程的堆栈跟踪信息,展示了线程的当前状态和执行位置。以下是详细解释: 线程基本信息 "Thread-0" #16 prio5 os_prio0 cpu0.00ms elapsed16.29s tid0x00000243105a4130 nid0x5384 waiting on condition [0x0000007687ffe000]线程名称…