7.1. MetaX Docker
曦云系列GPU提供的metax-docker工具,是基于官方Docker的扩展工具,用于解决GPU选择过程繁琐以及应用镜像体积庞大的问题。 用户可独立发布不包含 MXMACA® 软件栈的容器镜像,并借助metax-docker工具在运行时获得一个完整的运行环境。
![]()
图 7.1 MetaX Docker
7.1.1. 安装metax-docker
安装metax-docker需要使用名称格式为 metax-docker_0.8.0.tar 的离线压缩包。用户可解压后根据安装环境选择合适的包进行安装。
操作步骤
在终端上使用以下命令安装metax-docker。
mkdir metax-docker tar -C metax-docker -xvf metax-docker_0.8.0.tar cd metax-docker sudo ./metax-docker_0.8.0.<ARCH>.run
7.1.2. 使用metax-docker
用户需要安装版本≥19.03的Docker工具。同时应确保主机上已经正确安装了 MXMACA® 软件栈。
用户可通过执行如下命令在容器中使用曦云GPU:
metax-docker run -it --rm --gpus=all user-application:1.0 /bin/bash
metax-docker支持官方Docker的全部命令及参数,并在 run 命令下支持额外参数,详情参见下表。
参数 |
说明 |
|---|---|
–gpus |
all:将全部卡传递至容器 N:将枚举的前N张卡传递至容器 [ID1,ID2…]:将ID值为ID1和ID2的卡传递至容器 [SN1,SN2…]:将SN值为SN1和SN2的卡传递至容器 “[<sgpu:identifier>,<sgpu:identifier|config>]”:详情参见表 7.2 |
–maca |
若希望使用默认安装路径之外的 MXMACA® ,可使用此参数指定 |
–maca-force |
默认情况下,若容器内/opt/maca路径下已存在 MXMACA® ,metax-docker会停止将主机上的 MXMACA® 安装进容器。设置此参数可强制容器使用主机上的 MXMACA® |
–driver |
若希望使用默认安装路径之外的mxdriver,可使用此参数指定。注:metax-docker需要≥0.8.2 |
备注
挂载sGPU需要的UUID,BDF及index参数,可以通过mx-smi获取。
参数 |
说明 |
|---|---|
identifier |
UUID BDF#index |
config (多项之间使用 |
alias=<string> 设置sGPU别名 compute=<int> 设置算力配额百分比,输入范围<0-100> vram=<int> 设置显存大小,默认单位为MB |
备注
挂载GPU前,需要确认GPU没有开启sGPU模式。开启sGPU模式的GPU,不能挂载到容器中。
检查GPU是否开启sGPU模式:
mx-smi sgpu --show-mode
Attached GPUs :4
GPU#0 MXC500 0000:09:00.0
sgpu mode: :Enable
GPU#1 MXC500 0000:0a:00.0
sgpu mode: :Disable
GPU#2 MXC500 0000:0b:00.0
sgpu mode: :Disable
GPU#3 MXC500 0000:0c:00.0
sgpu mode: :Disable
当 sgpu mode 为 Disable 时,代表GPU没有开启sGPU模式,可以通过 --gpus 参数挂载到容器中。
7.1.3. 构建应用软件镜像
用户可根据此节内容构建更加适用于 MetaX Docker 以及云场景的容器镜像。
操作步骤
假设用户软件具有如下目录结构,源代码放置在项目的src目录下。
samples/ ├──Dockerfile └──src ├──Makefile ├──sample1.cpp └──sample2.cpp
用户可使用如下内容的Dockerfile制作应用软件镜像。
#intermediate builder image FROM cr.metax-tech.com/library/mxc500-maca:2.24.0.0 AS builder WORKDIR/workspace COPY src src #build user application and put artifacts under /workspace/dist RUN make -C ./src OUT=./dist #artifact mage FROM ubuntu:20.04 RUN apt-get update && \ apt-get install -y libnuma1 libelf1 && \ apt-get clean COPY --from=builder /workspace/dist /applications CMD ["/applications/foo"]
完成Dockerfile的编写后,用户可在项目根目录下执行如下命令完成镜像的构建。
docker build -t user-application:1.0 .
