当前位置: 首页 > article >正文

LLaMA-Factory SFT训练中断排查与恢复:从‘僵尸进程’到成功续训的全记录

LLaMA-Factory SFT训练中断排查与恢复实战指南当你正在全神贯注地进行LLaMA模型的SFT微调时突然发现训练进程停滞不前GPU显存依然占用但数据不再流动——这种僵尸状态令人抓狂。本文将带你深入排查这类问题并提供一套完整的恢复训练方案。1. 训练中断的典型症状与初步诊断训练中断往往不会直接报错退出而是进入一种假死状态。以下是几种常见表现日志停滞日志文件最后几行显示正常没有error或warning信息资源占用GPU显存保持占用状态但利用率降至0%进程存活llamafactory-cli进程仍在运行但CPU使用率极低遇到这种情况首先检查两个关键文件ls -l trainer_log.jsonl all_results.json这两个文件的状态组合能告诉我们训练的真实情况文件状态组合含义trainer_log.jsonl存在all_results.json不存在训练未完成可以恢复两者都存在训练已完成无需恢复两者都不存在训练未开始或严重错误2. 深入分析检查点文件LLaMA-Factory在训练过程中会定期保存检查点通常存储在checkpoint-数字格式的文件夹中。一个完整的检查点应包含pytorch_model.bin模型权重optimizer.pt优化器状态scheduler.pt学习率调度器状态trainer_state.json训练状态元数据验证检查点完整性的快速方法checkpoint_dircheckpoint-300 # 示例检查点 required_files(pytorch_model.bin optimizer.pt scheduler.pt trainer_state.json) for file in ${required_files[]}; do if [ ! -f ${checkpoint_dir}/${file} ]; then echo 检查点不完整缺少 ${file} exit 1 fi done echo 检查点完整可以恢复训练3. 自动化恢复训练方案手动恢复训练容易出错下面提供一个健壮的自动化脚本#!/bin/bash # 配置参数 save_path./output model_name_or_pathmeta-llama/Llama-2-7b-hf dataset_dir./data alpaca_dataset_namealpaca_data templatellama2 log_dir./logs # 自动检测最新检查点 resume_from_checkpointNone if [ ! -f ${save_path}/all_results.json ] [ -f ${save_path}/trainer_log.jsonl ]; then # 获取数字最大的检查点文件夹 max_checkpoint$(find ${save_path} -maxdepth 1 -type d -name checkpoint-* | awk -F checkpoint- {print $2} | sort -n | tail -1) if [ -n ${max_checkpoint} ]; then resume_from_checkpoint${save_path}/checkpoint-${max_checkpoint} echo 检测到可恢复的检查点: ${resume_from_checkpoint} else echo 未找到有效检查点将从头开始训练 fi fi # 训练命令 train_cmdllamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path ${model_name_or_path} \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template ${template} \ --flash_attn auto \ --dataset_dir ${dataset_dir} \ --dataset ${alpaca_dataset_name} \ --cutoff_len 2048 \ --learning_rate 2e-05 \ --num_train_epochs 2.0 \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 4 \ --lr_scheduler_type cosine \ --max_grad_norm 1.0 \ --logging_steps 5 \ --save_steps 100 \ --warmup_steps 100 \ --packing False \ --report_to none \ --output_dir ${save_path} \ --fp16 True \ --plot_loss True \ --trust_remote_code True \ --ddp_timeout 180000000 \ --include_num_input_tokens_seen True \ --optim adamw_torch \ --lora_rank 16 \ --lora_alpha 32 \ --lora_dropout 0 \ --lora_target all \ --val_size 0.1 \ --eval_strategy steps \ --eval_steps 100 \ --per_device_eval_batch_size 1 # 如果找到检查点添加恢复参数 if [ ${resume_from_checkpoint} ! None ]; then train_cmd${train_cmd} --resume_from_checkpoint ${resume_from_checkpoint} fi # 执行训练 eval ${train_cmd} ${log_dir}/sft.log 21这个脚本实现了以下智能检测通过检查all_results.json和trainer_log.jsonl判断训练是否完成自动查找最新的有效检查点根据检测结果决定是恢复训练还是从头开始4. 预防训练中断的最佳实践与其在中断后恢复不如从一开始就做好预防措施硬件配置建议使用ECC内存的服务器级GPU确保电源稳定最好配备UPS监控GPU温度避免过热降频软件配置优化# 在训练配置中添加这些参数可提高稳定性 training_args { ddp_timeout: 3600, # 增加分布式训练超时 gradient_checkpointing: True, # 减少显存使用 fp16: True, # 混合精度训练 save_strategy: steps, save_steps: 500, # 更频繁的保存检查点 logging_steps: 50, resume_from_checkpoint: True # 默认尝试恢复 }监控方案使用nvidia-smi -l 1实时监控GPU状态设置日志轮转避免单个日志文件过大配置训练状态心跳检测如# 简易心跳检测脚本 while true; do last_log$(tail -n 1 trainer_log.jsonl) if [ $(date -d $(echo $last_log | jq -r .time) %s) -lt $(date -d 5 minutes ago %s) ]; then echo 训练可能已停滞最后日志时间: $(echo $last_log | jq -r .time) # 自动恢复逻辑... fi sleep 300 done5. 高级调试技巧当标准恢复方法无效时可以尝试这些高级手段检查点完整性验证import torch from transformers import LlamaForCausalLM def validate_checkpoint(checkpoint_path): try: model LlamaForCausalLM.from_pretrained(checkpoint_path) print(f检查点 {checkpoint_path} 加载成功) return True except Exception as e: print(f检查点 {checkpoint_path} 损坏: {str(e)}) return False手动修复训练状态 有时trainer_state.json可能损坏可以手动编辑{ epoch: 1.5, global_step: 1500, max_steps: 2000, log_history: [...], best_metric: null, best_model_checkpoint: null }关键字段说明global_step恢复后将从这个步骤继续epoch当前epoch的小数表示进度max_steps总训练步数分布式训练恢复特别注意事项 在多GPU环境中确保所有进程都能访问检查点路径并添加这些参数llamafactory-cli train \ --resume_from_checkpoint ${checkpoint_path} \ --ddp_find_unused_parameters False \ --local_rank ${LOCAL_RANK} \ ...在实际项目中我发现设置--save_steps为适当值如500能在恢复灵活性和存储开销间取得平衡。同时定期手动备份关键检查点也是个好习惯。

