news 2026/2/12 4:39:57

训练产物在哪?Qwen2.5-7B输出目录详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
训练产物在哪?Qwen2.5-7B输出目录详解

训练产物在哪?Qwen2.5-7B输出目录详解

1. 引言:为什么你总在找“训练完的文件在哪”

刚跑完一条swift sft命令,终端跳出Saving checkpoint to output/v2-20250412-1632/checkpoint-200,你松了口气——微调成功了。
但下一秒,你卡住了:

“这个checkpoint-200是不是就是我要的模型?”
“它能直接推理吗?还是得合并权重?”
output目录里一堆文件夹,哪个才是最终可用的?”
“如果想换台机器继续训,要拷哪些东西?”

这不是操作失误,而是所有首次接触 LoRA 微调的新手必经的“路径困惑期”
本篇不讲原理、不堆参数,只做一件事:带你亲手摸清 Qwen2.5-7B 在单卡微调镜像中每一份产出物的物理位置、文件含义和使用逻辑
你会清楚知道:
训练结束时,真正的“成果”落在哪个绝对路径下
每个子目录(checkpoint-*adapter_config.jsonmerges/)到底存着什么
如何用最简命令验证某次保存是否有效
怎样最小化备份——只拷 3 个文件就能完整迁移训练状态

全文基于已验证环境:NVIDIA RTX 4090D + 镜像预置的 ms-swift + Qwen2.5-7B-Instruct,所有路径与行为均实测可复现。


2. 输出根目录:/root/output是唯一真相

2.1 默认路径不可更改,也不建议改

镜像文档明确指出:

--output_dir output

这意味着,无论你执行多少次swift sft,只要没显式指定其他--output_dir,所有产出物必然落在/root/output
这是硬编码路径,不是约定俗成的习惯。你可以用以下命令立刻确认:

ls -l /root/output

预期输出(首次训练后):

total 0 drwxr-xr-x 3 root root 96 Apr 12 16:32 v2-20250412-1632

注意:

  • v2-20250412-1632是自动生成的版本号(v2表示 ms-swift v2.x 协议,后缀为时间戳)
  • 它是唯一合法的顶层训练产物容器,里面不再嵌套其他outputresults文件夹
  • 如果你看到/root/output/output/root/output/train_output,说明你或脚本误写了--output_dir,需立即检查

2.2 为什么不是/root/Qwen2.5-7B-Instruct/output

有人会疑惑:“基础模型在/root/Qwen2.5-7B-Instruct,那输出不该放它下面吗?”
答案是否定的。原因有二:

  1. ms-swift 设计哲学:严格分离“原始模型”(只读)与“训练产物”(可写),避免污染源模型目录
  2. 工程安全性:防止因训练中断、磁盘满等异常导致基础模型文件被意外覆盖或损坏

所以请牢牢记住:

所有训练产物,只存在于/root/output及其子目录中;基础模型目录/root/Qwen2.5-7B-Instruct是只读的,永远不生成新文件。


3. 版本子目录解剖:v2-20250412-1632里有什么

3.1 进入版本目录,看清结构全貌

执行:

cd /root/output/v2-20250412-1632 ls -la

典型输出:

total 24 drwxr-xr-x 5 root root 160 Apr 12 16:32 . drwxr-xr-x 3 root root 96 Apr 12 16:32 .. drwxr-xr-x 3 root root 96 Apr 12 16:32 checkpoint-100 drwxr-xr-x 3 root root 96 Apr 12 16:32 checkpoint-200 drwxr-xr-x 3 root root 96 Apr 12 16:32 merges -rw-r--r-- 1 root root 287 Apr 12 16:32 adapter_config.json -rw-r--r-- 1 root root 52 Apr 12 16:32 configuration.json -rw-r--r-- 1 root root 21 Apr 12 16:32 README.md -rw-r--r-- 1 root root 76 Apr 12 16:32 trainer_log.json

我们逐项拆解其真实作用:

