LLaMA-Factory使用HuggingFace的datasets
库来管理数据。
python展开代码from datasets import Dataset, DatasetDict, load_from_disk, save_to_disk
在src/llamafactory/data/loader.py
中:
python展开代码# 保存tokenized数据
if data_args.tokenized_path is not None:
if training_args.should_save:
dataset_dict.save_to_disk(data_args.tokenized_path) # 使用datasets库保存
# 加载tokenized数据
if has_tokenized_data(data_args.tokenized_path):
tokenized_data = load_from_disk(data_args.tokenized_path) # 使用datasets库加载
.arrow
文件)dataset_info.json
, state.json
)优势:
我创建的脚本完全遵循LLaMA-Factory的设计:
python展开代码# 分析脚本
from datasets import load_from_disk, Dataset, DatasetDict
def analyze_tokenized_path(tokenized_path: str):
dataset_dict = load_from_disk(tokenized_path) # 直接加载
if isinstance(dataset_dict, DatasetDict):
# 分析DatasetDict结构
for split_name, dataset in dataset_dict.items():
# 分析每个分割
python展开代码# 合并脚本
from datasets import concatenate_datasets, interleave_datasets
def merge_datasets(datasets):
# 使用datasets库的合并函数
merged = concatenate_datasets(split_datasets)
merged.save_to_disk(output_path) # 保存为相同格式
展开代码原始数据 → LLaMA-Factory预处理 → datasets.Dataset → save_to_disk() → tokenized_path ↓ 训练时: load_from_disk() → datasets.Dataset → 训练循环
必须文件/目录是 HuggingFace Datasets 的标准 save_to_disk 产物,保持原始结构与命名即可。
根目录:
各数据分割目录(如 train/
、validation/
等):
说明:
--tokenized_path
调用 datasets.load_from_disk(<tokenized_path>)
,因此只要是 HuggingFace Datasets 的标准磁盘格式就能直接用。tokenized_path
中的 images
/videos
/audios
列只是保存了路径字符串,实际文件需在训练时可被所有节点正常访问(挂载一致、路径一致)。--tokenized_path
时,诸如 --dataset
、--dataset_dir
、--template
等数据加载相关参数会被忽略;不要开启 --streaming
。1800w数据:
bash展开代码python analyze_tokenized_path.py --tokenized-path /mnt/jfs/cache/qwen2vl-xd0813-5/tokenized_cache --sample-count 5
3000数据:
bash展开代码python analyze_tokenized_path.py --tokenized-path /mnt/jfs/cache/qwen2vl-xd0813-6/tokenized_cache --sample-count 5
bash展开代码# 如果需要合并多个tokenized_path
python /mnt/s3fs/LLaMA-Factory-qwen2vl/user-code/merge_tokenized_paths.py \
--input-paths /mnt/jfs/cache/qwen2vl-xd0813-6/tokenized_cache /mnt/jfs/cache/qwen2vl-xd0813-6/tokenized_cache \
--output-path /mnt/jfs/cache/qwen2vl-xd0813-merge/tokenized_cache \
--merge-strategy concatenate \
--validate \
--force
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!