llamafactory/hparams/data_args.py
个人感觉,不太好用,我还没到达使用这个的场景。随便看看Streaming 模式。
--max_steps从代码验证逻辑可以看出:
python展开代码# src/llamafactory/hparams/parser.py 第 247 行
if training_args.max_steps == -1 and data_args.streaming:
    raise ValueError("Please specify `max_steps` in streaming mode.")
原因:Streaming 模式下无法预知数据集的总长度,因此无法基于 epoch 数量来控制训练时长。
--max_samples 不兼容python展开代码# src/llamafactory/hparams/data_args.py 第 175 行
if self.streaming and self.max_samples is not None:
    raise ValueError("`max_samples` is incompatible with `streaming`.")
原因:max_samples 需要预先知道数据集大小来截取样本,而 streaming 模式下无法预知总大小。
--tokenized_path 冲突python展开代码# src/llamafactory/data/loader.py 第 350 行
if data_args.streaming:
    raise ValueError("Turn off `streaming` when saving dataset to disk.")
原因:保存预处理后的数据集需要完整的数据集,这与 streaming 的逐批处理理念冲突。
python展开代码# src/llamafactory/hparams/data_args.py 第 173 行
if self.streaming and self.val_size > 1e-6 and self.val_size < 1:
    raise ValueError("Streaming mode should have an integer val size.")
原因:Streaming 模式下验证集大小必须是整数,不能是小数比例。
--streamingFalse--buffer_size16384python展开代码# src/llamafactory/data/data_utils.py 第 95 行
if data_args.streaming:
    dataset = dataset.shuffle(buffer_size=data_args.buffer_size, seed=seed)
--max_steps-1bash展开代码llamafactory-cli train \ --streaming \ --max_steps 50000 \ --dataset_dir /path/to/large/dataset \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 8
bash展开代码llamafactory-cli train \ --streaming \ --max_steps 10000 \ --dataset_dir /path/to/streaming/data \ --buffer_size 8192
bash展开代码llamafactory-cli train \ --streaming \ --max_steps 20000 \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 16
Please specify max_steps in streaming mode解决方案:添加 --max_steps 参数
bash展开代码--streaming \ --max_steps 20000
max_samples is incompatible with streaming解决方案:移除 --max_samples 参数,使用 --max_steps 控制训练时长
Turn off streaming when saving dataset to disk解决方案:选择以下方案之一:
--streaming,保留 --tokenized_path--tokenized_path,保留 --streaming解决方案:
--per_device_train_batch_size--gradient_accumulation_steps--buffer_size

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