trainer
data
scripts
examples
tests
feat/HF_Streaming_Datasets_Support
HyperParallel 当前暂无内建的 HuggingFace Streaming 数据链路。对于超大语料预训练、SFT 以及多模态训练场景,用户通常希望直接通过 datasets.load_dataset(..., streaming=True) 读取数据,而不是先将完整数据集下载并落盘。
datasets.load_dataset(..., streaming=True)
HF Streaming 的主要价值包括:
但 streaming 数据接入训练流程时存在几个核心问题:
本 RFC 要解决的问题是:在 HyperParallel 现有 trainer / integration 路径上接入 HuggingFace Streaming 数据能力,打通文本训练与多模态训练的基础链路,并提供最小可复现样例和基础测试。
完成后的成功标准包括:
datasets
load_dataset(..., streaming=True)
train_lm.py
train_vl.py
rank
world_size
建议通过 yaml 配置扩展 HF Streaming 数据集能力,例如:
data: backend: hf streaming: true dataset_name_or_path: /path/or/hf_repo split: train shuffle: true shuffle_seed: 42 resume_state_path: null
backend
str
streaming
bool
false
dataset_name_or_path
split
train
shuffle
shuffle_seed
int
42
resume_state_path
str/null
null
hf
true/false
backend=hf
文本训练:
torchrun ... scripts/train_lm.py examples/qwen3_5_0_8b_base/train_hf_streaming.yaml
多模态训练:
torchrun ... scripts/train_vl.py examples/qwen3_vl_30b_a3b_instruct/train_hf_streaming.yaml
接口沿用现有训练脚本和 yaml 配置方式,用户无需引入新的训练入口。启用 HF Streaming 后,trainer 在内部切换数据集构建逻辑,通过 HuggingFace iterable dataset 提供样本,并在训练侧完成分片、重置、恢复和格式适配。
其中:
HF Streaming Builder 根据配置创建 HuggingFace iterable dataset,并负责 rank-aware 分片与 epoch reset。
Dataset State 保存当前 epoch、当前消费进度以及必要的 shuffle / cursor 相关状态。
Text / VL Transform 将 streaming 样本转为模型训练所需结构,文本场景侧重 tokenizer 处理,多模态场景侧重 tokenizer / processor 和多模态字段保留。
Trainer Integration 让现有 trainer 无需感知底层是本地数据集还是 HF streaming 数据集,只消费统一格式样本。
hyper_parallel/data
hyper_parallel/trainer/base.py
hyper_parallel/trainer/config.py
hyper_parallel/trainer/vl_trainer.py
scripts/train_lm.py
scripts/train_vl.py
examples/...
tests/ut/trainer/...
本方案的主要代价在于 trainer 侧需要引入 streaming 状态管理与数据结构适配逻辑,但改动范围相对可控,且更符合当前任务验收目标。
transformers
本期最小可交付能力包括:
其他约束:
Training completed
RFC:支持 HuggingFace Streaming 数据集接入 Hyper-Parallel 训练流程
1. 基本信息
trainer/data/scripts/examples/testsfeat/HF_Streaming_Datasets_Support2. 背景
HyperParallel 当前暂无内建的 HuggingFace Streaming 数据链路。对于超大语料预训练、SFT 以及多模态训练场景,用户通常希望直接通过
datasets.load_dataset(..., streaming=True)读取数据,而不是先将完整数据集下载并落盘。HF Streaming 的主要价值包括:
但 streaming 数据接入训练流程时存在几个核心问题:
本 RFC 要解决的问题是:在 HyperParallel 现有 trainer / integration 路径上接入 HuggingFace Streaming 数据能力,打通文本训练与多模态训练的基础链路,并提供最小可复现样例和基础测试。
完成后的成功标准包括:
3. 目标和非目标
3.1 目标
datasets.load_dataset(..., streaming=True)。3.2 非目标
4. 相关实现参考
datasetsstreamingload_dataset(..., streaming=True)构建 iterable datasettrain_lm.py/train_vl.py与 trainer 主流程rank/world_size做 shard / filterdatasetsstreaming5. 对外接口
5.1 接口定义
建议通过 yaml 配置扩展 HF Streaming 数据集能力,例如:
data: backend: hf streaming: true dataset_name_or_path: /path/or/hf_repo split: train shuffle: true shuffle_seed: 42 resume_state_path: nullbackendstrstreamingboolfalsedataset_name_or_pathstrsplitstrtrainshuffleboolfalseshuffle_seedint42resume_state_pathstr/nullnullbackendstreamingdataset_name_or_pathsplitshuffleshuffle_seedresume_state_pathbackendhf/ 现有本地后端streamingtrue/falsebackend=hf组合校验dataset_name_or_pathsplitshuffletrue/falseshuffle_seedresume_state_path5.2 使用示例
文本训练:
多模态训练:
5.3 接口说明
接口沿用现有训练脚本和 yaml 配置方式,用户无需引入新的训练入口。启用 HF Streaming 后,trainer 在内部切换数据集构建逻辑,通过 HuggingFace iterable dataset 提供样本,并在训练侧完成分片、重置、恢复和格式适配。
6. 方案设计
6.1 总体流程
6.2 架构参考
其中:
6.3 时序参考
6.4 关键逻辑
HF Streaming Builder
根据配置创建 HuggingFace iterable dataset,并负责 rank-aware 分片与 epoch reset。
Dataset State
保存当前 epoch、当前消费进度以及必要的 shuffle / cursor 相关状态。
Text / VL Transform
将 streaming 样本转为模型训练所需结构,文本场景侧重 tokenizer 处理,多模态场景侧重 tokenizer / processor 和多模态字段保留。
Trainer Integration
让现有 trainer 无需感知底层是本地数据集还是 HF streaming 数据集,只消费统一格式样本。
6.5 代码改动点
hyper_parallel/datahyper_parallel/trainer/base.pyhyper_parallel/trainer/config.pyhyper_parallel/trainer/vl_trainer.pyscripts/train_lm.pyscripts/train_vl.pyexamples/...tests/ut/trainer/...6.6 方案取舍
本方案的主要代价在于 trainer 侧需要引入 streaming 状态管理与数据结构适配逻辑,但改动范围相对可控,且更符合当前任务验收目标。
7. 组件依赖
datasetstransformersdatasetstransformers本期最小可交付能力包括:
8. 约束与兼容性
其他约束:
9. 验证设计
9.1 用例分层
9.2 交互验证
train_lm.pytrain_vl.py9.3 功能 / 稳定性验证
Training completedTraining completed10. 实现计划