Created
August 28, 2025 20:36
-
-
Save hebiao064/335ac5b44237af8f9514bb37fb216035 to your computer and use it in GitHub Desktop.
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
| #!/bin/bash | |
| # for rerun the task | |
| pkill -9 sglang | |
| sleep 3 | |
| ray stop --force | |
| pkill -9 ray | |
| pkill -9 python | |
| sleep 3 | |
| pkill -9 ray | |
| pkill -9 python | |
| set -ex | |
| # will prevent ray from buffering stdout/stderr | |
| export PYTHONBUFFERED=16 | |
| export CUDA_VISIBLE_DEVICES=2,3,4,5 | |
| # clean up the profile directory | |
| rm -rf /workspace/slime/profile/* | |
| NVLINK_COUNT=$(nvidia-smi | grep -o "NVLink" | wc -l) | |
| if [ "$NVLINK_COUNT" -gt 0 ]; then | |
| HAS_NVLINK=1 | |
| else | |
| HAS_NVLINK=0 | |
| fi | |
| echo "HAS_NVLINK: $HAS_NVLINK (detected $NVLINK_COUNT NVLink references)" | |
| SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" | |
| source "${SCRIPT_DIR}/models/qwen3-30B-A3B.sh" | |
| CKPT_ARGS=( | |
| # --hf-checkpoint /root/Qwen3-30B-A3B | |
| --hf-checkpoint /root/Qwen3-30B-A3B | |
| --ref-load /root/Qwen3-30B-A3B_torch_dist | |
| --load /root/Qwen3-4B_slime/ | |
| --save /root/Qwen3-4B_slime/ | |
| --save-interval 20 | |
| ) | |
| ROLLOUT_ARGS=( | |
| --prompt-data /root/dapo-math-17k/dapo-math-17k.jsonl | |
| --input-key prompt | |
| --label-key label | |
| --apply-chat-template | |
| --rollout-shuffle | |
| --rm-type deepscaler | |
| --num-rollout 100 | |
| --rollout-batch-size 8 | |
| --n-samples-per-prompt 1 | |
| --rollout-max-response-len 128 | |
| --rollout-temperature 0.8 | |
| --global-batch-size 8 | |
| --balance-data | |
| ) | |
| EVAL_ARGS=( | |
| --eval-interval 20 | |
| --eval-prompt-data aime /root/aime-2024/aime-2024.jsonl | |
| --n-samples-per-eval-prompt 1 | |
| --eval-max-response-len 16384 | |
| --eval-top-p 0.7 | |
| ) | |
| PERF_ARGS=( | |
| --tensor-model-parallel-size 4 | |
| --sequence-parallel | |
| --pipeline-model-parallel-size 1 | |
| --context-parallel-size 1 | |
| --expert-model-parallel-size 4 | |
| --expert-tensor-parallel-size 1 | |
| --recompute-granularity full | |
| --recompute-method uniform | |
| --recompute-num-layers 1 | |
| # --micro-batch-size 1 | |
| --use-dynamic-batch-size | |
| --max-tokens-per-gpu 20480 | |
| ) | |
| GRPO_ARGS=( | |
| --advantage-estimator grpo | |
| --use-kl-loss | |
| --kl-loss-coef 0.00 | |
| --kl-loss-type low_var_kl | |
| --kl-coef 0.00 | |
| --entropy-coef 0.00 | |
| --eps-clip 0.2 | |
| --eps-clip-high 0.28 | |
| ) | |
| OPTIMIZER_ARGS=( | |
| --optimizer adam | |
| --lr 1e-6 | |
| --lr-decay-style constant | |
| --weight-decay 0.1 | |
| --adam-beta1 0.9 | |
| --adam-beta2 0.98 | |
| --optimizer-cpu-offload | |
| --overlap-cpu-optimizer-d2h-h2d | |
| --use-precision-aware-optimizer | |
| ) | |
| WANDB_ARGS=( | |
| --use-wandb | |
| --wandb-project slime-dev | |
| --wandb-group qwen3-30B-A3B-BF16-EP8-TP8_EPMOE-ASYNC | |
| --wandb-key {None} | |
| ) | |
| SGLANG_ARGS=( | |
| --rollout-num-gpus-per-engine 4 | |
| --sglang-mem-fraction-static 0.6 | |
| --sglang-cuda-graph-bs 1 2 4 8 $(seq 16 8 256) | |
| --sglang-enable-ep-moe | |
| --sglang-expert-parallel-size 4 | |
| --sglang-dp-size 4 | |
| --sglang-enable-dp-attention | |
| --sglang-disable-overlap-schedule | |
| # --debug-rollout-only | |
| ) | |
| MISC_ARGS=( | |
| # default dropout in megatron is 0.1 | |
| --attention-dropout 0.0 | |
| --hidden-dropout 0.0 | |
| # should be good for model performance | |
| --accumulate-allreduce-grads-in-fp32 | |
| --attention-softmax-in-fp32 | |
| # need to comment this when using model with MLA | |
| --attention-backend flash | |
| ) | |
| # launch the master node of ray in container | |
| export MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} | |
| ray start --head --node-ip-address ${MASTER_ADDR} --num-gpus 4 --disable-usage-stats --dashboard-host=0.0.0.0 --dashboard-port=8265 | |
| # Build the runtime environment JSON with proper variable substitution | |
| RUNTIME_ENV_JSON="{ | |
| \"env_vars\": { | |
| \"PYTHONPATH\": \"/root/Megatron-LM/\", | |
| \"CUDA_DEVICE_MAX_CONNECTIONS\": \"1\", | |
| \"NCCL_NVLS_ENABLE\": \"${HAS_NVLINK}\" | |
| } | |
| }" | |
| ray job submit --address="http://127.0.0.1:8265" \ | |
| --runtime-env-json="${RUNTIME_ENV_JSON}" \ | |
| -- python3 train.py \ | |
| --actor-num-nodes 1 \ | |
| --actor-num-gpus-per-node 4 \ | |
| --colocate \ | |
| ${MODEL_ARGS[@]} \ | |
| ${CKPT_ARGS[@]} \ | |
| ${ROLLOUT_ARGS[@]} \ | |
| ${OPTIMIZER_ARGS[@]} \ | |
| ${GRPO_ARGS[@]} \ | |
| ${DISTRIBUTED_ARGS[@]} \ | |
| ${WANDB_ARGS[@]} \ | |
| ${PERF_ARGS[@]} \ | |
| ${EVAL_ARGS[@]} \ | |
| ${SGLANG_ARGS[@]} \ | |
| ${MISC_ARGS[@]} |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://hebiao064.github.io/rl-weight-sync This blog's result was done with 8 H100s