llamfactory 微调中用到的cpu的两处参数preprocessing_num_workers dataloader_num_workers

我给你用最直白、最清晰、不绕弯 的方式讲清楚,这几个参数到底干什么的、区别在哪、为什么你必须都开

一句话总结

  • preprocessing_num_workers预处理阶段用(tokenize、打包数据)
  • dataloader_xxx训练阶段用(给显卡喂数据)

你之前 CPU 只有 8%,就是因为 只开了预处理,没开训练时的数据加载多线程


1. preprocessing_num_workers: 16

作用:数据预处理多线程

只在训练开始前跑一次!

跑完就结束,不会再用。

它做什么?

  • 给文本做 token 切分
  • 把数据打包成固定长度(cutoff_len:1024)
  • 生成缓存文件

特点

  • 训练开始前跑完
  • 跑完就退出
  • 训练过程中不再参与

所以

你看到 CPU 8%,就是因为预处理早就跑完了,这个参数已经不工作了


2. dataloader_num_workers: 16

作用:训练时喂数据的多线程

训练全程一直跑!

负责从磁盘读取数据 → 送给显卡。

它做什么?

  • 从硬盘/SSD 读取数据
  • 送给模型训练
  • 全程持续工作,决定显卡饿不饿

特点

  • 训练每一步都在用
  • 决定数据能不能喂满显卡
  • 决定 CPU 占用率高不高

这就是你之前 CPU 只有 8% 的原因!

你没开这个,系统默认 单线程喂数据,CPU 根本不用干活。


3. dataloader_pin_memory: true

作用:锁页内存 → 加速数据传到显卡

让数据从内存 → 显卡的速度更快,不卡顿。

直白说

开了:数据传输更快

不开:慢,容易造成显卡等待


4. dataloader_prefetch_factor: 4

作用:提前预加载 4 批数据

让显卡永远有数据可以练,不饿肚子。

直白说

显卡要数据时,数据已经提前准备好了


最清晰对比表(一看就懂)

参数 阶段 作用 运行时间 CPU 占用影响
preprocessing_num_workers 预处理 分词、格式化数据 训练前一次 ❌ 几乎无
dataloader_num_workers 训练 给显卡喂数据 训练全程 ✅ 极大(你缺的就是它)
dataloader_pin_memory 训练 加速数据传输 训练全程 中等
dataloader_prefetch_factor 训练 提前加载数据 训练全程

最终结论(最重要)

  1. preprocessing_num_workers:只管训练前
  2. dataloader_num_workers:管训练时,决定CPU占用、显卡速度
  3. 你之前 CPU 8% 就是因为没开 dataloader_num_workers
  4. 现在我帮你加上了,CPU 会立刻跑到 60%~100%显卡跑满速度翻倍

需要我再给你讲讲怎么看 DCU 利用率、判断训练是否达到最快速度吗?

相关推荐
带娃的IT创业者4 小时前
深度解析 Qwen3.6-35B-A3B:重塑 AI 编程代理的开源新标杆
人工智能·python·ai·开源·大模型·qwen·编程代理
liu****4 小时前
LangGraph-AI应用开发框架(五)
python·langchain·大模型·langgraph
ACCELERATOR_LLC1 天前
【DataWhale组队学习】DIY-LLM Task1分词器
人工智能·大模型·datawhale
程序员三明治1 天前
【AI探索】程序员到底该怎么理解 LLM?
人工智能·ai·大模型·llm·量化·java后端·api调用
极客小云1 天前
【AiCodeAudit 2.0 发布:基于调用图与局部子图的 AI 代码安全审计平台】
人工智能·网络安全·语言模型·大模型·github·安全性测试·代码复审
DFCED2 天前
突发!Sora 之父 Bill Peebles 离职:OpenAI 理想主义的又一次落幕
人工智能·大模型·agent·sora
今天你TLE了吗2 天前
LLM到Agent&RAG——AI概念概述 第一章:大模型
java·人工智能·语言模型·大模型
被制作时长两年半的个人练习生2 天前
kerminal工具试用
大模型·算子
AI精钢2 天前
Claude Opus 4.7 是一次失败的升级吗?一次基于用户反馈的技术复盘
网络·人工智能·ai·大模型·llm·claude·技术评论