| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: 去除 platform 抽象,改用 torch 原生接口 删除 hyper_parallel/platform/ 整个双后端抽象层,相关实现直接使用 torch 原生接口;仅保留的 Torch-only 组件迁至 components/。 主要变更: - 删除 hyper_parallel/platform/**(mindspore 后端、platform.py、 swap_optimizer、activation_checkpoint、loss_parallel_ops、 function_override、init_weights 等) - hyper_parallel/platform/torch/common/moe.py 重命名至 hyper_parallel/components/modules/moe.py(内容不变),并同步更新 examples/torch、tests/torch、核心模块中的 20 余处 import - hyper_parallel/__init__.py 移除 get_platform 导出 - destroy_process_group 中 _P2P_MULTI_STREAM_GROUPS 改从 hyper_parallel.core.pipeline_parallel._p2p 导入 - 删除 examples/mindspore/**、tests/ut/platform/** - scripts/pylint_hyperparallel.py:PLATFORM_ALLOWED_PARTS 移除 hyper_parallel/platform/;删除 instance-platform-assignment (C9003) 规则 - 更新 .agent 规则、docs、docker、CODEOWNERS 等配套内容 327 files changed, 648 insertions(+), 20321 deletions(-) | 1 个月前 | |
refactor: 将 EXISTING_COMM_GROUPS 从 platform 迁移至 core.utils 为后续去除 MindSpore 双平台支持做准备。platform 层的职责是屏蔽 torch/mindspore 差异,而 EXISTING_COMM_GROUPS 只是进程组缓存,属于 纯数据,不应挂在 platform 上。 新增 hyper_parallel/core/utils/communication.py 承载该常量,并刷新全部 引用(源文件 8 处、测试文件 73 处)。core/utils/__init__.py 未改动。 platform.py 在包初始化早期即被加载,而 core.utils.__init__ 会急切加载 shape_utils -> core.dtensor,core/dtensor/dtensor.py 又反向引用 core.utils, 顶部 import 构成循环,故这三处改为方法内局部导入。 | 1 个月前 | |
refactor(compile): rename PassPlan to GraphParallelPlan and trim dead API The old name read as which passes to run / in what order, but the type only carries module-level parallel assignment: which modules FSDPPass shards and which pipeline stage owns each module. It does not select or order passes (that is PassConfig + PassPipeline). - rename class PassPlan to GraphParallelPlan and module pass_plan.py to graph_parallel_plan.py (and its test file) - rename methods fsdp_wrap / fsdp_wrap_pattern / is_fsdp_module to fsdp_mark / fsdp_mark_pattern / is_marked_for_fsdp - rename factories create_pass_plan_from_yaml / create_simple_pass_plan to create_plan_from_yaml / create_all_fsdp_plan - rename the pass_plan parameter / kwarg / attribute to parallel_plan - drop FSDPModuleConfig, get_fsdp_config and merge: the dataclass field only duplicated its own dict key and neither helper had a production consumer, so fsdp_modules / fsdp_patterns become plain sets | 1 个月前 | |
Merge upstream/master into trainer_dev Bring master's content into trainer_dev, resolving conflicts between master's platform-abstraction removal and resolver API naming (normalize_value / annotation / ConfigResolutionError) and trainer_dev's omni data lifecycle, runtime input adapter, DSA attention support, and model integration diagnostics. | 1 个月前 | |
feat(expert_parallel): overlapping dispatch, capacity limit and chunked exchange Port the expert-parallel work the Kimi-K2.6 reproduction depends on: the overlapping dispatch/combine split (ep_routed_dispatch + ep_routed_experts_and_combine, exposed through build_ep_compute(overlap_fn=...)), the capacity limit, chunked/fused dispatch, the balanced router and the static-split planner -- together with the unit tests that pin all of it (tests/ut/core/expert_parallel, 179 cases; 263 with the dual-mode EP suite). The capacity limit drops the slots of an over-capacity expert by routing weight (HP_EP_CAPACITY_ORDER=score, the new default) instead of by position in the expert-major order. The number kept per expert -- the invariant the memory bound rests on -- is identical in both policies, so the archived drop-rate / peak / step-time sweeps stay valid while "which slots die" becomes a defined policy (the cheapest contributions). HP_EP_CAPACITY_ORDER=first reproduces the archived behaviour bit-for-bit, and the per-step log line now names the policy it used. Both keys share ONE fp32 sort key (expert index + inverted weight), which keeps the AICore float sort and adds no host synchronisation. Measured on 2SN (GBS 256, ep 128 / dp_shard 128 / edp 2, real router, two rounds each): the score policy costs +0.015 s per step against the position policy (~0.07%; drop rate 70.23% in both, peak 40.09 vs 40.28 GB), so the policy switch is free at this shape. Enabling the capacity limit at all costs +0.51 s per step (~2.5%): one AICore argsort plus the mask bookkeeping per MoE layer, paid whenever HP_EP_CAPACITY_FACTOR is set, whatever the policy. Measured on 2SN (GBS 256, seq 8192, ep 128 / dp_shard 128 / edp 2): 43.7672 GB with the overlap off -> 41.4853 GB with it on. | 25 天前 | |
Merge upstream/master into trainer_dev Bring master's content into trainer_dev, resolving conflicts between master's platform-abstraction removal and resolver API naming (normalize_value / annotation / ConfigResolutionError) and trainer_dev's omni data lifecycle, runtime input adapter, DSA attention support, and model integration diagnostics. | 1 个月前 | |
feat(expert_parallel): overlapping dispatch, capacity limit and chunked exchange Port the expert-parallel work the Kimi-K2.6 reproduction depends on: the overlapping dispatch/combine split (ep_routed_dispatch + ep_routed_experts_and_combine, exposed through build_ep_compute(overlap_fn=...)), the capacity limit, chunked/fused dispatch, the balanced router and the static-split planner -- together with the unit tests that pin all of it (tests/ut/core/expert_parallel, 179 cases; 263 with the dual-mode EP suite). The capacity limit drops the slots of an over-capacity expert by routing weight (HP_EP_CAPACITY_ORDER=score, the new default) instead of by position in the expert-major order. The number kept per expert -- the invariant the memory bound rests on -- is identical in both policies, so the archived drop-rate / peak / step-time sweeps stay valid while "which slots die" becomes a defined policy (the cheapest contributions). HP_EP_CAPACITY_ORDER=first reproduces the archived behaviour bit-for-bit, and the per-step log line now names the policy it used. Both keys share ONE fp32 sort key (expert index + inverted weight), which keeps the AICore float sort and adds no host synchronisation. Measured on 2SN (GBS 256, ep 128 / dp_shard 128 / edp 2, real router, two rounds each): the score policy costs +0.015 s per step against the position policy (~0.07%; drop rate 70.23% in both, peak 40.09 vs 40.28 GB), so the policy switch is free at this shape. Enabling the capacity limit at all costs +0.51 s per step (~2.5%): one AICore argsort plus the mask bookkeeping per MoE layer, paid whenever HP_EP_CAPACITY_FACTOR is set, whatever the policy. Measured on 2SN (GBS 256, seq 8192, ep 128 / dp_shard 128 / edp 2): 43.7672 GB with the overlap off -> 41.4853 GB with it on. | 25 天前 | |
Update generate checks Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 3 个月前 | |
fix: clean up MoE code static analysis warnings on master branch | 1 个月前 | |
Merge pull request #1011 from fandengdong/feat/parameter-freezing feat(models): implement parameter freezing in the model builder | 16 天前 | |
chore: purge MindSpore residue after backend removal The platform abstraction layer (and with it the MindSpore backend) was deleted earlier, but references to it survived throughout the tree. This removes them; it changes no behavior on the surviving Torch path. Removed: - docker/Dockerfile.mindspore, the MindSpore build branch and examples in docker/build_hyper-parallel_npu.sh / docker/README.md - .jenkins/test/config/dependent_packages.yaml (a single MindSpore wheel URL with no remaining consumer) - MindSporeCase in tests/common/parallel_case.py and msrun_case in tests/common/distributed_launcher.py, plus msrun / MS_NODE_ID rank-discovery fallbacks - dead _MS_PRIMITIVE_OP_NAMES branches in the shard ops (none of those op names are registered in any yaml) and their tests - the stale aclop packed-args notes in parallel_elementwise.py / parallel_gather.py (_normalize_aclop_args no longer exists) - three pylint errors the Atomgit gate reports on files this commit already touches: an unused os import in _pytorch_reference.py, a missing docstring on NoAcceleratorGuard._check_init_process_group and trailing blank lines in test_parallel_topk.py - mindspore from the multicore boundary test, pylint's generated-members, from the autogit lint backend list and from the docs, examples and .agent rules Kept on purpose: - _MS_POSITIONAL_DTYPE_OP_NAMES in parallel_reduce.py — SumExt / MeanExt are live torch registrations in torch_reduce.yaml, so the trailing positional dtype slot is still reachable - test_runtime_sources_import_no_platform_layer — the boundary test still asserts production sources import no Platform layer - URLs under the project's own mindspore.org / gitcode / atomgit namespaces, including the links to the MindSpore repo's contribution rules - hyper_parallel_v1.0.0_release_notes.md (historical) | 1 个月前 | |
feat: add model integration diagnostics and runtime validation support | 1 个月前 | |
Merge pull request #1012 from fandengdong/feat/kimi-k26-adaptation feat(models): add the Kimi-K2.6 multimodal family (kimi_k26) | 16 天前 | |
refactor: 去除 platform 抽象,改用 torch 原生接口 删除 hyper_parallel/platform/ 整个双后端抽象层,相关实现直接使用 torch 原生接口;仅保留的 Torch-only 组件迁至 components/。 主要变更: - 删除 hyper_parallel/platform/**(mindspore 后端、platform.py、 swap_optimizer、activation_checkpoint、loss_parallel_ops、 function_override、init_weights 等) - hyper_parallel/platform/torch/common/moe.py 重命名至 hyper_parallel/components/modules/moe.py(内容不变),并同步更新 examples/torch、tests/torch、核心模块中的 20 余处 import - hyper_parallel/__init__.py 移除 get_platform 导出 - destroy_process_group 中 _P2P_MULTI_STREAM_GROUPS 改从 hyper_parallel.core.pipeline_parallel._p2p 导入 - 删除 examples/mindspore/**、tests/ut/platform/** - scripts/pylint_hyperparallel.py:PLATFORM_ALLOWED_PARTS 移除 hyper_parallel/platform/;删除 instance-platform-assignment (C9003) 规则 - 更新 .agent 规则、docs、docker、CODEOWNERS 等配套内容 327 files changed, 648 insertions(+), 20321 deletions(-) | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 1 个月前 |