Skip to content

feat(scripts): add asset preparation for example training - #207

Merged
kilinchange merged 1 commit into
masterfrom
chore/add-prepare-assets-script
Aug 19, 2026
Merged

feat(scripts): add asset preparation for example training#207
kilinchange merged 1 commit into
masterfrom
chore/add-prepare-assets-script

Conversation

@kilinchange

@kilinchange kilinchange commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

背景

InfiniTrain 的 MNIST、GPT-2 和 LLaMA 3 示例依赖不同来源、不同格式的数据集与模型权重。此前缺少统一的数据生成入口,用户需要手动运行 python 脚本下载并转换相关文件。

主要改动

  • 新增统一数据准备脚本,支持:
    • mnist
    • gpt2
    • llama3
    • all
  • 支持通过 DATA_DIR 自定义输出目录。
  • 支持复用已有文件,并通过 FORCE=1 强制重新生成。
  • 下载过程使用临时文件和原子替换,避免保留不完整的目标文件。
  • 在数据缓存目录创建隔离的 Python 虚拟环境,自动安装 LLaMA python 数据处理脚本准备依赖,不修改用户当前 Python 环境。
  • 安装 SOCKS 客户端依赖,兼容已通过环境变量配置 SOCKS 代理的下载环境。

MNIST

  • 从公开镜像下载四个 IDX 压缩文件。
  • 自动解压为 InfiniTrain MNIST 示例可直接读取的格式。

GPT-2

  • 下载 GPT-2 124M FP32 LLMC 权重。
  • 下载 tokenizer。
  • 下载已经完成 tokenization 的 TinyShakespeare 训练集和验证集。

LLaMA 3.2 1B

  • 从 Hugging Face 下载 meta-llama/Llama-3.2-1B
  • 使用 LLaMA tokenizer 将 TinyShakespeare 转换为 InfiniTrain 数据格式。
  • 生成训练集和验证集。
  • 将 safetensors 权重流式转换为 InfiniTrain LLMC FP32 格式:
    • 写入 InfiniTrain 模型头;
    • 转换并合并 Q/K/V 权重;
    • 处理 Q/K 权重排列;
    • 按 InfiniTrain 要求写入 attention、FFN 和 normalization 权重;
    • 处理共享 embedding 和输出层权重;
    • 避免一次性将整个模型加载到内存。
  • 严格校验 LLaMA 3.2 1B 的模型维度,避免误转换其他模型。
  • 支持 SKIP_LLAMA3_WEIGHTS=1,仅准备 tokenizer 数据。
  • 支持 HF_TOKEN 或 Hugging Face 本地登录凭据。

目录整理

数据生成脚本统一放置在:

scripts/assets/
├── prepare-infinitrain-assets.sh
└── prepare_llama3_assets.py

同时在 .gitignore 中补充 Python 字节码缓存忽略规则。

使用方式

# MNIST
./scripts/assets/prepare-infinitrain-assets.sh mnist

# GPT-2
./scripts/assets/prepare-infinitrain-assets.sh gpt2

# LLaMA 3.2 1B
HF_TOKEN=hf_xxx \
./scripts/assets/prepare-infinitrain-assets.sh llama3

# 准备全部数据
HF_TOKEN=hf_xxx \
./scripts/assets/prepare-infinitrain-assets.sh all

自定义输出目录:

DATA_DIR=/path/to/data \
./scripts/assets/prepare-infinitrain-assets.sh gpt2

资源说明

LLaMA 3.2 1B 完整准备过程大约需要:

  • 2.4GB Hugging Face 原始权重;
  • 6GB InfiniTrain FP32 权重;
  • 约 8.5GB 可用磁盘空间;
  • 已获模型访问权限的 Hugging Face 账号。

@kilinchange
kilinchange force-pushed the chore/add-prepare-assets-script branch from a3d231b to 90b35fc Compare August 18, 2026 08:00
@kilinchange

kilinchange commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator Author

运行 HF_TOKEN=xxx ./scripts/assets/prepare-infinitrain-assets.sh all 后,生成的数据文件结构:
image

基于拉取的数据对 basic 测例进行测试:
image

@kilinchange kilinchange changed the title [WIP] feat(scripts): add asset preparation for example training feat(scripts): add asset preparation for example training Aug 18, 2026
@chen2021673

Copy link
Copy Markdown
Contributor

感觉可以同步修改一下 README.md 的 Getting Started 部分

@kilinchange
kilinchange force-pushed the chore/add-prepare-assets-script branch from 90b35fc to 67fbe67 Compare August 19, 2026 03:26
@kilinchange

Copy link
Copy Markdown
Collaborator Author

感觉可以同步修改一下 README.md 的 Getting Started 部分

已修改

@chen2021673 chen2021673 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@kilinchange
kilinchange merged commit f1571e2 into master Aug 19, 2026
2 checks passed
@kilinchange
kilinchange deleted the chore/add-prepare-assets-script branch August 19, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants