LLaMA-Factory 单卡后训练微调Qwen3完整脚本

LLaMA-Factory 单卡后训练微调Qwen3完整脚本

flyfish

使用说明

  1. 将下面代码保存为 train_single_gpu.sh

  2. 修改脚本中的以下参数:
    MODEL_PATH:模型路径
    DS_CONFIG_PATH:DeepSpeed配置文件路径
    OUTPUT_PATH:输出目录路径
    --dataset erfen:替换为实际数据集名称 这里是erfen

  3. 赋予执行权限并运行:

chmod +x train_single_gpu.sh
./train_single_gpu.sh

完整脚本如下

#!/bin/bash# 单显卡分布式训练脚本
# 确保您已安装所需依赖:torch, deepspeed, transformers 等# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # 无颜色# 定义基础变量
NPROC_PER_NODE=1  # 单显卡
NNODES=1
NODE_RANK=0
MASTER_ADDR="localhost"
MASTER_PORT=29500  # 随机端口,确保未被占用# 模型和数据集配置
MODEL_PATH="/media/user/models/Qwen/Qwen3-8B/"  # 替换为您的模型路径
DS_CONFIG_PATH="examples/deepspeed/ds_z3_config.json"  # 替换为您的DeepSpeed配置文件路径
OUTPUT_PATH="./output/sft_qwen3_8b"  # 输出路径# 检查必要的文件和路径
check_prerequisites() {echo -e "${YELLOW}检查环境和文件...${NC}"# 检查GPU是否可用if ! command -v nvidia-smi &> /dev/null; thenecho -e "${RED}错误: 未找到nvidia-smi,可能没有可用的GPU。${NC}"exit 1fi# 检查模型路径if [ ! -d "$MODEL_PATH" ]; thenecho -e "${RED}错误: 模型路径 '$MODEL_PATH' 不存在。${NC}"exit 1fi# 检查DeepSpeed配置文件if [ ! -f "$DS_CONFIG_PATH" ]; thenecho -e "${RED}错误: DeepSpeed配置文件 '$DS_CONFIG_PATH' 不存在。${NC}"exit 1fi# 检查输出目录if [ ! -d "$(dirname "$OUTPUT_PATH")" ]; thenecho -e "${YELLOW}创建输出目录: $(dirname "$OUTPUT_PATH")${NC}"mkdir -p "$(dirname "$OUTPUT_PATH")"fiecho -e "${GREEN}环境检查完成,准备开始训练...${NC}"
}# 主训练函数
run_training() {echo -e "${YELLOW}开始单显卡分布式训练...${NC}"# 定义分布式参数DISTRIBUTED_ARGS="--nproc_per_node $NPROC_PER_NODE \--nnodes $NNODES \--node_rank $NODE_RANK \--master_addr $MASTER_ADDR \--master_port $MASTER_PORT"# 运行训练命令torchrun $DISTRIBUTED_ARGS src/train.py \--deepspeed $DS_CONFIG_PATH \--stage sft \--do_train \--use_fast_tokenizer \--flash_attn auto\--model_name_or_path $MODEL_PATH \--dataset erfen \--template qwen \--finetuning_type lora \--lora_target q_proj,v_proj \--output_dir $OUTPUT_PATH \--overwrite_cache \--overwrite_output_dir \--warmup_steps 100 \--weight_decay 0.1 \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--ddp_timeout 9000 \--learning_rate 5e-6 \--lr_scheduler_type cosine \--logging_steps 1 \--cutoff_len 4096 \--save_steps 1000 \--plot_loss \--num_train_epochs 3 \--bf16# 检查训练是否成功if [ $? -eq 0 ]; thenecho -e "${GREEN}训练成功完成!模型保存在: $OUTPUT_PATH${NC}"elseecho -e "${RED}训练过程中发生错误!${NC}"exit 1fi
}# 主函数
main() {# 显示系统信息echo -e "${YELLOW}===== 系统信息 ====${NC}"echo "GPU信息:"nvidia-smi | head -n 10echo -e "${YELLOW}=================${NC}"# 检查环境check_prerequisites# 开始训练run_training
}# 执行主函数
main

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

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

