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 模式下验证集大小必须是整数,不能是小数比例。
--streaming
False
--buffer_size
16384
python展开代码# src/llamafactory/data/data_utils.py 第 95 行
if data_args.streaming:
dataset = dataset.shuffle(buffer_size=data_args.buffer_size, seed=seed)
--max_steps
-1
bash展开代码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 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!