Docker镜像制作(使用GPU)

news2024/9/21 4:26:27

由于最近参加天池的大模型比赛,在复赛阶段需要制作并提交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.coloradmin.cn/o/2082281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

74HC595的用法与原理

DS/LDSI&#xff08;SER&#xff09;&#xff0c;串行数据输入引脚 OE/LEDN&#xff0c;输出使能控制脚&#xff0c;它是低电才使能输出&#xff0c;所以接GND RCK/LDSTR&#xff08;STCP&#xff09;&#xff0c;存储寄存器时钟输入引脚。上升沿时&#xff0c;数据从移位寄存器…

万万没想到!秋季里的这些水果,对帕金森治疗大有裨益!——蔡英丽医生

随着秋风轻拂&#xff0c;大地披上了一袭金黄色的外衣&#xff0c;这不仅是收获的季节&#xff0c;更是自然对人类健康的又一次慷慨馈赠。对于帕金森病患者而言&#xff0c;这个秋季尤为特别&#xff0c;因为大自然悄然间准备了五种神奇的秋季水果&#xff0c;它们不仅是味蕾的…

命令模式详解

命令模式 简介:命令模式将一个请求封装为一个对象&#xff0c;从而使你可以用不同的请求对客户进行参数化&#xff0c;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 人话: 总体来说, 就是一个命令类, 一个执行类, 命令类包括执行类, 然后在外部添加一个总的管…

SQLi-LABS通关攻略【41-45】

SQLi-LABS 41关 这一关是堆叠注入 测试闭合 ?id1 //回显错误 ?id1-- //回显错误 ?id1-- //回显正确 所以是数字型的注入 测试堆叠注入&#xff0c;更改Dumb的密码 ?id1;update users set password123456 where usernameDumb-- SQLi-…

2008-2024年名爵汽车维修手册和电路图线路图接线图资料更新

经过整理&#xff0c;2009-2024年名爵汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表…

潜水装备制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

潜水装备制造行业正经历一场前所未有的变革&#xff0c;5G智能工厂物联数字孪生平台的引入&#xff0c;无疑成为了推动这一行业乃至整个制造业数字化转型的重要驱动力。5G智能工厂物联数字孪生平台作为一种前沿技术&#xff0c;逐渐进入人们的视野。该平台通过集成物联网、大数…

idea配置类注释模板

设置类注释模板 IDEA --> Settings... --> Editor --> File and Code Templates --> Includes -->File Header /** * ClassName: ${NAME} * Package: ${PACKAGE_NAME} * Description: * Datetime: ${DATE} ${TIME} * Author: zhouxl …

2008-2020年 中国健康与养老追踪调查CHARLS数据合集

中国健康与养老追踪调查&#xff08;China Health and Retirement Longitudinal Study, CHARLS&#xff09;是一项由北京大学国家发展研究院主持的大型跨学科调查项目。该项目始于2011年&#xff0c;每两到三年对样本进行一次追踪调查&#xff0c;旨在收集代表中国45岁及以上中…

51单片机-点亮一个LED

2024.8.28 作者&#xff1a;Whappy 目的&#xff1a;学习51单片机&#xff08;0基础&#xff09; 代码&#xff1a; #include <REGX52.H>void main(void) {P2 0xAA; } 现象&#xff1a;

在idea中回滚到某节点并push到远程仓库

一 操作说明 1.1 前提准备 如果是master分支&#xff0c;需要取消master分支保护机制。 去掉保护机制&#xff1a; 1.2 具体操作步骤 1.回滚到具体节点&#xff1a; a)强制reset b&#xff09;选择【hard】选项 2.强制push a&#xff09;选择 force push b&#xff09;选择…

从黑神话悟空看中医养生,各位“天命人”中医养生不了解一下吗?

在国产3A大作《黑神话&#xff1a;悟空》世界里&#xff0c;我们不仅被“天命人”的英勇无畏所震撼&#xff0c;更被那些蕴含深意的道具设计所吸引。今天&#xff0c;三好夫人就和大家一起聊一聊游戏中的“三冬虫”、“铁皮银参”、“落伽香藤”这三大神秘道具出发&#xff0c;…

双重映射+逆向并查集+恢复

前言&#xff1a;一开始没有想着要逆序&#xff0c;自己写了一个并查集但是过了百分之五十&#xff0c;也不知道哪里出了问题 这一题的本质我们要知道&#xff0c;后面的修改覆盖前面的修改&#xff0c;我们直接从后面开始操作就行&#xff0c;然后我们这一题的恢复也是有技巧…

PowerDesigner16.5 从mysql5.7逆向工程

参考&#xff1a;https://blog.csdn.net/vfsdfdsf/article/details/89839991 我的环境 &#xff1a;mysql5.7.18 。PowerDesigner16.5 1、安装mysql的odbc驱动 下载地址&#xff1a;https://dev.mysql.com/downloads/connector/odbc/ 打开页面如下图&#xff0c;我这里下载…

短剧APP系统开发,为市场带来更多机遇

近几年&#xff0c;短剧经历了爆发式增长&#xff0c;在短时间内市场规模迅速扩大&#xff0c;如今更是出现越来越多内容优质、新颖的短剧让大众眼前一亮&#xff0c;吸引了越来越多的短剧观众。 在数字化时代中&#xff0c;短剧系统的开发&#xff0c;为市场带来了技术创新和…

数据分析在提高灌区管理水平中的作用

数据分析在提升灌区管理水平中扮演着至关重要的角色&#xff0c;它通过深度挖掘海量信息&#xff0c;为灌溉系统的高效运作、资源优化配置及可持续发展提供了科学决策的基础。这一过程不仅涉及数据的收集、整理与分析&#xff0c;还涵盖了利用现代信息技术对灌溉活动进行精细化…

大数据分析与挖掘技术实训室解决方案

一、大数据分析与挖掘技术概述 大数据分析与挖掘技术是指运用算法、工具和技术处理和分析大规模数据集的过程。这些数据集来源于多个渠道&#xff0c;例如传感器数据、社交媒体数据、网络日志和金融交易记录等。其目标是在这些海量数据中发现有价值的信息、模式和趋势&#xf…

GEE APP:利用夜间灯光数据建立一个简易的逐年影像查看器

简介 很多时候我们可以通过简单的滑块进行逐年影像的查看&#xff0c;slider这个工具可以进行每一年的夜间灯光数据的查看&#xff0c;这里主需要设定其实和后续的年份&#xff0c;另外&#xff0c;并给每一年进行属性设定对应的影像即可。这里最关键的就是一个返回值函数的设…

2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded

使用Navicat连接mysql数据库报错&#xff1a; 2059-Authentication plugin caching_sha2_password cannot be loaded 该错误的原因是在MySQL8之前版本中加密规则mysql_native_password&#xff0c;而在MySQL8以后的加密规则为caching_sha2_password。 解决此问题有两种方法:…

趣味算法------拯救阿拉德大陆

目录 ​编辑 题目描述&#xff1a; 思路解析&#xff1a; 具体代码&#xff1a; 总结&#xff1a; 题目描述&#xff1a; 此时一批勇士也随之而来&#xff0c;但其能力也是参差不齐&#xff0c;我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号&am…

FPGA第 8 篇,硬件描述语言Verilog HDL,初识Verilog HDL

前言 我们都知道 FPGA 是一种高度可编程的集成电路&#xff0c;适用于实现各种数字逻辑功能&#xff0c;而 Verilog HDL是一种广泛使用的硬件描述语言&#xff08;Hardware Description Language, HDL&#xff09;&#xff0c;主要用于数字电子系统的描述、仿真和综合&#xff…