预训练&SFT代码:配套昇腾原生的开源盘古2.0系列模型。
当前访问频次受限,请登录后继续访问
openPangu-2.0-Training
中文 | English
简介
openPangu Training Framework 是面向大规模基础模型训练的统一训练框架,支持大语言模型(LLM)、视觉语言模型(VLM)以及多模态模型(Omni)的训练与开发。 框架提供从大规模预训练(Pretraining)、监督微调(Supervised Fine-Tuning, SFT) 到模型持续优化的一体化训练能力,支持多维分布式并行、高效数据流水线、混合精度训练、自定义算子优化以及高可用训练等能力。 为百亿至万亿参数规模基础模型训练场景,提供稳定、高效、可扩展的训练基础设施。更多详细信息,请参考openPangu-2.0技术报告。
本仓库主要提供以下训练能力:
-
预训练(Pretraining)
- 支持基于大规模无监督语料从头训练基础模型;
- 支持基于已有 Checkpoint 的持续训练(Continued Pretraining);
- 支持大规模分布式训练和长上下文训练。
-
监督微调(Supervised Fine-Tuning, SFT)
- 支持基于预训练模型进行指令对齐和能力增强;
- 支持指令数据、多轮对话数据以及领域数据微调;
- 支持参数高效微调和多任务训练。
框架集成了数据处理、分布式并行、训练调度、Checkpoint 管理、高可用恢复以及性能优化能力,可用于基础模型训练与开发。 详细设计请参考:训练系统架构设计说明书
仓库结构
openPangu-2.0-Training/
├── launch.py # 统一训练启动入口
├── setup.py / pyproject.toml # 安装与打包配置
├── PanGu/ # 核心训练框架代码
│ ├── entrypoints/ # 语言模型、生成式模型及 Omni 训练/推理入口
│ ├── models/ # 模型、Transformer、ViT、LoRA、低精度训练
│ ├── data_pipeline/ # Pretraining、SFT、多模态数据流水线
│ ├── distributed/ # 数据/张量/流水线/上下文/专家并行
│ ├── hyper_parallel/ # 激活检查点、DTensor、分布式 Checkpoint
│ ├── high_availability/ # 容灾恢复、断点续训、弹性训练
│ ├── training/ # Trainer 与 Callback
│ ├── optimizer/ # 分布式优化器、CPU Offload
│ ├── ops/ # NPU 自定义算子、融合算子
│ ├── inference/ # 文本和多模态生成
│ ├── monitor/ # 监控、性能分析、内存分析
│ ├── adaptor/ # Runtime 和扩展适配
│ ├── utils/ # 配置、参数、验证工具
│ └── pangu.py # 兼容旧版本导入路径
├── config/ # 模型、训练、环境配置
├── tools/ # 数据处理、Checkpoint 转换工具
└── doc/ # 架构、安装、用户文档
Model Zoo
| Model | Parameters (Total / Active) | Architecture | Context Length | Configuration |
|---|---|---|---|---|
moe_92B_A6B |
92B / 6B | MoE | 512K | YAML |
sample |
17.36B / 1.75B | MoE | 4K | YAML |
软件版本
推荐使用以下配套版本:
| 软件 | 版本 |
|---|---|
| openPangu-2.0-Training | main |
| CANN | 8.5.1 |
| PyTorch | 2.9.0 |
| torch_npu | 2.9.0 |
| Python | 3.11.x |
| triton-ascend | 3.2.1 |
安装
获取源码
git clone https://gitcode.com/ascend-tribe/openPangu-2.0-Training.git
cd openPangu-2.0-Training
安装依赖
pip install -r PanGu/requirements.txt
安装 CANN、PyTorch、torch_npu 等环境依赖前,请参考: 安装指南
快速开始
训练前需要完成:
- 环境安装
- Tokenizer 准备
- 数据预处理
- YAML 配置准备
完整流程请参考: 快速入门
预训练(Pretraining)
预训练阶段用于从大规模语料中学习通用语言能力,生成基础模型(Base Model)。
支持:
- 从零开始训练;
- 基于已有 Checkpoint 持续训练;
- 大规模分布式训练。
配置示例:
train_config:
type: pretrain
启动训练:
python ./launch.py \
--device=<device_type> \
--model=<model_yaml_path>
监督微调(SFT)
SFT 阶段用于将预训练模型进一步优化为具备指令理解和任务执行能力的模型。
支持:
- 单轮指令数据;
- 多轮对话数据;
- 领域数据微调。
数据预处理:
python ./tools/process_data/filter_sft_jsonl.py \
--input /path/to/input.jsonl \
--output /path/to/clean_data.jsonl \
--shuffle true
python ./tools/process_data/preprocess_data_sft.py \
--input /path/to/clean_data.jsonl \
--tokenizer-name-or-path /path/to/tokenizer \
--output-prefix /path/to/dataset/dataset_name \
--tokenizer-type PretrainedFromHF \
--handler-name PanguInstructionHandler \
--seq-length 4096 \
--pack
训练配置:
train_config:
type: sft
finetune: true
启动训练:
python ./launch.py \
--device=<device_type> \
--model=<model_yaml_path>
文档
使用说明
运行大规模训练任务前,请根据:
- 模型规模
- 序列长度
- 集群规模
- 并行策略
合理调整训练配置,避免资源不足或配置不匹配导致任务失败。
许可证
- openPangu-2.0-Training的使用许可证,具体请参见LICENSE。
- openPangu-2.0-Training中
docs目录下的文档适用CC-BY 4.0许可证,具体请参见LICENSE。
免责声明
致openPangu-2.0-Training使用者
- openPangu-2.0-Training功能依赖的第三方开源软件,均由第三方社区提供和维护,因第三方开源软件导致的问题修复依赖相关社区的贡献和反馈。您应理解,openPangu-2.0-Training仓库不保证对第三方开源软件本身的问题进行修复,也不保证会测试、纠正所有第三方开源软件的漏洞和错误。
- 对于openPangu-2.0-Training示例文件中所涉及的数据集,平台仅用于功能测试,华为不提供任何数据集,如您使用这些数据集进行训练,请您特别注意应遵守对应数据集的License,如您因使用数据集而产生侵权纠纷,华为不承担任何责任。
反馈
如果有任何意见和建议,请提交issue或联系openPangu@huawei.com。