onescience-parallel

Solid

将 PyTorch 模型改造为支持 Pipeline Parallelism (PP) + Tensor Parallelism (TP) 的分布式训练模型。 适用场景:单机单卡模型改多卡分布式、模型拆分为多个 pipeline stage、替换 nn.Linear 为并行线性层、 编写 forward_step_func / model_provider / dataset_provider、配置 PipelineTensorShapeConfig、 创建 Distributed 版本模块(DistributedFuser / DistributedAttention / DistributedMlp)。 当用户提到以下任何关键词时,务必使用此 skill: "流水线并行"、"pipeline parallel"、"模型并行改造"、"分布式训练"、"stage 拆分"、 "ColumnParallelLinear"、"RowParallelLinear"、"pretrain 接口"、"forward_step_func"、 "model_provider"、"TP 并行"、"张量并行"、"多卡训练"、"Megatron"。

AI & Automation 14 stars 1 forks Updated today MIT

Install

View on GitHub

Quality Score: 83/100

Stars 20%
39
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Pipeline Parallel 改造 Skill ## 重要原则(必读) 1. **复用 OneScience 模块**:所有基础模块必须使用 `onescience` 已有实现,禁止重复实现 2. **先读后写**:开始前必须阅读 `context.md` 和 `architecture.md` 3. **参考已有实现**:必须参考 `examples/earth/pangu_weather_distributed/` 的 pangu 实现 4. **保持参数一致性**:进行并行改造时,各 Stage 类的 `__init__` 参数签名和内部初始化逻辑应尽可能与原模型保持完全一致(如 `config`、 `mask` 等参数的处 理),避免随意更改参数名或逻辑。 5. **严禁循环导入**:在创建 Distributed 模块(如 `{StyleName}DistributedFuser`)时, **禁止**在模块内部导入 `OneFuser`、 `OneTransformer` 等顶层包装类 ,因为这些包装类通常已经导入了你的 Distributed 模块,会导致 `ImportError`。应直接导入具体的子模块类(如 `from .{stylename}distributedlocalsiefuser im port {StyleName}DistributedLocalSIEFuser`)。 --- ## 改造三步流程 ``` 步骤 1:模型拆分 (PP) → 步骤 2: TP 并行模块 → 步骤 3:训练接口对接 ``` --- ## 步骤 1:模型拆分(Pipeline Parallel) ### 1.1 切分策略 按前向执行顺序找**计算串行边界**,切点满足: - 数据依赖最少(只有一个 tensor 出口) - 跨 stage 传输的中间 tensor 尽量小 - 各 stage 计算量尽量均衡 典型 4-stage 切分(U-Net/Encoder-Decoder 结构): | Stage | 内容 | 说明 | |-------|------|------| | 0 | Embedding + Encoder 前半 | 首阶段,产生 skip connection | | 1 | Downsample + 中间层 | 下采样后的计算密集区 | | 2 | 解码层 + Upsample | 解码器前半段 | | 3 | Decoder 后半 + Recovery | 消费 skip,产出最终结果 | ### 1.2 每个 Stage 的必要属性 ```python class MyModel_stageN(Module): def __init__(self, original_arg1, original_arg2, ..., megatron_config=None): """ 参数签名应尽可能与原模型保持一致。 如果原模型第一个参数是 config (yaml配置 ),则保持不变; 额外传入的 Megatron 核心配置建议命名为 megatron_config 避免冲突。 """ super().__init__(meta=MetaData()) # ① 必须有这三个属性,均设为 None self.pre_process = ...

Details

Author
onescience-ai
Repository
onescience-ai/OneSkills
Created
3 months ago
Last Updated
today
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category

AI & Automation Solid

onescience-infer

OneScience 科学模型推理执行技能。用于用户希望运行或构建 HuggingFace 模型、官方文档模型、本地 checkpoint 或项目原生 runner 的推理工作流时,覆盖气象/地球系统、生信、材料、流体和通用科研模型等领域,包括模型卡与配置发现、输入数据准备、checkpoint 加载、推理入口生成或复用、执行、结果验证、可视化和 baseline 对比。接收格式与 onescience-orchestrator 调用执行技能时的 step_handoff 保持一致,返回 execution_result。需要时协调交接给 onescience-coder、onescience-runtime 以及数据准备类技能。

14 Updated today
onescience-ai
AI & Automation Solid

onescience-trainer

OneScience 科学模型训练执行技能。用于用户希望基于文本说明、网页说明、本地项目路径、已有 checkpoint 或项目原生训练入口来规划、生成并执行模型训练工作流,覆盖气象/地球系统、生信、材料、流体和通用科研模型等领域,包括训练信息获取、数据与切分规划、训练策略整理、完整训练脚本内容生成、训练执行组织以及结果验证。接收格式与 onescience-orchestrator 调用执行技能时的 step_handoff 保持一致,返回 execution_result。需要时协调交接给 onescience-coder、onescience-runtime 以及数据工作流技能。

14 Updated today
onescience-ai
AI & Automation Listed

cli-trainer

引导用户在 AI Studio 无代码训练平台完成大模型微调,支持 ERNIE 和开源模型(Qwen/LLaMA)。当用户提到微调、训练模型、SFT、fine-tune、问答对、让模型学会、定制领域助手、专属领域 AI、行业术语、调教模型、业务知识注入、领域适配、医疗问答、客服问答、无代码训练、AiStudio 训练、ERNIE 微调、模型训练、finetune 时,优先触发。

2 Updated 3 days ago
liuyunlin