(LLaMa Factory)大模型训练方法--监督微调(Qwen2-0.5B)

1、准备训练数据SFT 的数据格式有多种,例如:Alpaca格式、OpenAI格式等。

#其中Alpaca格式如下:[{"instruction":"human instruction (required)","input":"human input (optional)","output":"model response (required)","system":"system prompt (optional)","history":[[
"human instruction in the first round (optional)","model response in the first round (optional)"],[
"human instruction in the second round (optional)","model response in the second round (optional)"]]}
]

根据以上的数据格式,我们在ModelScope的数据集找到中文医疗对话数据-Chinese-medical-dialogue符合上述格式。

# 使用git命令拉取数据集 至data目录下
git clone https://www.modelscope.cn/datasets/xiaofengalg/Chinese-medical-dialogue.git /mnt/workspace/LLaMA-Factory/data

注册自定义数据 : 在dataset_info.json中添加如下数据集: 

"custom_sft_train_data":{
"file_name":"Chinese-medical-dialogue/data/train_0001_of_0001.json",
"columns":{
"prompt":"instruction",
"query":"input",
"response":"output"}
},

2、配置训练参数

• Model name: Qwen2-0.5B
• Model path: saves/Qwen2-0.5B/full/Qwen2_pretrain_output_demo1
• Finetuning method: full
• Stage : Supervised Fine-Tuning
• Dataset: custom_sft_train_data
• Output dir: Qwen2_sft_output_demo1

 配置参数说明:

• Model path:我们选择第1阶段预训练模型的输出目录。
• Stage:这一阶段,因为我们要进行微调,选择Supervised Fine-Tuning。
• Output dir: 更换一个新的输出路径,以便后续开展第3阶段训练,例如:Qwen2_sft_output_demo1

3、启动训练 :  点击Preview Command预览命令行 , 命令行确认无误后,点击Start即可开启训练。

llamafactory-cli train 
--stage sft 
--do_train True
--model_name_or_path saves/Qwen2-0.5B/full/Qwen2_pretrain_output_demo1
--preprocessing_num_workers 16
--finetuning_type full 
--template default 
--flash_attn auto 
--dataset_dir data 
--dataset custom_sft_train_data 
--cutoff_len 1024
--learning_rate 5e-05
--num_train_epochs 3.0
--max_samples 100000
--per_device_train_batch_size 2
--gradient_accumulation_steps 8
--lr_scheduler_type cosine 
--max_grad_norm 1.0
--logging_steps 5  #每 5 步记录一次训练日志。
--save_steps 100   #每 100 步保存一次模型检查点。这里最好将save_steps 设置大一点,否则训练过程会生成非常多的训练日志,导致硬盘空间不足而训练终止。
--warmup_steps 0
--optim adamw_torch 
--packing False
--report_to none 
--output_dir saves/Qwen2-0.5B/full/Qwen2_sft_output_demo1
--bf16 True
--plot_loss True
--ddp_timeout 180000000
--include_num_input_tokens_seen True 

训练过程中,记得实时关注资源的消耗情况:

  • 显存:使用watch -n 1 nvidia-smi 实时查看显存开销。

  • 硬盘:使用watch -n 1 df -h /mnt 实施查看/mnt分区的磁盘使用情况。

 

历时6小时58分钟后,模型终于训练完毕。(配置的1张4090的卡,显存24GB)

# 验证模型1. 在LLaMA Factory的WebUI界面上,切换至Chat界面
2. Model path: 输入刚才训练模型的输出目录,即saves/Qwen2-0.5B/full/Qwen2_sft_output_demo1
3. 其他配置保持默认不变;
4. 点击Load model,待模型加载成功后,输入看病相关的信息,测试模型的能力。

6、总结

LLaMA-Factory是一个开源的、可自定义的、可扩展的、可部署的、可训练的大模型训练平台。

训练过程的大致步骤为:

  • 按照LLaMA-Factory官方README文档的数据格式,准备训练数据;

  • 按照LlaMA-Factory官方README文档,在的dataset_info.json文件,注册自定义数据

  •  根据训练阶段配置训练参数,包括模型名称、模型路径、训练方法、数据集、输出目录等;

  • 预览训练命名无误后,启动训练。

  • 如果启动训练失败,可以通过切换到启动LLaMA Factory的命令行查看日志信息排查问题。

 

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

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

相关文章

Sojson高级加密技术科普

1. 引言 什么是Sojson? Sojson是一款用于JavaScript代码加密与混淆的工具,它能够有效保护前端代码的知识产权,避免开发者的心血被随意窃取。 为什么需要代码加密? 在当今的互联网环境下,代码被轻易复制、篡改或逆向…

自制简单的图片查看器(python)

