Adapting Torch to MindSpeed-LLM
Prerequisites
- Learn about Constraints of MindIO ACP.
- Prepare the MindSpeed-LLM framework by referring to MindSpeed-LLM. Note that the matching Megatron-LM version is core_v0.12.1.
The release package is intended for use with the MindSpeed-LLM 2.3.0 branch. For detailed instructions on preparing the environment, code, and dataset, refer to the guidelines in the MindSpeed-LLM repository to ensure their security.
Procedure
- Log in to the compute node as a service user.
The service user is not {MindIO-install-user}, HwHiAiUser, or hwMindX, but it is determined based on the actual situation.
- Go to the MindSpeed-LLM installation directory.
cd MindSpeed-LLM/
- Modify the pretrain_gpt.py file.
- Open the pretrain_gpt.py file.
vim pretrain_gpt.py
- Press i to enter the insert mode, find from mindspeed_llm import megatron_adaptor in the file header, and add the information in bold in a new line.
from mindspeed_llm import megatron_adaptor import mindio_acp
- Press Esc, type :wq!, and press Enter to save the changes and exit.
- Open the pretrain_gpt.py file.
- Edit the pre-training script (for reference only).
The following uses the examples/mcore/llama2/pretrain_llama2_7b_ptd.sh script as an example.
- Open the examples/mcore/llama2/pretrain_llama2_7b_ptd.sh script.
vim examples/mcore/llama2/pretrain_llama2_7b_ptd.sh
- Press i to enter the insert mode and add the following information in bold to the script to enable periodic checkpoint acceleration.
#!/bin/bash export CUDA_DEVICE_MAX_CONNECTIONS=1 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True export MINDIO_AUTO_PATCH_MEGATRON=true export GLOO_SOCKET_IFNAME=enp189s0f0 export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/driver:$LD_LIBRARY_PATH source /usr/local/Ascend/cann/set_env.sh NPUS_PER_NODE=8 MASTER_ADDR=localhost MASTER_PORT=6000 NNODES=1 NODE_RANK=0 WORLD_SIZE=$(($NPUS_PER_NODE*$NNODES)) CKPT_SAVE_DIR="your model save ckpt path" DATA_PATH="your data path" TOKENIZER_MODEL="your tokenizer path" CKPT_LOAD_DIR="your model ckpt path" TP=1 PP=2 DISTRIBUTED_ARGS=" --nproc_per_node $NPUS_PER_NODE \ --nnodes $NNODES \ --node_rank $NODE_RANK \ --master_addr $MASTER_ADDR \ --master_port $MASTER_PORT " GPT_ARGS=" --use-mcore-models \ --tensor-model-parallel-size ${TP} \ --pipeline-model-parallel-size ${PP} \ --sequence-parallel \ --num-layers 32 \ --hidden-size 4096 \ --ffn-hidden-size 11008 \ --num-attention-heads 32 \ --tokenizer-type Llama2Tokenizer \ --tokenizer-model ${TOKENIZER_MODEL} \ --seq-length 4096 \ --max-position-embeddings 4096 \ --micro-batch-size 1 \ --global-batch-size 256 \ --make-vocab-size-divisible-by 1 \ --lr 1.25e-6 \ --train-iters 5000 \ --lr-decay-style cosine \ --untie-embeddings-and-output-weights \ --disable-bias-linear \ --attention-dropout 0.0 \ --init-method-std 0.01 \ --hidden-dropout 0.0 \ --position-embedding-type rope \ --normalization RMSNorm \ --use-fused-rmsnorm \ --swiglu \ --use-flash-attn \ --no-masked-softmax-fusion \ --attention-softmax-in-fp32 \ --min-lr 1.25e-7 \ --weight-decay 1e-1 \ --lr-warmup-fraction 0.01 \ --clip-grad 1.0 \ --adam-beta1 0.9 \ --initial-loss-scale 65536 \ --adam-beta2 0.95 \ --no-gradient-accumulation-fusion \ --no-load-optim \ --no-load-rng \ --use-distributed-optimizer \ --use-fused-swiglu \ --use-fused-rotary-pos-emb \ --overlap-grad-reduce \ --bf16 " DATA_ARGS=" --data-path $DATA_PATH \ --split 949,50,1 " OUTPUT_ARGS=" --log-interval 1 \ --save-interval 10000 \ --eval-interval 1000 \ --eval-iters 10 \ " torchrun $DISTRIBUTED_ARGS pretrain_gpt.py \ $GPT_ARGS \ $DATA_ARGS \ $OUTPUT_ARGS \ --distributed-backend nccl \ --load $CKPT_LOAD_DIR \ --save $CKPT_SAVE_DIR \ | tee logs/train_llama2_7b.logThe parameters related to periodic checkpoint acceleration are described as follows:
- MINDIO_AUTO_PATCH_MEGATRON indicates the source code of the auto patch Megatron of MindIO ACP, which is used to enable the periodic checkpoint acceleration feature.
- Set GLOO_SOCKET_IFNAME based on the high-speed NIC of the primary node.
- LD_LIBRARY_PATH indicates the address of the driver .so library of the CANN package. Change it to the actual CANN installation path.
- Change the path of the set_env.sh file to the actual CANN installation path.
- Press Esc, type :wq!, and press Enter to save the changes and exit.
- Open the examples/mcore/llama2/pretrain_llama2_7b_ptd.sh script.
- After .py files from 3 to 4 are modified, MindSpeed-LLM can use the periodic checkpoint acceleration function of MindIO ACP.
Parent topic: Usage Guidance