相关文章:

LLaMA-Factory SFT训练中断排查与恢复:从‘僵尸进程’到成功续训的全记录

LLaMA-Factory SFT训练中断排查与恢复实战指南 当你正在全神贯注地进行LLaMA模型的SFT微调时,突然发现训练进程停滞不前,GPU显存依然占用但数据不再流动——这种"僵尸状态"令人抓狂。本文将带你深入排查这类问题,并提供一套完整的恢…...

AI辅助开发:让快马AI为你的clawhub skill添加智能标签与内容摘要

今天想和大家分享一个最近在做的项目优化——如何用AI给clawhub技能平台添加智能标签和内容摘要功能。作为一个开发者社区,clawhub上每天都有大量技能分享,但手动打标签和写摘要实在太费时间了。正好发现InsCode(快马)平台内置了多种AI模型,就…...

新手零基础入门:用快马ai生成win10系统openclaw安装图文指南代码

作为一个刚接触自动化测试的新手,我在Windows 10上安装OpenClaw时踩了不少坑。环境配置、依赖冲突、路径问题...每一步都可能让初学者抓狂。后来我发现用InsCode(快马)平台可以快速生成图文并茂的安装指南代码,把复杂流程拆解成可执行的步骤脚本&#xf…...

告别Python!用C语言和llama.cpp API打造你的第一个本地大模型应用(附完整代码)

从Python到C语言:用llama.cpp构建高性能大模型推理引擎 当Python成为大模型开发的主流选择时,性能瓶颈也随之而来。对于需要低延迟、高吞吐的生产环境,C语言的性能优势开始显现。本文将带你从零开始,用llama.cpp的C API构建一个完…...

为什么说C#是Windows开发者的瑞士军刀?WPF、ASP.NET实战解析

为什么说C#是Windows开发者的瑞士军刀?WPF、ASP.NET实战解析 在Windows生态系统中,C#始终保持着不可替代的地位。这门由微软精心设计的语言,从2000年诞生至今,已经发展成为企业级应用、桌面程序和Web服务的全能选手。尤其对于Win…...

新手编程入门:用快马AI快速生成你的第一个龙虾美食展示网页

