Docker AIGC大模型深度学习环境搭建步骤
简介
Docker是一款虚拟化容器技术,它可以将应用及其依赖打包为一个可移植的容器,从而实现软件环境的一致性和跨平台性。在深度学习领域,Docker不仅可以简化环境搭建的复杂度,也可以减少环境带来的差异性。
AIGC (AI Grand Challenge)是面向深度学习领域的AI竞赛平台,通过在平台上提供大规模计算和高带宽数据传输的能力,实现了大规模、高效的深度学习模型训练。搭建Docker AIGC大模型深度学习环境,即可在AIGC平台上使用GPU和分布式GPU进行大模型深度学习训练。
Docker安装
Ubuntu系统
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
CentOS系统
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
Windows系统
可以在Docker官网下载安装程序进行安装。
验证Docker是否安装成功
docker --version
Docker AIGC环境搭建
下载Docker AIGC环境镜像
docker pull sungsu55/daigc:gpu
镜像启动
docker run -it --gpus all -v /host_dir:/container_dir sungsu55/daigc:gpu /bin/bash
其中--gpus all
参数表示启用全部GPU,-v /host_dir:/container_dir
参数表示将宿主机的/host_dir目录映射到容器中的/container_dir目录。此外,sungsu55/daigc:gpu
表示Docker AIGC环境的镜像名称和版本号。
容器中环境搭建
Miniconda3环境安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ./Miniconda3-latest-Linux-x86_64.sh -b
echo 'export PATH=/root/miniconda3/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
PyTorch、Tensorflow等深度学习框架安装
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -y
pip install tensorflow-gpu keras
容器退出
容器退出命令为:
exit
示例说明
示例1:使用Docker AIGC环境进行PyTorch训练
在容器中启动jupyter lab
:
jupyter lab --ip=0.0.0.0 --port=8888 --allow-root
此时可以在浏览器中使用AIGC平台提供的jupyter lab服务,也可以在本机浏览器中打开http://localhost:8888
进行访问。在jupyter lab中新建Python3代码文件,编写PyTorch模型代码:
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
然后进行模型训练:
import torchvision
import torchvision.transforms as transforms
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
示例2:使用Docker AIGC环境进行TensorFlow分布式训练
在容器中启动TensorFlow集群:
python -m torch.distributed.launch --nproc_per_node=4 train.py --model_dir=./model
此时可以在本机浏览器中打开http://localhost:8888
进行TensorBoard查看训练情况。在本机终端中启动tensorboard
:
tensorboard --logdir=./model
总结
本文简单介绍了如何在Docker中搭建AIGC大模型深度学习环境,并提供了两个示例。除此之外,还可以通过使用Docker Compose等技术实现多个容器间的协同工作,进一步提高深度学习模型训练的效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker AIGC等大模型深度学习环境搭建步骤最新详细版 - Python技术站