Docker镜像制作(使用GPU)

由于最近参加天池的大模型比赛,在复赛阶段需要制作并提交Docker进行模型的推理,因此在这里记录一下Docker制作的过程。

准备

  • featurize
  • 阿里云账号

由于需要使用GPU资源,因此选择了预装Docker的featurize服务器。

开通阿里云容器镜像服务

为了将本地构建的 Docker 镜像托管到云端,我们首先需要在阿里云上创建一个容器镜像服务(ACR)实例。这里我们登录到阿里云控制台,选择“容器镜像服务”并创建一个新的个人实例。
在这里插入图片描述
在实例创建完成后,需要创建一个命名空间来存放 Docker 镜像。对于个人版,最多可以创建三个命名空间,每个命名空间下可以创建多个 Docker 仓库。
在这里插入图片描述
之后在页面左侧选择镜像仓库并点击创建镜像仓库,并进行相关的配置。其中仓库类型如果选择私有则必须登录你的账号后才能够拉取,而公开则不用登录。
在这里插入图片描述
完成这些基本设置后,就可以通过命令行将本地构建好的 Docker 镜像推送到阿里云容器镜像服务中了。
在这里插入图片描述

构建镜像

接下来我们在本地构建我们的镜像仓库。

安装nvidia-container-toolkit

为了使 Docker 能够访问 GPU 资源,首先需要安装 nvidia-container-toolkit 并重启 Docker 服务。

sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

准备项目文件

接下来,组织我们的项目文件,并将所有必需的文件都存放在同一目录下。
在这里插入图片描述

制作Dockerfile

Dockerfile 是一个包含一系列指令的脚本文件,用于定义如何构建 Docker 镜像。如下是我的Dockerfile文件:

# 使用阿里云的 CUDA 和 cuDNN 镜像作为基础镜像
FROM ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/cuda:11.8.0-cudnn8-devel-alinux3.2304

# 设置工作目录
WORKDIR /

# 复制项目文件到工作目录
COPY . .

# 安装 Python 开发环境
RUN yum install -y python3-devel

# 安装必要的 Python 库
RUN pip install transformers sentencepiece einops accelerate vllm ipywidgets -i https://pypi.tuna.tsinghua.edu.cn/simple

# 卸载旧版本的 NumPy
RUN pip uninstall -y numpy

# 再次卸载 NumPy,确保没有残留版本
RUN pip uninstall -y numpy

# 安装特定版本的 NumPy
RUN pip install "numpy>=1.17,<2.0.0" -i https://pypi.tuna.tsinghua.edu.cn/simple

命令解释:

  • FROM 指令:指定基础镜像。 这里选择了阿里云提供的 CUDA 11.8.0 和 cuDNN 8 的开发版镜像,该镜像还包含了 Alinux 3.2304 版本的操作系统。
  • WORKDIR 指令:设置工作目录。这里将工作目录设置为根目录 /。
  • COPY 指令:复制文件到镜像中。这里将当前项目目录下的所有文件复制到镜像的工作目录中。
  • RUN 指令:执行命令。

构建docker

进入到我们的项目目录中,并执行如下命令来构建 Docker 镜像:(其中llm-train为自己设置的docker名称)

docker build --tag=llm-train .

在这里插入图片描述
构建完成后,可以通过运行 docker images 查看已构建的镜像。
在这里插入图片描述

运行docker

要启动 Docker 容器并利用 GPU 资源,需要使用以下命令:

docker run -dit --gpus all --privileged --ipc=host -v /root:/root llm-story

为了使用GPU,我们在启动docker的时候需要添加–gpus all参数。并且-v /root:/root能够将我们宿主机的目录映射到docker中。

启动容器后,使用 docker ps 命令检查容器的状态:
在这里插入图片描述
根据我们上面获得的IMAGE对应的CONTAINER ID,执行如下命令进入容器内部:

docker exec -it a7aa29e31a46 /bin/bash

推送镜像至仓库

在阿里云创建镜像结束后,会有容器制作的操作指南如下:
在这里插入图片描述
首先我们需要登录我们的阿里云Docker Registry

docker login --username=XXXXXX registry.cn-shanghai.aliyuncs.com
docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/testabc128/test:[镜像版本号]
docker push registry.cn-shanghai.aliyuncs.com/testabc128/test:[镜像版本号]

其中的[镜像版本号]为非必填选项,如果在推送的时候填入了[镜像版本号],则在拉取的时候也需要填写对应的[镜像版本号]。

要在Docker 17中使用GPU,您需要确保您的系统满足以下要求: 1. 安装适当的NVIDIA驱动程序:您需要安装与您的GPU兼容的最新NVIDIA驱动程序。您可以从NVIDIA官方网站下载并安装适合您的GPU型号的驱动程序。 2. 安装NVIDIA Container Toolkit:NVIDIA提供了一个称为NVIDIA Container Toolkit的工具集,用于在Docker容器使用GPU。您可以按照NVIDIA官方文档的说明安装和配置NVIDIA Container Toolkit:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html 安装和配置完成后,您可以按照以下步骤在Docker容器使用GPU: 1. 创建一个包含GPU支持的Docker镜像:您需要在Dockerfile中添加适当的指令,以便在构建镜像时包含GPU支持。以下是一个示例Dockerfile: ``` FROM nvidia/cuda:11.0-base # 安装所需的软件包和依赖项 RUN apt-get update && apt-get install -y \ <your-package-dependencies> # 设置环境变量 ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES compute,utility # 设置您的应用程序启动命令 CMD ["<your-command>"] ``` 2. 构建镜像使用以下命令在Dockerfile所在目录中构建镜像: ``` docker build -t <your-image-name> . ``` 3. 运行容器使用以下命令在Docker容器中运行您的应用程序,并将GPU设备映射到容器中: ``` docker run --gpus all <your-image-name> ``` 请注意,上述命令中的`--gpus all`选项指示Docker使用所有可用的GPU设备。您还可以指定特定的GPU设备,例如`--gpus device=0,1`。 希望这可以帮助您在Docker 17中配置和使用GPU!如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxfeng~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值