Repository navigation
feat(weight-sync): add engine-group wave scheduling #4341
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: conda CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Read the sglang base image tag from docker/Dockerfile so we only have to bump | |
| # the Dockerfile when sglang versions change. We use lmsysorg/sglang (upstream | |
| # sglang's CUDA image) rather than slimerl/sglang so the conda build starts | |
| # from a clean sglang-only base instead of one with slime already installed. | |
| resolve-image: | |
| if: contains(github.event.pull_request.title, '[release]') | |
| runs-on: ubuntu-latest | |
| outputs: | |
| image: ${{ steps.read.outputs.image }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - id: read | |
| shell: bash | |
| run: | | |
| tag=$(grep -oP '^ARG SGLANG_IMAGE_TAG=\K\S+' docker/Dockerfile) | |
| if [ -z "$tag" ]; then | |
| echo "Failed to parse SGLANG_IMAGE_TAG from docker/Dockerfile" >&2 | |
| exit 1 | |
| fi | |
| echo "image=slimerl/sglang:${tag}" >> "$GITHUB_OUTPUT" | |
| build-conda: | |
| needs: resolve-image | |
| if: contains(github.event.pull_request.title, '[release]') | |
| runs-on: self-hosted | |
| container: | |
| image: ${{ needs.resolve-image.outputs.image }} | |
| options: --privileged --cap-add SYS_NICE --security-opt seccomp=unconfined --gpus all --ipc=host --shm-size=16g --ulimit memlock=-1 --ulimit stack=67108864 --memory=0 --memory-swap=0 -v /mnt/nvme0n1/models:/root/models -v /mnt/nvme0n1/datasets:/root/datasets | |
| defaults: | |
| run: | |
| working-directory: ${{ github.workspace }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Construct Conda | |
| run: | | |
| echo "📦 Installing slime..." | |
| cd $GITHUB_WORKSPACE | |
| echo "Current directory: $(pwd)" | |
| mkdir -p /root/ | |
| BASE_DIR=/root bash build_conda.sh | |
| shell: bash | |
| - name: Download model and dataset | |
| run: | | |
| echo "🔗 Downloading up model and dataset..." | |
| # Create cache directories if they don't exist | |
| mkdir -p /root/models /root/datasets | |
| echo "Downloading Qwen3-30B-A3B..." | |
| hf download Qwen/Qwen3-30B-A3B --local-dir /root/models/Qwen3-30B-A3B | |
| hf download Qwen/Qwen3-30B-A3B-FP8 --local-dir /root/models/Qwen3-30B-A3B-FP8 | |
| hf download --repo-type dataset zhuzilin/dapo-math-17k --local-dir /root/datasets/dapo-math-17k | |
| hf download --repo-type dataset zhuzilin/aime-2024 --local-dir /root/datasets/aime-2024 | |
| shell: bash | |
| - name: Convert checkpoint | |
| run: | | |
| echo "🔄 Converting model checkpoint..." | |
| cd $GITHUB_WORKSPACE | |
| echo "Current directory: $(pwd)" | |
| source ~/.bashrc | |
| micromamba activate slime | |
| export CUDA_HOME="$CONDA_PREFIX" | |
| source scripts/models/qwen3-30B-A3B.sh | |
| PYTHONPATH=/root/Megatron-LM torchrun --nproc-per-node 8 tools/convert_hf_to_torch_dist.py \ | |
| ${MODEL_ARGS[@]} \ | |
| --hf-checkpoint /root/models/Qwen3-30B-A3B \ | |
| --save /root/Qwen3-30B-A3B_torch_dist | |
| shell: bash | |
| - name: Run tests | |
| run: | | |
| echo "🧪 Running tests..." | |
| cd $GITHUB_WORKSPACE | |
| echo "Current directory: $(pwd)" | |
| source ~/.bashrc | |
| micromamba activate slime | |
| export CUDA_HOME="$CONDA_PREFIX" | |
| SLIME_TEST_ENABLE_EVAL=0 SLIME_TEST_USE_DEEPEP=0 SLIME_TEST_USE_FP8_ROLLOUT=0 python tests/test_qwen3_30B_A3B.py | |
| shell: bash | |
| - name: Cleanup | |
| if: always() | |
| run: | | |
| echo "🧹 Cleaning up..." | |
| pkill -9 ray || true | |
| ray stop --force || true | |
| pkill -9 python || true | |
| shell: bash |