错误信息显示 /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
创建缓存目录:在运行训练前,确保目标缓存目录存在:
bash展开代码mkdir -p /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
清理现有缓存:如果你想清理现有的缓存以释放空间:
bash展开代码rm -rf /root/.cache/huggingface/datasets/*
通过指定 --cache_dir
参数,数据集处理过程中的所有缓存文件(包括数据embedding后的缓存)都会存储到指定的挂载存储路径中,从而避免本地磁盘空间不足的问题。
HF_DATASETS_CACHE
环境变量作用:控制 Hugging Face datasets
库的缓存目录
存储内容:
.jsonl
, .json
, .parquet
等)默认位置:~/.cache/huggingface/datasets/
HUGGINGFACE_HUB_CACHE
环境变量作用:控制从 Hugging Face Hub 下载的模型和文件的缓存目录
存储内容:
.safetensors
, .bin
)config.json
, tokenizer.json
)mapping.json
)默认位置:~/.cache/huggingface/hub/
cache_dir
参数作用:LlamaFactory 中 ModelArguments
的参数,可以统一覆盖上述两个环境变量
存储内容:
--cache_dir
时,会同时影响模型和数据集的缓存位置HF_DATASETS_CACHE
和 HUGGINGFACE_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 \
# ... 你的参数
使用 --cache_dir
参数是最简单的解决方案,它会将所有缓存统一存储到你指定的挂载存储中。
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!