FMS Acceleration for Mixture-of-Experts
This library contains plugins to accelerate finetuning with the following optimizations:
- Expert-Parallel MoE with Triton Kernels from ScatterMoE, and some extracted from megablocks.
- Megablocks kernels for
gatherandscatter
- Megablocks kernels for
Plugins
| Plugin | Description | Depends | Loading | Augmentation | Callbacks |
|---|---|---|---|---|---|
| scattermoe | MoE Expert Parallel with Triton Kernels from scattermoe (& megablocks) | ScatterMoE / extracted kernels from megablocks | ✅ | ✅ |
Adding New Models
Our ScatterMoe implementation is a module-swap; to add new models we need to update the specifications in scattermoe_constants.py.
- See the code documentation within to understand how to add new models.
Using ScatterMoE Saved Checkpoints
ScatterMoE checkpoints are saved using torch.distributed.checkpoint (DCP) and which is by default StateDictType.SHARDED_STATE_DICT:
DTensorslimited support for full state dicts.- sharded state dicts are the extremely efficient, and require little comms overhead when saving.
We provide a script to recover back the original checkpoint:
- currently the script is only tested in the case where DCP has saved the model in a single node.
If the checkpoint is stored in hf/checkpoint-10, call the following to have the converted checkpoint written into output_dir:
python -m fms_acceleration_moe.utils.checkpoint_utils \
hf/checkpoint-10 output_dir \
mistralai/Mixtral-8x7B-Instruct-v0.1
Code Extracted from Megablocks
Notes on code extraction:
- we have only extracted two
autogradfunctions GatherOp and ScatterOp, - and the associated triton kernels from backend/kernels.py; mostly the
_padded_copy.
Running Benchmarks
Run the below in the top-level directory of this repo:
- the
scattermoedep is not included by default, so the-xswitch installs it. - consider disabling the
torchmemory logging to see improved speeds.
tox -e run-benches \
-x testenv:run-benches.setenv+="MEMORY_LOGGING=nvidia" \
-- \
"1 2 4" 128 benchmark_outputs scenarios-moe.yaml accelerated-moe-full
or run the larger Mixtral-8x7B bench:
tox ... \
8 128 benchmark_outputs scenarios-moe.yaml accelerated-moe-full-mixtral
NOTE: if FileNotFoundError is observed on the triton cache, similar to issues like these:
then somehow tox is causing problems with triton and multiprocessing (there is some race condition).
But the workaound is to first activate the tox env and
running in bash:
# if FileNotFoundError in the triton cache is observed
# - then activate the env and run the script manually
source .tox/run-benches/bin/activate
bash scripts/run_benchmarks.sh \
....
Triton Kernel Dependencies
Triton Kernels are copied into scattermoe_utils and were copied from kernel hyperdrive which is a fork of cute kernels
Known Issues
These are currently some known issues not yet resolved:
- should eventually remove the dependency on an external
kernel-hyperdriverepository. - now support only loading sharded
safetensornon-GGUF MoE checkpoints. This is a reasonable assumption since MoE checkpoints are typically above the size limit that prevents it being saved into a single checkpoint filed. - when used together with FSDP, the FSDP's
clip_grad_normwill not properly compute forScatterMoE, see issue here.
Metadata
Release files for fms-acceleration-moe 0.4.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fms_acceleration_moe-0.4.6-py3-none-any.whl | Python 3 | none | any | Details for fms_acceleration_moe-0.4.6-py3-none-any.whl |
Release files / fms_acceleration_moe-0.4.6-py3-none-any.whl
| Download URL | fms_acceleration_moe-0.4.6-py3-none-any.whl |
|---|---|
| Size | 51.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8ff199666431a76244dbfc47e05ee3ed31177dcb60163b2c2da4f0b78bf15354
|
|
BLAKE2b-256 checksum How to use checksums |
cc171d0568956b7cfb80b468bbb8e574815dd70cf3662e4eef1dd9bc2abe074c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 30, 2026.
Transparency logSecurity for fms-acceleration-moe 0.4.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for fms_acceleration_moe-0.4.6-py3-none-any.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.