相关文章

AI自动化神器-DroidRun使用体验

引言 DroidRun 是一个强大的框架,用于通过 LLM 代理控制 Android 设备。它允许您使用自然语言命令自动化 Android 设备交互。 特点 使用自然语言命令控制 Android 设备 支持多个 LLM 提供商(OpenAI、Anthropic、Gemini) 易于使用的 CLI 用于自定义自动化的可扩…

免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成

前言 在现代办公环境中,高效的数据处理和文档管理是提高工作效率的关键。GC-Prevue是一款专为Windows系统设计的办公辅助软件,软件下载地址安装包 它通过一系列实用的功能,帮助用户更高效地处理和管理文档,提升整体办公效率。 软…

Java SE--运算符和逻辑控制

大多数和c语言一样 新增补充&#xff1a; 一.运算符 1.左移&#xff08;<<&#xff09; 结果公式&#xff1a; n*2^x (n代表所要位移的数&#xff0c;x代表位移几位) 2.右移&#xff08;>>&#xff09; 结果公式&#xff1a; n/2*x (n代表所要位移的数&a…

如何配置core dump生成

文章目录 **一、临时配置&#xff08;当前会话有效&#xff09;**1. **设置core文件大小限制**2. **设置core文件命名格式&#xff08;可选&#xff09;** **二、永久配置&#xff08;所有会话生效&#xff09;**1. **修改系统限制配置**2. **修改内核参数** **三、高级配置选项…

小程序包上传大小超限制处理

背景。想要进行真机测试&#xff0c;体验版。但是单机上传操作之后。提示超大晓限制。上传操作 完成填写后上传 上传后超过限制。能看到图片下方有错误提示。可以根据提示处理包大小问题。 解决方案&#xff1a;待续

JS | 动态生成函数 和 保存局部变量

动态生成函数 和 保存局部变量&#xff0c;适用于 闭包 和 高阶函数&#xff0c;存在于异步编程、事件处理、回调函数以及函数式编程中。 动态生成函数&#xff1a;运行时创建函数。 闭包&#xff1a;创建一个可以访问外部作用域变量的函数。 Function 构造函数&#xff1a;使…

设计模式(七)

迭代器模式&#xff08;Iterator Pattern&#xff09;详解 一、核心概念 迭代器模式提供一种方法来顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露该对象的内部表示。该模式将遍历逻辑封装在迭代器对象中&#xff0c;使聚合对象和遍历逻辑分离。 核心组件&#xf…

24年OPPO秋季笔试题

257. 小欧过河 链接&#xff1a;https://kamacoder.com/problempage.php?pid1337 思路&#xff1a;这道题的实际需要求的就是在两个11之间&#xff0c;最多能有多少个0。可以记录在遍历序列的时候&#xff0c;记录有最多个0的1的两个下标&#xff0c;最后再返回其差值。要注…

处理Lombok的一个小BUG

对于Lombok报错的修改 一、问题描述 在使用IDEA创建spring boot项目时如果你勾选了Lombok&#xff0c;生成的Lombok会随着maven的刷新而改变处理器的扫描路径&#xff0c;从项目类变到自定义的处理器路径 二、原因与解决方法 原因就是这里写了Lombok的路径才会导致你每次刷新都…

【Java入门到精通】(一)Java发展历程与环境搭建指南

一、Java的发展 Java是在1991年由SUN公司的James Gosling&#xff08;Java之父&#xff09;及其团队所研发的一种编程语言&#xff0c;第一个版本耗时18个月&#xff0c;最开始命名为Oak&#xff08;一种橡树&#xff09;。Java现在广泛应用于各种大型互联网应用&#xff0c;其…

