import os import slime.utils.external_utils.command_utils as U ENABLE_EVAL = U.get_bool_env_var("SLIME_TEST_ENABLE_EVAL", "1") MODEL_NAME = "GLM-Z1-9B-0414" MODEL_TYPE = "glm4-9B" NUM_GPUS = 8 def prepare(): U.exec_command("mkdir -p /root/models /root/datasets") U.exec_command("hf download zai-org/GLM-Z1-9B-0414 --local-dir /root/models/GLM-Z1-9B-0414") U.hf_download_dataset("zhuzilin/dapo-math-17k") U.hf_download_dataset("zhuzilin/aime-2024") U.convert_checkpoint(model_name=MODEL_NAME, megatron_model_type=MODEL_TYPE, num_gpus_per_node=NUM_GPUS) def execute(): ckpt_args = f"--hf-checkpoint /root/models/{MODEL_NAME}/ " f"--ref-load /root/{MODEL_NAME}_torch_dist " rollout_args = ( "--prompt-data /root/datasets/dapo-math-17k/dapo-math-17k.jsonl " "--input-key prompt " "--label-key label " "--apply-chat-template " "--rollout-shuffle " "--rm-type deepscaler " "--num-rollout 2 " "--rollout-batch-size 4 " "--n-samples-per-prompt 4 " "--rollout-max-response-len 8192 " "--rollout-temperature 1 " "--global-batch-size 16 " "--balance-data " ) eval_args = ( f"{'--eval-interval 20 ' if ENABLE_EVAL else ''}" "--eval-prompt-data aime24 /root/datasets/aime-2024/aime-2024.jsonl " "--n-samples-per-eval-prompt 1 " "--eval-max-response-len 16384 " "--eval-top-k 1 " ) perf_args = ( "--tensor-model-parallel-size 2 " "--sequence-parallel " "--pipeline-model-parallel-size 1 " "--context-parallel-size 2 " "--expert-model-parallel-size 1 " "--expert-tensor-parallel-size 1 " "--recompute-granularity full " "--recompute-method uniform " "--recompute-num-layers 1 " "--use-dynamic-batch-size " "--max-tokens-per-gpu 4608 " ) grpo_args = ( "--advantage-estimator grpo " "--use-kl-loss " "--kl-loss-coef 0.00 " "--kl-loss-type low_var_kl " "--entropy-coef 0.00 " "--eps-clip 0.2 " "--eps-clip-high 0.28 " "--use-tis " "--calculate-per-token-loss " ) optimizer_args = ( "--optimizer adam " "--lr 1e-6 " "--lr-decay-style constant " "--weight-decay 0.1 " "--adam-beta1 0.9 " "--adam-beta2 0.98 " ) sglang_args = "--rollout-num-gpus-per-engine 2 " "--sglang-cuda-graph-max-bs 16 " ci_args = "--ci-test " 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 " "--actor-num-nodes 1 " "--actor-num-gpus-per-node 4 " "--rollout-num-gpus 4 " ) train_args = ( f"{ckpt_args} " f"{rollout_args} " f"{optimizer_args} " f"{grpo_args} " f"{U.get_default_wandb_args(__file__)} " f"{perf_args} " f"{eval_args} " f"{sglang_args} " f"{ci_args} " f"{misc_args} " ) U.execute_train( train_args=train_args, num_gpus_per_node=NUM_GPUS, megatron_model_type=MODEL_TYPE, ) if __name__ == "__main__": # TODO also use typer prepare() for proxy_var in ("http_proxy", "https_proxy", "HTTP_PROXY", "HTTPS_PROXY"): os.environ.pop(proxy_var, None) execute()