今天想和大家分享一个特别适合编程新手的实践项目——用纯HTML和CSS制作一个龙虾美食展示网页。作为一个刚入门的前端学习者,我发现这个项目既能巩固基础,又能做出看得见的成果,特别有成就感。 项目构思与结构设计 首先明确网页的基本框架。…...

Phi-4-mini-reasoning教育科技:智能错题本中归因分析与解法推荐引擎

Phi-4-mini-reasoning教育科技:智能错题本中归因分析与解法推荐引擎 1. 模型介绍与教育应用价值 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别适合数学题、逻辑题等多步分析场景。在教育科技领域,它为解决传统错题本"…...

别再死记硬背了!用sklearn的LogisticRegression搞定手写数字识别,附完整代码与参数调优心得

逻辑回归实战:从参数困惑到手写数字识别调优指南 当你第一次面对sklearn的LogisticRegression那十几个参数时,是否感到无从下手?特别是当官方文档用专业术语解释solver、C、max_iter时,大多数教程只会告诉你"照这样设置就行&…...

实战应用:基于快马打造社交媒体稀有符号昵称生成器

今天想和大家分享一个特别实用的工具开发过程——用InsCode(快马)平台快速搭建社交媒体稀有符号昵称生成器。作为一个经常混迹各种社交平台的用户,我发现在微信、微博、游戏里想取个与众不同的昵称实在太难了,常规字符根本不够炫酷,而手动组合…...

Applio实时语音处理揭秘:低延迟直播变声技术

Applio实时语音处理揭秘:低延迟直播变声技术 【免费下载链接】Applio A simple, high-quality voice conversion tool focused on ease of use and performance. 项目地址: https://gitcode.com/gh_mirrors/ap/Applio Applio是一款专注于易用性和高性能的实时…...

ai赋能mathtype:基于快马多模型打造能听懂人话的智能公式编辑器

最近在做一个数学公式编辑器的AI增强项目,发现结合自然语言处理和公式识别的技术特别有意思。这个项目主要想解决几个痛点:普通用户记不住LaTeX语法、手动输入公式容易出错、查找相关数学知识不方便。下面分享下我的实现思路和开发过程。 自然语言转公式…...

深入解析Realtek rtw89无线驱动架构:从WiFi 6到WiFi 7的技术演进与性能调优

深入解析Realtek rtw89无线驱动架构:从WiFi 6到WiFi 7的技术演进与性能调优 【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89 在无线通信技术快速发展的今天,WiFi 6和W…...

TQVaultAE:3大突破彻底解放《泰坦之旅》装备管理

TQVaultAE:3大突破彻底解放《泰坦之旅》装备管理 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 在《泰坦之旅》的冒险旅程中,每个玩家都曾面临装备管…...

如何快速掌握Unity Mod Manager:新手的完整入门指南

如何快速掌握Unity Mod Manager:新手的完整入门指南 【免费下载链接】unity-mod-manager UnityModManager 项目地址: https://gitcode.com/gh_mirrors/un/unity-mod-manager 还在为Unity游戏模组管理而烦恼吗?Unity Mod Manager正是你需要的终极解…...

如何用一个USB设备打造你的随身操作系统实验室?Portable-VirtualBox全攻略

如何用一个USB设备打造你的随身操作系统实验室?Portable-VirtualBox全攻略 【免费下载链接】Portable-VirtualBox Portable-VirtualBox is a free and open source software tool that lets you run any operating system from a usb stick without separate instal…...

JavaScript中的面板拖动与调整大小

介绍 在现代的Web应用中,面板的拖动和调整大小是一个常见的需求。用户希望能够通过拖动边界线来改变面板的尺寸,尤其是在具有多面板布局的应用中。这篇文章将详细探讨如何使用JavaScript实现这一功能,并结合一个实际案例进行说明。 问题描述 用户遇到的问题是无法通过拖动…...

深入解析gqlalchemy的唯一性约束

在使用gqlalchemy的对象图映射(OGM)和Cypher查询时,如何正确处理节点属性的唯一性约束是一个常见但易混淆的问题。本文将通过一个具体的供应链实体建模的实例,详细解释这些约束的应用和可能遇到的坑。 背景介绍 假设我们正在构建一个供应链管理系统,其中包含制造商、供应…...

一站式歌词提取解决方案:163MusicLyrics自动化歌词获取与处理工具

一站式歌词提取解决方案:163MusicLyrics自动化歌词获取与处理工具 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 163MusicLyrics是一款专业的跨平台歌词提取…...