文件/目录类型是否必需关键说明
checkpoint-100,checkpoint-200目录是(至少保留一个)每次save_steps触发时生成的完整 LoRA 权重快照,含adapter_model.binadapter_config.json
merges目录否(但强烈建议保留)存放合并后的完整模型权重(即 LoRA + 基座模型融合结果),用于脱离 ms-swift 环境直接加载
adapter_config.json文件全局 LoRA 配置:r=8,alpha=32,target_modules=all-linear—— 所有 checkpoint 共享此配置
configuration.json文件记录本次训练的超参快照:num_train_epochs=10,learning_rate=1e-4,max_length=2048
trainer_log.json文件否(调试用)训练过程中的 loss、lr、step 时间戳日志,纯文本可读

关键洞察:checkpoint-*目录是增量训练的基础单元,而merges目录是生产部署的交付物。二者定位完全不同。


4. Checkpoint 目录详解:checkpoint-200的真实构成

4.1 进入 checkpoint,识别核心三件套

执行:

cd /root/output/v2-20250412-1632/checkpoint-200 ls -l

输出:

total 128000 drwxr-xr-x 2 root root 64 Apr 12 16:32 . drwxr-xr-x 5 root root 160 Apr 12 16:32 .. -rw-r--r-- 1 root root 287 Apr 12 16:32 adapter_config.json -rw-r--r-- 1 root root 130992420 Apr 12 16:32 adapter_model.bin -rw-r--r-- 1 root root 52 Apr 12 16:32 configuration.json

这 3 个文件就是 checkpoint 的全部有效内容:

  • adapter_model.bin(约 125MB):真正的 LoRA 权重矩阵,包含所有lora_Alora_B参数。它是微调效果的物理载体,也是你后续推理时必须加载的文件。
  • adapter_config.json:声明该 checkpoint 使用的 LoRA 架构(rank、alpha、target modules)。若你用不同配置训了多个模型,此文件会自动适配。
  • configuration.json:记录本次 checkpoint 对应的训练步数(global_step=200)、学习率、batch size 等上下文信息,用于断点续训。

验证技巧:用file adapter_model.bin查看文件类型,应返回data(二进制);若返回text,说明保存失败。

4.2 Checkpoint 不是“模型”,只是“补丁”

新手最大误区:把checkpoint-200当成一个独立模型。
事实是:它只是一个轻量级参数补丁(约 125MB),必须与原始模型/root/Qwen2.5-7B-Instruct配合使用
你可以这样理解:

  • 基座模型 = 一辆未改装的汽车(7B 参数,24GB 显存占用)
  • LoRA checkpoint = 一套可插拔的性能套件(125MB,仅修改转向/油门响应逻辑)
  • 推理时 = 汽车 + 套件 同时运行,缺一不可

因此,checkpoint-200不能单独复制到其他机器直接运行,必须同时携带基座模型路径。


5. Merges 目录:从“补丁”到“整车”的关键一步

5.1 为什么需要 merge?—— 解耦推理环境

checkpoint-200虽小,但依赖 ms-swift 框架加载。若你想:

  • 在另一台没装 ms-swift 的服务器上部署
  • 用 HuggingFace Transformers 原生 pipeline 加载
  • 导出为 GGUF 格式供 llama.cpp 运行
  • 上传到 Hugging Face Hub 供他人复用

就必须执行merge(合并):将 LoRA 权重永久注入基座模型,生成一个“全新”的、自包含的模型。

镜像已预置 merge 脚本,执行即可:

cd /root swift export \ --ckpt_dir /root/output/v2-20250412-1632/checkpoint-200 \ --output_dir /root/output/v2-20250412-1632/merges/merged-200 \ --model_type qwen

完成后查看:

ls -lh /root/output/v2-20250412-1632/merges/merged-200/

输出(关键文件):

