首页 > 其他分享 >Megatron-DeepSpeed-GPU-多机训练

Megatron-DeepSpeed-GPU-多机训练

时间:2024-04-05 13:29:26浏览次数:32  
标签:DeepSpeed gpt2 -- Megatron ssh 多机 nvidia GPU

Megatron-DeepSpeed-cuda-多机训练


本文演示了Megatron-DeepSpeed-GPU-多机训练的操作步骤

1.从ngc拉取pytorch:24.03-py3镜像

docker pull nvcr.io/nvidia/pytorch:24.03-py3

2.安装nvidia-docker、创建容器

cd /mnt		
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update
apt-get install -y nvidia-docker2
nvidia-docker run -ti -e NVIDIA_VISIBLE_DEVICES=all --privileged \
			--net=host -v $PWD:/home \
            -w /home --rm nvcr.io/nvidia/pytorch:24.03-py3 /bin/bash

3.安装Megatron-DeepSpeed环境

pip install transformers
pip install deepspeed
git clone https://github.com/microsoft/Megatron-DeepSpeed
cd Megatron-DeepSpeed
git checkout 3c5f47563f697702c1e305fa01b7563f54b747fc
python3 setup.py install

4.安装openmpi和ssh服务

apt update
apt install -y openssh-server
apt install -y openmpi-bin openmpi-doc libopenmpi-dev