TranslucentTB:3分钟让Windows任务栏颜值蜕变的轻量神器

TranslucentTB:3分钟让Windows任务栏颜值蜕变的轻量神器 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在忍受Windows任务…...

终极PrismLauncher架构解析:从源码到实践的Minecraft启动器构建指南

终极PrismLauncher架构解析:从源码到实践的Minecraft启动器构建指南 【免费下载链接】PrismLauncher A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC) 项目地址: https://gitc…...

python-langchain框架(3-9-word文档加载 )

二、基于 LangChain 的功能亮点1. 原生 LangChain 组件,开箱即用直接使用 LangChain 社区提供的专业文档加载器,属于框架原生支持能力,无需自己编写解析逻辑,与 LangChain 整个 AI 开发生态无缝衔接。2. 纯文本精准提取&#xff0…...

PostgreSQL 17安装后必做的5件事:从安全加固到性能调优(附pg_hba.conf配置详解)

PostgreSQL 17安装后必做的5件事:从安全加固到性能调优 刚完成PostgreSQL 17的安装只是数据库旅程的第一步。要让这个强大的关系型数据库真正发挥生产级效能,还需要一系列精细化的配置。本文将带你完成五个关键步骤,从安全策略到性能参数&…...

Qwen2.5-VL-7B-Instruct-GPTQ入门指南:用vLLM+Chainlit轻松玩转多模态AI

Qwen2.5-VL-7B-Instruct-GPTQ入门指南:用vLLMChainlit轻松玩转多模态AI 1. 快速了解Qwen2.5-VL-7B-Instruct-GPTQ Qwen2.5-VL-7B-Instruct-GPTQ是一款基于Qwen2.5-VL-7B-Instruct模型的4bit量化版本,专门用于图文对话任务。这个模型通过AngelSlim技术进…...

OpenClaw人人养虾:macOS 开发环境设置

本指南介绍从源代码构建和运行 OpenClaw macOS 应用所需的步骤。 前置条件 在构建应用之前,请确保已安装以下工具: Xcode 26.2:Swift 开发所需。Node.js 22 和 pnpm:gateway、CLI 和打包脚本所需。 1. 安装依赖 安装项目级依…...

Asian Beauty Z-Image Turbo效果展示:对比普通Z-Image的东方特征增强效果

Asian Beauty Z-Image Turbo效果展示:对比普通Z-Image的东方特征增强效果 在AI图像生成领域,我们经常遇到一个问题:通用模型生成的东方人像往往缺乏那种独特的东方美学特征,要么过于西方化,要么缺乏真实感。Asian Bea…...

发票识别小助手:用OCR文字识别镜像自动读取发票信息

发票识别小助手:用OCR文字识别镜像自动读取发票信息 1. 项目背景与价值 在日常财务工作中,发票信息录入是一项耗时且容易出错的任务。传统的人工录入方式不仅效率低下,还容易因疲劳导致数据错误。OCR(光学字符识别)技…...

SMS-Activate接码避坑指南:为什么你总收不到验证码?网络、号码选择与退款机制详解

SMS-Activate接码实战优化:从网络配置到号码选择的深度避坑手册 每次点击"获取验证码"按钮后的漫长等待,就像一场数字时代的赌博——你永远不知道这次是顺利通关还是再次掉进验证码黑洞。作为全球开发者、跨境电商从业者和隐私需求者的"数…...

本地化图片翻译开源工具:漫画翻译与OCR识别的本地化部署方案

本地化图片翻译开源工具:漫画翻译与OCR识别的本地化部署方案 【免费下载链接】manga-image-translator Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ (no longer working) 项目地址: https://gitcode.com/gh_mirrors/ma/manga-image…...

突破单机限制:Nucleus Co-Op如何让4人同屏游戏从梦想照进现实?

突破单机限制:Nucleus Co-Op如何让4人同屏游戏从梦想照进现实? 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否遇到过…...

PCB圆弧拐角和45度拐角走线实操

目录 0 前言 1 PCB圆弧拐角实操 1.2参数设置,如上图所示 1.3筛选导线,如上图所示 1.4选中所有走线,如上图所示(按shift键框选) 1.5 45拐角变为圆弧拐角,如上图所示 1.6 优化前后对比图,如上图所示 2 PCB 45度拐角走线实操 2.1 进入设置,如上图所示 2.2 参数设…...