wakababu 2025-03-05 15:17 采纳率: 100%
浏览 19
已结题

求一个在slurm集群上运行deepspeed项目的教程,最好附带提交给slurm集群的脚本样例

最近在跑deepspeed的一个项目,这个是项目中一个脚本文件,我想写个脚本把这个文件提交给slurm集群,一个结点多卡运行,请问有朋友可以帮忙解决么


set -x

read -r -d '' training_commands <<EOF
../train_sft_selector.py \
    --seed 42 \
    --max_len 2048 \
    --dataset ./datasets/BlueOrca/train.jsonl \
    --dataset_probs 1. \
    --new_dataset ./datasets/RedOrca/train.jsonl \
    --upperlevel_weight 1. \
    --upperlevel_weight_decay 0.03 \
    --train_batch_size 64 \
    --micro_train_batch_size 1 \
    --max_samples 112000 \
    --pretrain meta-llama/Meta-Llama-3-8B-Instruct \
    --ref_constant 0. \
    --selector_activation softmax \
    --selector_name llama3 \
    --save_steps -1 \
    --logging_steps 1 \
    --eval_steps -1 \
    --zero_stage 3 \
    --max_epochs 3 \
    --bf16 \
    --learning_rate 1e-5 \
    --selector_learning_rate 5e-3 \
    --selector_lr_scheduler constant \
    --lr_scheduler constant \
    --gradient_checkpointing \
    --flash_attn \
    --lora_rank 16 \
    --lora_alpha 16 \
    --target_modules q_proj v_proj
EOF
    # --flash_attn 
    # -dataset Dahoas/full-hh-rlhf,./datasets/SlimOrcaEn/train.jsonl \ ./datasets/RedOrca/train.jsonl
    # microsoft/Phi-3-mini-128k-instruct
    #     --lora_rank 16 \
     #   --lora_alpha 16 \
     #   --target_modules qkv_proj o_proj


if [[ ${1} != "slurm" ]]; then
    export PATH=$HOME/.local/bin/:$PATH
    deepspeed --num_gpus 4 $training_commands
fi
  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2025-03-05 15:41
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对这个问题,你可以使用Slurm的sbatch命令来提交作业到集群,并指定所需的GPU资源。以下是解决这个问题的步骤和示例代码:
    1. 创建一个脚本文件,例如submit_job.sh,其中包含你想要运行的DeepSpeed项目脚本和参数。
    2. 在脚本文件中添加Slurm的sbatch命令,指定所需的GPU资源和其他选项。
    3. 使用sbatch命令提交作业到Slurm集群。 下面是一个示例submit_job.sh脚本文件的代码:
    #!/bin/bash
    #SBATCH --job-name=deepspeed_job
    #SBATCH --nodes=1
    #SBATCH --tasks-per-node=4
    #SBATCH --gres=gpu:4
    #SBATCH --time=1:00:00
    set -x
    read -r -d '' training_commands <<EOF
    ../train_sft_selector.py \
        --seed 42 \
        --max_len 2048 \
        --dataset ./datasets/BlueOrca/train.jsonl \
        --dataset_probs 1. \
        --new_dataset ./datasets/RedOrca/train.jsonl \
        --upperlevel_weight 1. \
        --upperlevel_weight_decay 0.03 \
        --train_batch_size 64 \
        --micro_train_batch_size 1 \
        --max_samples 112000 \
        --pretrain meta-llama/Meta-Llama-3-8B-Instruct \
        --ref_constant 0. \
        --selector_activation softmax \
        --selector_name llama3 \
        --save_steps -1 \
        --logging_steps 1 \
        --eval_steps -1 \
        --zero_stage 3 \
        --max_epochs 3 \
        --bf16 \
        --learning_rate 1e-5 \
        --selector_learning_rate 5e-3 \
        --selector_lr_scheduler constant \
        --lr_scheduler constant \
        --gradient_checkpointing \
        --flash_attn \
        --lora_rank 16 \
        --lora_alpha 16 \
        --target_modules q_proj v_proj
    EOF
    if [[ ${1} != "slurm" ]]; then
        export PATH=$HOME/.local/bin/:$PATH
        deepspeed --num_gpus 4 $training_commands
    fi
    

    使用以下命令提交作业到Slurm集群:

    sbatch submit_job.sh
    

    根据实际情况,你可能需要修改脚本文件和sbatch命令中的参数。这样设计的脚本可以在Slurm集群上运行DeepSpeed项目,并且使用一个节点的多个GPU进行计算。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月5日