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. 赋予执行权限并运行:

bash 复制代码
chmod +x train_single_gpu.sh
./train_single_gpu.sh

完整脚本如下

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; then
        echo -e "${RED}错误: 未找到nvidia-smi,可能没有可用的GPU。${NC}"
        exit 1
    fi
    
    # 检查模型路径
    if [ ! -d "$MODEL_PATH" ]; then
        echo -e "${RED}错误: 模型路径 '$MODEL_PATH' 不存在。${NC}"
        exit 1
    fi
    
    # 检查DeepSpeed配置文件
    if [ ! -f "$DS_CONFIG_PATH" ]; then
        echo -e "${RED}错误: DeepSpeed配置文件 '$DS_CONFIG_PATH' 不存在。${NC}"
        exit 1
    fi
    
    # 检查输出目录
    if [ ! -d "$(dirname "$OUTPUT_PATH")" ]; then
        echo -e "${YELLOW}创建输出目录: $(dirname "$OUTPUT_PATH")${NC}"
        mkdir -p "$(dirname "$OUTPUT_PATH")"
    fi
    
    echo -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 ]; then
        echo -e "${GREEN}训练成功完成!模型保存在: $OUTPUT_PATH${NC}"
    else
        echo -e "${RED}训练过程中发生错误!${NC}"
        exit 1
    fi
}

# 主函数
main() {
    # 显示系统信息
    echo -e "${YELLOW}===== 系统信息 ====${NC}"
    echo "GPU信息:"
    nvidia-smi | head -n 10
    echo -e "${YELLOW}=================${NC}"
    
    # 检查环境
    check_prerequisites
    
    # 开始训练
    run_training
}

# 执行主函数
main
相关推荐
维核科技2 天前
Llama 3.3 vs Qwen2.5 vs DeepSeek-R1
ai·私有化部署·llama·大模型部署·私有化大模型部署
thesky1234562 天前
27届大模型面试准备(十六):后训练全攻略——SFT、RLHF、DPO、PPO 一次讲透
大模型·sft·rlhf·ppo·dpo·面试准备·后训练
张小泡泡5 天前
AUTO_EVAL:面向大语言模型的多层次自动化评测框架
论文阅读·人工智能·语言模型·自然语言处理·自动化·微调
AI78405 天前
开源模型改写AI格局:Llama、通义千问、Mistral如何挑战闭源巨头
人工智能·开源·llama
leoZ2315 天前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
leoZ2316 天前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
yagami_gagami6 天前
第四届黄河流域公安院校电子物证个人赛服务器取证
linux·服务器·网络·mysql·安全·docker·llama
不喝水的鱼儿7 天前
本地部署 260K 上下文 Qwen-3.6-35B-A3B 与 Ornith-1.0-35B 模型及 VSCode Copilot 参数调优记录
ide·vscode·语言模型·copilot·llama
NutShell Wang8 天前
DeepSeek-V4-Flash正式版深度拆解:不换架构,后训练如何让Agent能力暴涨7倍
人工智能·ai·架构·agent·后训练·deepseek
(轻舟已过万重山)8 天前
第16章 主流开源模型选型:Qwen/LLaMA/GLM/Mistral 怎么选
人工智能·开源·llama