rm -rf ~/.ssh/*
ssh-keygen

sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/^.*Port.*$/Port 2223/g' /etc/ssh/sshd_config
export passwd=Hello123 && printf "${passwd}\n${passwd}\n"  | passwd root 
 
cat >/usr/bin/run.sh <<EOF
#!/bin/bash
mkdir  -p /run/sshd
source ~/.bashrc
/usr/sbin/sshd -D
EOF
chmod  777 /usr/bin/run.sh
nohup /usr/bin/run.sh &
  
tee ~/.ssh/config <<-'EOF'
Host worker_1
        User  root
        Hostname 192.168.1.100
        port 2223
        IdentityFile ~/.ssh/id_rsa
Host worker_2
        User  root
        Hostname 192.168.1.101
        port 2223
        IdentityFile ~/.ssh/id_rsa        
EOF

5.拷贝公钥

ssh-copy-id worker_1
ssh-copy-id worker_2

6.安装pdsh

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pdsh/pdsh-2.29.tar.bz2
tar -xf pdsh-2.29.tar.bz2
cd pdsh-2.29
./configure --with-ssh
make -j
make install
cp /usr/local/bin/pdsh /usr/bin/

7.升级protobuf

pip install --upgrade protobuf==3.20.1

8.准备数据集

cd /home/Megatron-DeepSpeed
wget https://huggingface.co/bigscience/misc-test-data/resolve/main/stas/oscar-1GB.jsonl.xz
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt
xz -d oscar-1GB.jsonl.xz
python3 tools/preprocess_data.py \
    --input oscar-1GB.jsonl \
    --output-prefix my-gpt2 \
    --vocab-file gpt2-vocab.json \
    --dataset-impl mmap \
    --tokenizer-type GPT2BPETokenizer \
    --merge-file gpt2-merges.txt \
    --append-eod \
    --workers 8

9.创建配置文件

cd /home/Megatron-DeepSpeed
tee hostfile <<-'EOF'
worker_1 slots=1
worker_2 slots=1
EOF

tee ds_config.json <<-'EOF'
{
  "train_micro_batch_size_per_gpu": 1,
  "train_batch_size": 16,
  "gradient_clipping": 1.0,
  "zero_optimization": {
    "stage": 1
  },
  "fp16": {
    "enabled": true,
    "loss_scale": 0,
    "loss_scale_window": 500,
    "hysteresis": 2,
    "min_loss_scale": 1,
    "initial_scale_power": 12
  },
  "steps_per_print": 2000,
  "wall_clock_breakdown": false
}
EOF

10.开始测试

export MAX_JOBS=8
export NCCL_DEBUG=info 
export NCCL_SOCKET_IFNAME=enp5s0 
export NCCL_IB_DISABLE=1	
deepspeed --hostfile ./hostfile pretrain_gpt.py \
	--tensor-model-parallel-size 2 \
	--pipeline-model-parallel-size 1 \
	--distributed-backend nccl \
	--num-layers 2 \
	--hidden-size 8 \
	--num-attention-heads 2 \
	--seq-length 512 \
	--max-position-embeddings 512 \
	--micro-batch-size 1 \
	--rampup-batch-size 2 2 1_000 \
	--global-batch-size 16 \
	--train-samples 10_000 \
	--optimizer adam \
	--adam-beta1 0.9 \
	--adam-beta2 0.95 \
	--adam-eps 1e-8 \
	--lr 1e-4 \
	--log-interval 1 \
	--lr-warmup-samples 5 \
	--min-lr 1e-6 \
	--lr-decay-style cosine \
	--lr-decay-samples 12 \
	--clip-grad 1.0 \
	--weight-decay 1e-1 \
	--fp16 \
	--partition-activations \
	--seed 42 \
	--vocab-file gpt2-vocab.json \
	--merge-file gpt2-merges.txt \
	--exit-interval 100 --log-interval 10 \
	--save-interval 50 --eval-interval 100 \
	--eval-iters 10 --checkpoint-activations \
	--save checkpoints/gpt2_4 \
	--data-path my-gpt2_text_document \
	--tensorboard-dir output_dir/tensorboard \
	--tensorboard-queue-size 5 \
	--log-timers-to-tensorboard \
	--log-batch-size-to-tensorboard \
	--log-validation-ppl-to-tensorboard \
	--deepspeed \
	--deepspeed_config ./ds_config.json \
	--zero-stage 1 --deepspeed-activation-checkpointing

标签:DeepSpeed,gpt2,--,Megatron,ssh,多机,nvidia,GPU
From: https://blog.csdn.net/m0_61864577/article/details/137381731

相关文章

  • 贪心算法——多机调度问题
    问题描述下面用一道2013上半年软件设计师的软考题来说明这个问题。   设有M台完全相同的机器运行N个独立的任务(任务不可分割),运行任务i所需要的时间为,要求确定一个调度方案,使得完成所有任务所需要的时间最短,任务运行时独占机器。   这里要求定义的变量如......
  • 矩阵乘法与GPU并行
    矩阵乘法是一个常见的计算密集型任务,特别适合于GPU(图形处理单元)并行计算。GPU通过执行成千上万的小型、简单的操作(如浮点运算),可以显著加速矩阵乘法等并行任务。矩阵乘法在GPU的执行步骤下面是矩阵乘法在GPU上并行优化的一个概述,以及一个简单示例的执行步骤。1、分割任务G......
  • deepspeed学习-多机all_reduce
    deepspeed学习-多机all_reduce一.安装nvidia-docker二.构建容器1.创建容器2.更新apt源3.安装依赖4.安装cuda12.1(编译deepspeed需要)5.设置ssh端口和密码(为避免跟hostsshd冲突,修改了容器里sshd端口)6.运行sshd服务7.安装pytorch8.测试nccl9.安装deepspeed10.退出容器......
  • 解密iPhone GPU:了解其内部工作原理
    摘要了解你的显卡对于在电脑上玩现代图形要求高的游戏非常重要。本文介绍了如何轻松查看你的显卡型号以及为什么显卡在玩电脑游戏时如此关键。引言随着电脑游戏的发展,现代游戏对硬件性能的要求越来越高。十年前发布的显卡已经无法满足当前游戏的需求。因此,了解你的显卡......
  • 深入iPhone GPU:探索其性能和架构
    摘要了解你的显卡对于在电脑上玩现代图形要求高的游戏非常重要。本文介绍了如何轻松查看你的显卡型号以及为什么显卡在玩电脑游戏时如此关键。引言随着电脑游戏的发展,现代游戏对硬件性能的要求越来越高。十年前发布的显卡已经无法满足当前游戏的需求。因此,了解你的显卡......
  • PowerShell中调用GPU命令通常涉及到与GPU相关的任务,如查看GPU信息、管理GPU驱动、执行
    PowerShell中调用GPU命令通常涉及到与GPU相关的任务,如查看GPU信息、管理GPU驱动、执行GPU加速的计算任务等。以下是一些常见的PowerShell中调用GPU命令的示例:查看GPU信息:Get-WmiObject-Namespace"root\CIMV2"-ClassWin32_VideoController:通过WMI获取GPU信息,包括名称、制......
  • ARM GPU资源同步 shareable coherent等
    1.背景介绍之前在Vulkan内存与资源管理 提到VK_MEMORY_PROPERTY_HOST_COHERENT_BIT:该标志位表示CPU的write数据flush给GPU时,无需调用vkFlushMappedMemoryRanges;GPU的write的数据想要对CPU可见时,无需调用vkInvalidateMappedMemoryRanges。解析:CPU的write数据是暂存在CPU......
  • 实例演示如何使用CCE XGPU虚拟化
    本文分享自华为云社区《CCEXGPU虚拟化的使用》,作者:可以交个朋友。一背景在互联网场景中,用户的AI训练和推理任务对GPU虚拟化有着强烈的诉求。GPU卡作为重要的计算资源不管是在算法训练还是预测上都不可或缺,而对于常见的算法训练业务或智能业务都有往容器迁移演进的趋势,所以如......
  • 深度学习(单机多gpu训练)
    如果一个机器上有多个gpu,可以使用多gpu训练。一般数据量和模型比较大的时候训练速度会有明显的提升,模型和数据比较小的时候反而可能因为数据通信原因导致性能下降。下面是一个简单的例子:importtimeimporttorchimporttorchvision.modelsfromtorchvision.transformsimpo......
  • AMD hipcc 生成各个gpu 微架构汇编语言代码的方法示例
    1,gpuvectorAdd示例为了简化逻辑,故假设vector的size与运行配置的thread个熟正好一样多,比如都是512之类的.1.1源码vectorAdd.hip#include<stdio.h>#include<hip/hip_runtime.h>__global__voidvectorAdd(constfloat*A,constfloat*B,float*C){inti=......