图片格式:支持常见的图片格式(JPG、PNG、BMP、GIF)。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…

【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》

引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…

Nginx下proxy_redirect的三种配置方式

Nginx中的proxy_redirect指令,用于修改代理服务器接收到的后端服务器响应中的重定向URL。在代理环境中,若后端返回的重定向URL不符合客户端需求,就用它调整。 语法 proxy_redirect default; proxy_redirect redirect replacement; proxy_…

使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(自动化篇)

7.5. 配图生成 目的:由于小红书发布文章要求图文格式,因此在生成文案的基础上,我们还需要生成图文搭配文案进行发布。 原实现思路: 起初我打算使用deepseek的文生图模型Janus进行本地部署生成,参考博客:De…

HBuilderX中,VUE生成随机数字,vue调用随机数函数

Vue 中可以使用JavaScript的Math.random() 函数生成随机数,它会返回 0 到 1 之间的浮点数, 如果需要0到1000之前的随机数,可以对生成的随机数乘以1000,再用js的向下取整函数Math.floor() 。 let randNum Math.random(); // 生成…

Redis_基础

Redis 命令启动、配置密码 Redis是绿色软件,所以直接解压就能使用 配置文件为:redis.windows.conf 启动redis 服务: redis-server.exe redis.windows.conf启动客户端: redis-cli.exe默认没有给Redis配置密码,所以在…

网络通信基础:端口、协议和七层模型详解,网络安全零基础入门到精通实战教程!

一、端口和协议的概念 1.在网络技术中,端口(Port) 大致有两种意思: 一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。 二是逻辑意义上的端口&…

Bug:Goland debug失效详细解决步骤【合集】

Bug:Goland debug失效详细解决步骤【合集】 今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束。网上搜寻了大量文章,最后得以解决,特此在…

pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网

首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话,那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm:适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…

WordPress Ai插件:支持提示词生成文章和chat智能对话

源码介绍 适用于 WordPress 的 AI 助手开源免费插件展开介绍,包含插件功能、使用说明、注意事项等内容,为 WordPress 用户提供了一个集成多种 AI 模型的工具选择。 插件概述:插件名称为小半 WordPress AI 助手,支持多种 AI 模型&…

Spring Boot02(数据库、Redis)---java八股

数据库相关 Mybatis的优缺点 优点: 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签&am…

【LeetCode】LCR 139. 训练计划 I

题目 教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。 示例 1: 输入:actions [1,2,3,4,5] 输出&#…

波导阵列天线 学习笔记9 使用紧凑高效率馈网的宽带圆极化阵列天线

摘要: 一种宽带圆极化波导阵列天线在本文中提出。所提出的阵列天线包括四个反向对称的(antipodally)脊单元和一个有着插入阶梯腔体的两个正交膜片的紧凑型馈网。两个器件都是宽带的并且它们能独立地或者一起工作。所提出的拓扑给出了一种为大规模阵列的基础的2x2波导…

【AI战略思考15】我对做自媒体视频博主的初步探索和一些思考

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 导言 因为自己找工作可能没那么快和顺利,事实是比我之前想象的要难很多,所以这几天探索了下自己能否尝试做自媒体或者视频博主来尝试赚点钱,如果做…

nodejs:express + js-mdict 网页查询英汉词典,能显示图片

向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict , 实现在线查询英语单词,并能显示图片 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ ├── …

【数据分析】2.数据分析业务全流程

业务流程方法论:3阶段6步骤 一、课程核心内容结构 1. 方法论概述 目标:系统性地解决商业中的关键问题框架:分为三个阶段,每个阶段包含两个步骤适用场景:适用于数据分析师、业务经理等需要通过数据分析支持决策的从业…

【后端】k8s

1. 命令 1.1 获取service服务 获取集群内所有命名空间的service服务 sudo kubectl get service --all-namespaces 获取集群内指定命名空间的service服务 sudo kubectl get service -n命名空间 当权限限制到一个命名空间时,只能使用下面这个 sudo kubectl -n 命名空间 get se…

Mybatis MyBatis框架的缓存 一级缓存

1. 缓存的概念 缓存的概念 在内存中临时存储数据,速度快,可以减少数据库的访问次数。经常需要查询,不经常修改的数据,不是特别重要的数据都适合于存储到缓存中。 2.Mybatis缓存 mybatis包含了一个非常强大的查询缓存特性&#…

Linux csplit 命令实现日志文件的拆分

目录 一. 项目背景二. 通过 csplit 命令按照行数进行切割2.1 步骤分解验证2.2 直接拆分 三. 文件合并后与原文件进行diff3.1 通过 sed 命令进行合并3.2 通过 cat 命令进行合并 一. 项目背景 ⏹需要的问题 项目中需要获取某个war产生的log文件,由于是商用环境的log…