-rw-r--r-- 1 root root 15G Apr 12 16:45 pytorch_model-00001-of-00002.bin -rw-r--r-- 1 root root 7.2G Apr 12 16:45 pytorch_model-00002-of-00002.bin -rw-r--r-- 1 root root 12K Apr 12 16:45 config.json -rw-r--r-- 1 root root 23K Apr 12 16:45 tokenizer.model

此时merged-200就是一个标准 HuggingFace 格式模型,可直接用AutoModelForCausalLM.from_pretrained()加载,无需任何框架依赖。

5.2 Merge 后的存储策略:只留最精简的交付包

merged-200目录约 22GB(含分片 bin 文件 + tokenizer + config),但实际部署只需 3 个核心文件:

  1. pytorch_model-00001-of-00002.bin(主权重分片)
  2. pytorch_model-00002-of-00002.bin(次权重分片)
  3. config.json(模型结构定义)

tokenizer.model可选:若你只做中文任务且不涉及特殊 token,可省略(基座模型已内置);但为兼容性,建议一并保留

备份黄金法则:

  • 开发阶段:保留完整checkpoint-*(用于续训、对比实验)
  • 交付阶段:只打包merges/merged-200/下的 3 个文件(约 22GB)
  • 归档阶段:删除所有checkpoint-*,仅留merges/—— 节省 85% 磁盘空间

6. 实战验证:三步确认你的产物真正可用

别信日志,要动手验证。以下命令在镜像内 10 秒内完成验证:

6.1 验证 checkpoint 可加载(LoRA 模式)

CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters /root/output/v2-20250412-1632/checkpoint-200 \ --model Qwen2.5-7B-Instruct \ --model_type qwen \ --stream true \ --temperature 0 \ --max_new_tokens 128

输入你是谁?,若返回我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。,则 checkpoint 有效。

6.2 验证 merge 模型可独立加载(原生模式)

python -c " from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained('/root/output/v2-20250412-1632/merges/merged-200') model = AutoModelForCausalLM.from_pretrained( '/root/output/v2-20250412-1632/merges/merged-200', device_map='auto', torch_dtype='bfloat16' ) print(' Merge model loaded successfully') "

无报错即通过。

6.3 验证跨机器可迁移(最小化备份测试)

假设你将merged-200/打包为qwen25-7b-csdn-merged.tar.gz,在新机器解压后:

# 新机器执行(无需安装 ms-swift) pip install transformers accelerate python -c " from transformers import pipeline pipe = pipeline('text-generation', model='/path/to/merged-200', device_map='auto') print(pipe('你是谁?')[0]['generated_text'][-50:]) # 打印末尾50字符 "

若输出含CSDN 迪菲赫尔曼,则迁移成功。


7. 常见陷阱与避坑指南

7.1 “找不到 checkpoint” 的 3 个真实原因

