当前位置: 首页 > article >正文

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:[镜像版本号]

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


http://www.kler.cn/a/279844.html

相关文章:

  • Oracle goldengate部署(ogg-for-kafka)HP-UX BCLINUX-for-Eular
  • 网络安全售前入门04——审计类产品了解
  • CyberScraper-2077+simple-one-api:使用大模型爬虫
  • 【系统架构设计师】论文:论高可靠性系统中软件容错技术的应用
  • 证券行业加密业务安全风险监测与防御技术研究
  • html学习笔记(1)
  • 【论文阅读|cryoET】本周粗读汇总
  • 第三十二天学习笔记
  • 江西生物科技职业学院春雨宣讲团丨弘扬西柏坡精神,共绘时代新篇章
  • 【SQL】连续出现的数字
  • 数学建模起步感受(赛前15天)
  • SPI(Service Provider Interface)机制示例及流程图
  • 并行处理的艺术:深入探索PyTorch中的torch.nn.parallel模块
  • 如何练高音技巧
  • apache httpclient速成
  • 需方软件供应链安全保障要求及开源场景对照自评表(上)
  • Kafka事件(消息、数据、日志)的存储
  • Git 协同开发详解:从基础命令到多人协作
  • 计算机网络——HTTP与HTTPS协议
  • C++STL之list的使用详解