【RK3568+PG2L50H开发板实验例程】Linux部分/UAR读写案例

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 1.1. 案例简介 本案例旨在介绍如何测试开发板上的 UART 串口通信功能。 开发板支持的串口及其对应的设备节点如下表所…

Webpack 中的 Loader 和 Plugin 全面详解

&#x1f3af; Webpack 中的 Loader 和 Plugin 全面详解 &#x1f4cc; 整理不易&#xff0c;记得收藏、点赞再加关注&#xff0c;后续还会更新更多实战文档&#xff01; Webpack 是现代前端构建体系的核心工具&#xff0c;其中 Loader 和 Plugin 是其功能扩展的两大支柱。它们…

主流分布式中间件及其选型

分布式架构中的中间件技术 在互联网公司的分布式架构中&#xff0c;中间件是支撑系统高可用、高并发、可扩展的核心组件。这些中间件针对分布式环境下的共性问题&#xff08;如通信、数据一致性、资源调度等&#xff09;提供标准化解决方案&#xff0c;极大降低了分布式系统的…

设备需求极致紧凑的空间体验,我们该如何解决?

在自动化集成过程&#xff0c;往往会碰到设备对控制系统体积有极致要求的情况&#xff0c;面对这样的挑战&#xff0c;如何解决&#xff1f; 项目背景与需求分析 在自动化集成过程&#xff0c;往往会碰到设备对控制系统体积有极致要求的情况&#xff0c;面对这样的挑战&#x…

Kotlin扩展函数与属性

扩展函数和属性是Kotlin中最具特色的功能之一&#xff0c;它们允许我们在不修改原有类的情况下为类添加新功能。这种设计既保持了类的封装性&#xff0c;又提供了强大的扩展能力。 一、扩展函数&#xff1a;为现有类添加新行为 1.1 基础扩展函数 扩展函数允许我们为任何类&am…

厨师上门做饭小程序源码php方案

厨师上门做饭小程序源码&#xff0c;开发语言后端php&#xff0c;前端uniapp。可二开定制 三个端&#xff1a;用户端师傅端小程序&#xff0c;pc管理后台。 一 用户端 1.单点大厨&#xff1a;选择厨师预约下单&#xff0c;查看厨师评价、厨师的套餐。 2.点套餐&#xff1a;选择…

LLM大模型如何访问MySQL业务数据库

目录 一、LLM大模型如何访问MySQL业务数据库 1.1 为什么需要SQL Agent? 1.2 什么是 create_sql_agent&#xff1f; 1.3 什么是SQLDatabaseToolkit? 二、SQL Agent智能体操作MySQL数据库 三、本地启动服务 验证效果 四、怎么提高SQL Agent智能体的回复准确性&#xff1…

MySQL(112)如何选择读写分离策略?

选择读写分离策略是实施读写分离的关键一步。常见的读写分离策略包括简单的读写分离和基于负载均衡的读写分离。为了实现这些策略&#xff0c;我们需要动态地选择数据源。下面详细介绍如何实现基于Spring Boot的读写分离&#xff0c;并结合代码示例展示不同策略的实现。 读写分…

日志-解决Linux因target is busy无法卸载硬盘/分区的问题 - PHP持续占用分区

效果图 写在前面 此次遇到的问题是&#xff0c;php-fpm持续占用设备/mnt/disk1&#xff0c;强制杀死php所有进程后&#xff0c;依然会自动产生新的进程再次霸占分区&#xff0c;导致设备无法卸载umount。思路是解决谁在不停的捣乱。 步骤 核心&#xff1a; 挂载文件系统到指定…

Linux系统权限维持篇

Openssh后门 重新安装自定义的openssh&#xff0c;达到记录账户密码&#xff0c;也可以采用万能密码连接的功能 1、登录方式 2、登录软件 3、登录机制 环境准备 yum -y install openssl openssl-devel pam-devel zlib zlib-devel yum -y install gcc gcc-c makewget http://c…