现象根本原因解决方案
ls /root/output返回No such file or directory训练中途被 kill(如 OOM、Ctrl+C),output目录未创建检查nvidia-smi显存是否爆满;用 `dmesg
ls /root/output/v2-*为空--output_dir被误设为相对路径(如./output),实际写入/root/./output永远用绝对路径--output_dir /root/output
checkpoint-200存在但adapter_model.bin仅几 KB磁盘满或权限不足导致写入失败df -h查磁盘;ls -ld /root/output确认 root 写权限

7.2 不要做的 3 件事

不要手动修改adapter_config.json:ms-swift 严格校验该文件,格式错误会导致inferKeyError: 'r'
不要删除configuration.json:它是断点续训的唯一依据,缺失则--resume_from_checkpoint失效
不要用cp -r checkpoint-200 checkpoint-final重命名:ms-swift 依赖目录名中的checkpoint-前缀识别,重命名后infer无法加载

7.3 一个命令查清所有产物状态

将以下脚本保存为/root/check_output.sh,一键诊断:

#!/bin/bash echo "=== OUTPUT DIRECTORY STATUS ===" ls -ld /root/output echo -e "\n=== LATEST VERSION ===" LATEST=$(ls -t /root/output/v2-* | head -1) echo $LATEST ls -lh "$LATEST" echo -e "\n=== LATEST CHECKPOINT ===" LATEST_CKPT=$(ls -t "$LATEST"/checkpoint-* | head -1) echo $LATEST_CKPT ls -lh "$LATEST_CKPT"/adapter_model.bin echo -e "\n=== MERGE STATUS ===" ls -d "$LATEST"/merges/*/ 2>/dev/null || echo "No merges found"

运行bash /root/check_output.sh,5 秒掌握全局。


8. 总结:你的训练产物地图已就绪

8.1 关键路径速查表

目标绝对路径说明
所有产物根目录/root/output唯一可信来源,其他路径均为干扰项
最新训练版本/root/output/v2-YYYYMMDD-HHMM时间戳命名,按字母序最新即最新
最佳 checkpoint/root/output/v2-*/checkpoint-<step>save_steps最大值(如checkpoint-200
生产交付模型/root/output/v2-*/merges/merged-<step>/已合并,可脱离 ms-swift 运行
最小备份集merged-<step>/pytorch_model-*.bin + config.json + tokenizer.model3 文件,约 22GB

8.2 行动清单:下一步你该做什么

  1. 立刻执行ls -lh /root/output/v2-*/checkpoint-*/adapter_model.bin确认文件大小 >100MB
  2. 马上验证:用swift infer --adapters测试一次问答,确保自我认知已更新
  3. 今日完成:运行swift export生成merges/,并用原生 Transformers 加载验证
  4. 长期习惯:每次训练后,运行bash /root/check_output.sh存档状态快照

你不再需要猜测、搜索或试错。现在,每一个字节的训练产物,都在你指尖掌控之中。

--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 4:02:50

LLaVA-v1.6-7b环境部署:GPU显存优化方案与Ollama兼容性指南

LLaVA-v1.6-7b环境部署&#xff1a;GPU显存优化方案与Ollama兼容性指南 1. 引言 LLaVA-v1.6-7b是当前最先进的多模态模型之一&#xff0c;它将视觉编码器与Vicuna语言模型相结合&#xff0c;实现了令人印象深刻的视觉-语言交互能力。最新版本1.6带来了多项重要改进&#xff1…

作者头像 李华
网站建设 2026/2/8 14:41:31

AI图像生成技术全面解析:模型协同应用实战指南

AI图像生成技术全面解析&#xff1a;模型协同应用实战指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus AI图像生成技术正通过模型协同应用实现质的飞跃&#xff0c;其中IPAdapter与LoRA的组合解决方…

作者头像 李华
网站建设 2026/2/11 14:43:27

PyTorch环境一键复现,科研实验再也不怕环境差异

PyTorch环境一键复现&#xff0c;科研实验再也不怕环境差异 1. 为什么你的实验总在“换电脑”后失败&#xff1f; 你是不是也经历过这些场景&#xff1a; 在实验室A跑通的模型&#xff0c;换到实验室B就报错 ModuleNotFoundError: No module named torchvision导师临时让你在…

作者头像 李华
网站建设 2026/2/7 8:54:12

Venera漫画本地导入完全解决方案:3大场景下的高效指南

Venera漫画本地导入完全解决方案&#xff1a;3大场景下的高效指南 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 想象这样的场景&#xff1a;你花了数小时整理的漫画收藏&#xff0c;却在导入应用时遭遇"格式不支持&qu…

作者头像 李华
网站建设 2026/2/5 11:23:43

用YOLOv13镜像做校园安防检测,效果超出预期

用YOLOv13镜像做校园安防检测&#xff0c;效果超出预期 校园安全是教育管理的底线&#xff0c;也是家长最关切的现实问题。传统安防依赖人力巡检与固定摄像头回看&#xff0c;存在响应滞后、覆盖盲区多、异常行为识别能力弱等明显短板。当学生在走廊奔跑碰撞、陌生人闯入教学楼…

作者头像 李华