tokenized_path vs cache_dir
2025-08-03
LLaMA-Factory
00

目录

参数对比:cachedir vs tokenizedpath
定义与用途
cache_dir - 原始数据/模型下载缓存
tokenized_path - 已处理数据集缓存
使用场景对比
配置分析
推荐用法
场景1:首次运行,生成 tokenized 缓存
场景2:后续运行,直接加载
场景3:强制重新处理(调试用)
最佳实践

参数对比:cache_dir vs tokenized_path

定义与用途

cache_dir - 原始数据/模型下载缓存

定义位置model_args.py:56

python
展开代码
cache_dir: str | None = field( metadata={"help": "Where to store the pre-trained models downloaded from huggingface.co or modelscope.cn."}, )

核心用途

  • 存储从 HuggingFace/ModelScope/OpenMind 下载的原始模型和数据集
  • 这是 datasets.load_dataset() 的标准缓存目录
  • 存储的是未处理的原始数据(JSON/Parquet 格式)

使用位置data/loader.py:200,225 等处传给 load_dataset(cache_dir=...)


tokenized_path - 已处理数据集缓存

定义位置data_args.py:126

python
展开代码
tokenized_path: str | None = field( metadata={"help": ( "Path to save or load the tokenized datasets. " "If tokenized_path not exists, it will save the tokenized datasets. " "If tokenized_path exists, it will load the tokenized datasets." )}, )

核心用途

  • 保存/加载已经 tokenized 处理完成的数据集
  • 如果路径不存在:处理完数据后保存到该路径
  • 如果路径已存在:直接加载,跳过所有数据处理步骤

核心逻辑loader.py:390-399):

python
展开代码
if data_args.tokenized_path is not None: if has_tokenized_data(data_args.tokenized_path): logger.warning_rank0("Loading dataset from disk will ignore other data arguments.") tokenized_data = load_from_disk(data_args.tokenized_path) # 直接返回,跳过所有处理 return dataset_module

tokenized_path 是 LlamaFactory 自己的 tokenized 数据缓存,overwrite_cache 不会影响它。

所以你不想用缓存,要么直接删除,要么改一下路径。


使用场景对比

场景cache_dirtokenized_path
加速目标避免重复下载避免重复 tokenize
存储内容原始 JSON/Parquettokenized tensors
节省时间下载时间数据预处理时间
适用情况远程数据集大数据集/多次训练

配置分析

当前配置

yaml
展开代码
cache_dir: /mnt/jfs6/g-xiedong/mmdu/cache_dir # 下载原始数据的缓存 # tokenized_path: /data/xiedong/mmdu/tokenized_cache # 已注释掉 overwrite_cache: true # 强制重新处理

当前行为

  1. cache_dir 用于缓存从远程下载的原始数据
  2. 注释掉 tokenized_path + overwrite_cache: true = 每次都重新 tokenize

推荐用法

场景1:首次运行,生成 tokenized 缓存

yaml
展开代码
tokenized_path: /path/to/tokenized_cache

第一次运行会处理数据并保存

场景2:后续运行,直接加载

yaml
展开代码
tokenized_path: /path/to/tokenized_cache

检测到已存在,直接加载(跳过处理)

场景3:强制重新处理(调试用)

yaml
展开代码
tokenized_path: /path/to/tokenized_cache overwrite_cache: true # 注意:这个参数作用于 HF datasets 缓存,不影响 tokenized_path

如果要重新生成 tokenized_path,需删除目录或换路径


最佳实践

对于大型多模态数据集如 MMDU,建议:

  1. 首次运行设置 tokenized_path 保存处理结果
  2. 后续训练直接加载,节省大量预处理时间
  3. 需要更新数据时,删除或更换 tokenized_path 路径
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!