LlamaFactory cache_dir 更改缓存存储
2025-07-15
深度学习
00

目录

额外建议
1. HFDATASETSCACHE 环境变量
2. HUGGINGFACEHUBCACHE 环境变量
3. cache_dir 参数
使用建议
空间占用参考

错误信息显示 /root/.cache/huggingface/datasets/ 目录空间不够,无法创建临时文件。让我帮你查看相关代码并提供解决方案。

可以通过指定 --cache_dir 参数来将缓存路径设置到你的挂载存储上。根据代码分析,LlamaFactory 支持通过 cache_dir 参数来指定 Hugging Face 数据集和模型的缓存目录。

你可以在原有的训练命令中添加 --cache_dir 参数:

bash
展开代码
llamafactory-cli train \ --model_name_or_path /mnt/jfs/agent-aos-xd/model/Qwen/Qwen2-VL-2B-Instruct \ --dataset_dir /mnt/jfs/agent-aos-xd/test_data/LLaMA-Factory-traindatasets \ --cache_dir /mnt/jfs/agent-aos-xd/cache/ \ --dataset SVIT_core_150K \ --template qwen2_vl \ --output_dir /mnt/jfs/agent-aos-xd/model_aftertrain/train2btest \ --cache_dir /mnt/jfs/agent-aos-xd/cache/ \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 2 \ --image_max_pixels 1048576 \ --video_max_pixels 16384 \ --trust_remote_code true \ --stage sft \ --do_train true \ --finetuning_type full \ --freeze_vision_tower false \ --freeze_multi_modal_projector false \ --freeze_language_model false \ --cutoff_len 4096 \ --max_samples 10000 \ --overwrite_cache true \ --preprocessing_num_workers 32 \ --dataloader_num_workers 8 \ --logging_steps 1 \ --save_steps 10 \ --plot_loss true \ --overwrite_output_dir true \ --save_only_model false \ --learning_rate 1.0e-5 \ --num_train_epochs 1000.0 \ --lr_scheduler_type cosine \ --warmup_ratio 0.1 \ --bf16 true \ --ddp_timeout 180000000

额外建议

  1. 创建缓存目录:在运行训练前,确保目标缓存目录存在:

    bash
    展开代码
    mkdir -p /mnt/jfs/agent-aos-xd/cache/
  2. 环境变量方式:你也可以通过设置环境变量来指定缓存目录:

    bash
    展开代码
    export HF_DATASETS_CACHE=/mnt/jfs/agent-aos-xd/cache/datasets export HUGGINGFACE_HUB_CACHE=/mnt/jfs/agent-aos-xd/cache/hub
  3. 清理现有缓存:如果你想清理现有的缓存以释放空间:

    bash
    展开代码
    rm -rf /root/.cache/huggingface/datasets/*

通过指定 --cache_dir 参数,数据集处理过程中的所有缓存文件(包括数据embedding后的缓存)都会存储到指定的挂载存储路径中,从而避免本地磁盘空间不足的问题。

1. HF_DATASETS_CACHE 环境变量

作用:控制 Hugging Face datasets 库的缓存目录

存储内容

  • 数据集的原始下载文件(如 .jsonl, .json, .parquet 等)
  • 数据集的预处理缓存(如 tokenization 后的数据)
  • 数据集的 Apache Arrow 格式文件
  • 你遇到的错误就是这里:在数据预处理时创建临时文件用于存储处理结果

默认位置~/.cache/huggingface/datasets/

2. HUGGINGFACE_HUB_CACHE 环境变量

作用:控制从 Hugging Face Hub 下载的模型和文件的缓存目录

存储内容

  • 模型权重文件(如 .safetensors, .bin
  • 模型配置文件(如 config.json, tokenizer.json
  • 评估任务的配置文件(如 mapping.json
  • 从 Hub 下载的其他资源文件

默认位置~/.cache/huggingface/hub/

3. cache_dir 参数

作用:LlamaFactory 中 ModelArguments 的参数,可以统一覆盖上述两个环境变量

存储内容

  • 当指定 --cache_dir 时,会同时影响模型和数据集的缓存位置
  • 相当于同时设置了 HF_DATASETS_CACHEHUGGINGFACE_HUB_CACHE

使用建议

对于你的情况,推荐使用 --cache_dir 参数,它会统一管理所有缓存:

bash
展开代码
llamafactory-cli train \ --cache_dir /mnt/jfs/agent-aos-xd/cache/ \ # ... 其他参数

或者,如果你想更精细地控制,可以设置环境变量:

bash
展开代码
export HF_DATASETS_CACHE=/mnt/jfs/agent-aos-xd/cache/datasets export HUGGINGFACE_HUB_CACHE=/mnt/jfs/agent-aos-xd/cache/hub llamafactory-cli train \ # ... 你的参数

空间占用参考

  • HF_DATASETS_CACHE:通常占用最多空间,包含所有数据预处理的中间结果
  • HUGGINGFACE_HUB_CACHE:存储模型文件,但相对固定大小
  • 临时文件:在数据预处理过程中会创建大量临时文件

使用 --cache_dir 参数是最简单的解决方案,它会将所有缓存统一存储到你指定的挂载存储中。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

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