Skip to content
Closed
Show file tree
Hide file tree
Changes from 51 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
966a5b9
Changed VERSION to 2.9.0
ptrendx Oct 16, 2025
739c656
[JAX] Fix imports in test for deprecated jax.experimental.pjit (#2274)
KshitijLakhani Oct 17, 2025
c2a643d
Wheels for cuda 13 (#2278)
ksivaman Oct 18, 2025
7e72d41
[JAX] NVFP4 recipe with option to enable/disable SR, RHT, and 2D quan…
jberchtold-nvidia Oct 22, 2025
9b75db3
Include TE core headers in final build (#2291)
ksivaman Oct 23, 2025
8b9849a
Overhaul the compilation for the arch-specific features (#2279)
ptrendx Oct 23, 2025
c4c185d
[PyTorch] Add max_logit support for MuonClip (#2195)
cyanguwa Oct 25, 2025
fa71964
[PyTorch] Fix CI failures due to deterministic attention backend (#2288)
ksivaman Oct 20, 2025
fe9b150
[JAX] Fix: Skip determinism tests for bprop for all sm >=100 (#2315)
KshitijLakhani Oct 30, 2025
0acd0e7
[PyTorch] Fix attention backend and tests for `sm120` (#2320)
ksivaman Oct 30, 2025
9cc089a
[PyT] Bump the min version expected to supported FP8 current scaling …
KshitijLakhani Oct 30, 2025
70f5366
[JAX] Ensure JAX reference impl uses an accurate backend in our tests…
jberchtold-nvidia Oct 30, 2025
bae9d3a
[Version] Reset to TransformerEngine v2.9 (#5)
lxd-cumt Dec 11, 2025
e13e38a
Fix import bugs (#6)
lxd-cumt Dec 11, 2025
ef41367
Fix flash-attention fallback failures (#7)
lxd-cumt Dec 17, 2025
fd5f657
Multi-Backend Architecture Implementation for TransformerEngine-FL (#4)
lihongyang1990 Dec 29, 2025
57adff4
Add missing __init__.py files and policy test suite (#9)
lihongyang1990 Jan 4, 2026
ec8edfc
Polish readme (#11)
lxd-cumt Jan 4, 2026
b26b226
Register get_attention_backend for all backends and fix FlashAttentio…
lihongyang1990 Jan 6, 2026
a423680
fix nv shared lib bug. (#16)
lihongyang1990 Jan 7, 2026
fbe34bd
Add a new vendor implementation named hygon (#15)
Jan 12, 2026
396794e
Update the way the gems context is invoked in the FlagOS Backend (#18)
lxd-cumt Jan 12, 2026
3d80e63
Unify the usage of the gems context (#20)
lxd-cumt Jan 12, 2026
f101d2c
fix: torch SDPA backend multi-batch support (#17)
lihongyang1990 Jan 12, 2026
832a797
Remove use_gems context and call flag_gems.xxx directly (#22)
lxd-cumt Jan 13, 2026
08cabba
Add new vendor backend METAX (#21)
dinghaodhd Jan 16, 2026
03d1998
Add multi_tensor_adam_param_remainder and context parallel support (#23)
lihongyang1990 Jan 21, 2026
54390c7
Fix enum mismatch in plugins (#25)
lxd-cumt Jan 22, 2026
48c8480
add Vendor KUNLUNXIN (#27)
ssuurrffaaccee Jan 25, 2026
de00a8a
Fix the incorrect registration on Kunlunxin (#29)
lxd-cumt Jan 26, 2026
35e1809
Polish available check for kunlunxin (#30)
lxd-cumt Jan 26, 2026
8690ab4
Add new register op get_attention_backend for METAX (#31)
dinghaodhd Jan 28, 2026
b0a5934
[iluvatar]add vendor/iluvatar backend (#35)
DannyP0 Feb 5, 2026
12b2077
Fix: Resolve parameter mismatch between TE_FL and NVTE functions (#34)
lihongyang1990 Feb 10, 2026
f808816
[CICD] Add workflows to validate TE QA test cases (#41)
Darryl233 Mar 2, 2026
47e8ee7
Refactor optimizer implementations and improve multi_tensor ops (#36)
lihongyang1990 Mar 3, 2026
acced6d
tefl musa support (#42)
jiamingwang-mt Mar 11, 2026
4f54860
Add python-level patches to supporting multiple platforms (#49)
lxd-cumt Mar 23, 2026
7f788a3
Add scaled_masked_softmax_forward/backward for flagos backend (#52)
lxd-cumt Mar 25, 2026
1f98511
Fix quantizer dtype conversion errors (#54)
lxd-cumt Mar 26, 2026
2188137
apply flagos te_groups_gemm op (#55)
chai-xiaonan Mar 30, 2026
ebcfadc
[CICD] support Metax MACA workflow (#48)
qqjxzxq Apr 2, 2026
9d1c48a
[CICD] Upload unittest coverage report to FlagCICD platform && Access…
BrianPei Apr 9, 2026
d5ada9d
merge(dev): integrate upstream release_v2.14
Apr 10, 2026
46b77e4
plugin: sync plugin APIs with upstream csrc changes
Apr 13, 2026
3230b42
patch: normalize new upstream 'cuda' string hardcoding to te_device_t…
Apr 13, 2026
0ebf525
fix: update stale references in fork code to match upstream renames
Apr 13, 2026
3c86a95
plugin: sync plugin APIs with upstream csrc changes
Apr 13, 2026
cc03ca3
fix(stage9): add bottom_right_diagonal and cuda_graph params to fused…
Apr 14, 2026
4db46ce
fix(stage9): replace stale CPUOffloadEnabled with is_cpu_offload_enab…
Apr 14, 2026
8fa8199
Final Polish
Apr 15, 2026
d7e9e7b
[CICD] Refactor workflows, Add integration_tests, Switch to FlagCICD …
BrianPei Apr 24, 2026
ae664ea
[CICD] Refactor workflows, Add integration_tests, Switch to FlagCICD …
BrianPei Apr 24, 2026
24c28d0
merge: integrate upstream release_v2.14 via tree replacement
May 9, 2026
36af46a
chore: remove SYNC_POINT.md (intermediate sync record, not needed on …
May 9, 2026
e2812ae
fix commit init
May 9, 2026
7b33144
Fix pylint errors: remove unused imports and correct import order
May 9, 2026
2c334ae
Fix fused_rope_backward: add missing start_positions parameter to plu…
May 11, 2026
879eddc
fix test_numerics unit test
May 12, 2026
e12589a
fix Latex not found errors, use mathjax
May 12, 2026
e5c8380
Fix Sphinx build warnings: suppress autoapi import resolution and unk…
May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/configs/ascend.yml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This configuration file is not derived from the template that used by cuda.yml and meta.yml

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Huawei Ascend NPU configuration
image: ascend-infer:ubuntu18.04
labels:
- npu
- ascend
docker_options: |
--device /dev/davinci0
--device /dev/davinci1
--device /dev/davinci2
--device /dev/davinci3
--device /dev/davinci_manager
--device /dev/devmm_svm
--device /dev/hisi_hdc
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver
--volume /usr/local/Ascend/add-ons:/usr/local/Ascend/add-ons
65 changes: 65 additions & 0 deletions .github/configs/cuda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# CUDA Hardware Configuration for TransformerEngine-FL
# Refactored for BAAI DGX A100 Nodes
# This file defines environment variables, volumes, and test filters for TE tests.

hardware_name: cuda
display_name: 'NVIDIA CUDA (A100)'

ci_image: harbor.baai.ac.cn/flagscale/cuda12.8.1-torch2.7.1-python3.10-te2.9:20260209

# Runner labels for self-hosted A100 node
# runner_labels:
# - self-hosted
# - Linux
# - X64
# - nvidia
# - gpu-8
runner_labels:
- nv-8g-cicd-te

# Container volumes
container_volumes:
- /home/flagscale_cicd/flask/static:/workspace/report
# - /home/flagscale_cicd/data:/opt/data

# Container options
container_options: >-
--privileged
--gpus all
--shm-size=500g
--ipc=host
--ulimit memlock=-1
--ulimit stack=67108864
--user root

# Device types
device_types:
- a100

# Build environment variables (platform-specific)
build_env:
TE_FL_SKIP_CUDA: '0'
SKIP_CUDA_BUILD: '0'
NVTE_WITH_CUDA: '1'
NVTE_WITH_MACA: '0'
TE_WITH_NCCL: '1'
NVTE_FRAMEWORK: pytorch
CUDA_HOME: /usr/local/cuda-12.8
NVCC: /usr/local/cuda-12.8/bin/nvcc

# Test matrix configuration
test_matrix:
l0_pytorch:
path: 'qa/L0_pytorch_unittest/test.sh'
ignored_tests:
- test_sanity_layernorm_mlp
- test_sanity_gpt
- test_sanity_bert
- test_sanity_T5
- test_sanity_amp_and_nvfuser
- test_sanity_drop_path
- test_layernorm_mlp_accuracy
- test_grouped_linear_accuracy
- test_gpt_accuracy
- test_basic_linear
- test_layer_norm
71 changes: 71 additions & 0 deletions .github/configs/metax.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Metax Hardware Configuration for TE-FL
# This file defines CI/CD settings for Metax-based testing
# Test configurations are defined in tests/test_utils/config/platforms/metax.yaml

hardware_name: metax
display_name: 'Metax Tests'

ci_image: localhost:5000/megatron-lm-with-te:v1
# ci_image: harbor.baai.ac.cn/flagscale/megatron-lm-with-te:202603231839

runner_labels:
- self-hosted
- Linux
- X64
- metax
- dev
# runner_labels:
# - mx-4g-cicd-te

container_volumes:
- /nfs/metax_fs:/nfs/metax_fs
- /dev/dri:/dev/dri
- /dev/mxcd:/dev/mxcd
- /dev/infiniband:/dev/infiniband

container_options: >-
--uts=host
--ipc=host
--privileged=true
--group-add video
--shm-size=100gb
--ulimit memlock=-1
--security-opt seccomp=unconfined
--security-opt apparmor=unconfined
--device=/dev/dri
--device=/dev/mxcd
--device=/dev/infiniband
--user root
--ulimit nofile=65535:65535
-e PLATFORM=metax
-e TORCH_DISTRIBUTED_BACKEND=mccl
-e LD_LIBRARY_PATH=/opt/maca/lib:/usr/local/lib:$LD_LIBRARY_PATH

build_env:
TE_FL_SKIP_CUDA: '1'
NVTE_WITH_MACA: '1'
CUDA_HOME: /opt/maca
MACA_HOME: /opt/maca

# Device types to run tests on
device_types:
- c500

# Test matrix configuration
test_matrix:
unit:
devices:
- c500
# Ignored test files for unit tests
# These files will be skipped when running pytest
ignored_tests:
# example: tests/unit_tests/test_example.py
# - tests/unit_tests/test_inference.py
# - tests/unit_tests/test_rl_utils.py

# functional:
# train:
# - device: c500
# task: train
# model: deepseek
# case: tp2_pp2_ep2
16 changes: 16 additions & 0 deletions .github/configs/template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Configuration Template
# This file describes the structure for hardware-specific configurations.
#
# Fields:
# - image: Docker image to use for the runner
# - labels: List of labels for the runner
# - docker_options: Additional Docker options for mounting devices, volumes, etc.
#
# Example:
# image: <docker_image>
# labels:
# - <label1>
# - <label2>
# docker_options: |
# --option1 value1
# --option2 value2
32 changes: 32 additions & 0 deletions .github/workflows/all_tests_ascend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: ascend_tests

on:
# push:
# branches: ["main"]
# pull_request:
# branches: ["main"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.actor }}
cancel-in-progress: true

jobs:
run_tests:
# Package manager and environment settings are read from .github/configs/ascend.yml
uses: ./.github/workflows/all_tests_common.yml
with:
platform: ascend

all_tests:
needs: run_tests
runs-on: ubuntu-latest
if: always()
steps:
- name: Verify workflow status
run: |
if [ "${{ needs.run_tests.result }}" != "success" ]; then
echo "❌ Tests workflow failed"
exit 1
fi
echo "✅ All tests passed!"
150 changes: 150 additions & 0 deletions .github/workflows/all_tests_common.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Common All Tests

on:
workflow_call:
inputs:
platform:
required: true
type: string
description: Platform name (e.g., cuda, default)
setup_commands:
required: false
type: string
default: ''

jobs:
checkout_and_config:
defaults:
run:
shell: bash
runs-on: ubuntu-latest
outputs:
ci_image: ${{ steps.config.outputs.ci_image }}
runs_on: ${{ steps.config.outputs.runs_on }}
container_volumes: ${{ steps.config.outputs.container_volumes }}
container_options: ${{ steps.config.outputs.container_options }}
device_types: ${{ steps.config.outputs.device_types }}
train_test_matrix: ${{ steps.config.outputs.train_test_matrix }}
ignored_tests: ${{ steps.config.outputs.ignored_tests }}
build_env: ${{ steps.config.outputs.build_env }}
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Check if tests should run
id: should_run
run: |

echo "should_run=true" >> $GITHUB_OUTPUT

- name: Load platform configuration
id: config
run: |
set -euo pipefail

PLATFORM="${{ inputs.platform }}"
CONFIG_FILE=".github/configs/${PLATFORM}.yml"

# Install mikefarah/yq (v4) for YAML parsing
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.45.1/yq_linux_amd64
sudo chmod +x /usr/local/bin/yq
/usr/local/bin/yq --version
echo "Loading configuration from $CONFIG_FILE"

# Read CI image
CI_IMAGE=$(yq '.ci_image' "$CONFIG_FILE")
echo "ci_image=$CI_IMAGE" >> $GITHUB_OUTPUT

# Read runner labels and format as JSON array
RUNS_ON=$(yq '.runner_labels | tojson(0)' "$CONFIG_FILE")
echo "runs_on=$RUNS_ON" >> $GITHUB_OUTPUT

# Read container volumes and format as JSON array
VOLUMES=$(yq '.container_volumes | tojson(0)' "$CONFIG_FILE")
echo "container_volumes=$VOLUMES" >> $GITHUB_OUTPUT

# Read container options
OPTIONS=$(yq '.container_options' "$CONFIG_FILE")
echo "container_options=$OPTIONS" >> $GITHUB_OUTPUT

# Read device types
DEVICE_TYPES=$(yq '.device_types | tojson(0)' "$CONFIG_FILE")
echo "device_types=$DEVICE_TYPES" >> $GITHUB_OUTPUT

# Read test matrix for training
TRAIN_MATRIX=$(yq '.test_matrix.functional.train | tojson(0)' "$CONFIG_FILE")
echo "train_test_matrix=$TRAIN_MATRIX" >> $GITHUB_OUTPUT

# Read ignored tests list from test_matrix.unit (default to empty array if not defined)
IGNORED_TESTS=$(yq '.test_matrix.unit.ignored_tests // [] | tojson(0)' "$CONFIG_FILE")
echo "ignored_tests=$IGNORED_TESTS" >> $GITHUB_OUTPUT

# Read build environment variables (default to empty object if not defined)
BUILD_ENV=$(yq '.build_env // {} | tojson(0)' "$CONFIG_FILE")
echo "build_env=$BUILD_ENV" >> $GITHUB_OUTPUT

unit_tests:
needs: checkout_and_config
strategy:
fail-fast: false
matrix:
device: ${{ fromJson(needs.checkout_and_config.outputs.device_types) }}
uses: ./.github/workflows/unit_tests_common.yml
name: unit_tests
with:
platform: ${{ inputs.platform }}
device: ${{ matrix.device }}
image: ${{ needs.checkout_and_config.outputs.ci_image }}
runs_on: ${{ needs.checkout_and_config.outputs.runs_on }}
container_volumes: ${{ needs.checkout_and_config.outputs.container_volumes }}
container_options: ${{ needs.checkout_and_config.outputs.container_options }}
setup_commands: ${{ inputs.setup_commands }}
ignored_tests: ${{ needs.checkout_and_config.outputs.ignored_tests }}
build_env: ${{ needs.checkout_and_config.outputs.build_env }}

# arguments.py not compatible with megatron-core-fl
# functional_tests:
# needs:
# - checkout_and_config
# if: fromJson(needs.checkout_and_config.outputs.train_test_matrix)[0] != null
# uses: ./.github/workflows/functional_tests_common.yml
# with:
# platform: ${{ inputs.platform }}
# test_matrix: ${{ needs.checkout_and_config.outputs.train_test_matrix }}
# image: ${{ needs.checkout_and_config.outputs.ci_image }}
# runs_on: ${{ needs.checkout_and_config.outputs.runs_on }}
# container_volumes: ${{ needs.checkout_and_config.outputs.container_volumes }}
# container_options: ${{ needs.checkout_and_config.outputs.container_options }}


all_tests_complete:
defaults:
run:
shell: bash
needs:
- checkout_and_config
- unit_tests
# - functional_tests
runs-on: ubuntu-latest
if: always()
steps:
- name: Verify all tests passed
run: |
# Check all test jobs (skip if not run)
failed=false

if [ "${{ needs.unit_tests.result }}" != "success" ]; then
echo "❌ Unit tests failed"
failed=true
fi

# if [ "${{ needs.functional_tests.result }}" != "success" ]; then
# echo "❌ Training functional tests failed"
# failed=true
# fi

if [ "$failed" = "true" ]; then
exit 1
fi

echo "✅ All tests completed successfully!"
32 changes: 32 additions & 0 deletions .github/workflows/all_tests_cuda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: cuda_tests

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.actor }}
cancel-in-progress: true

jobs:
run_tests:
# Package manager and environment settings are read from .github/configs/cuda.yml
uses: ./.github/workflows/all_tests_common.yml
with:
platform: cuda

all_tests:
needs: run_tests
runs-on: ubuntu-latest
if: always()
steps:
- name: Verify workflow status
run: |
if [ "${{ needs.run_tests.result }}" != "success" ]; then
echo "❌ Tests workflow failed"
exit 1
fi
echo "✅ All tests passed!"
Loading
Loading