7.1. MetaX Docker

曦云系列GPU提供的metax-docker工具,是基于官方Docker的扩展工具,用于解决GPU选择过程繁琐以及应用镜像体积庞大的问题。 用户可独立发布不包含 MXMACA® 软件栈的容器镜像,并借助metax-docker工具在运行时获得一个完整的运行环境。

../_images/metax-docker.png

图 7.1 MetaX Docker

7.1.1. 安装metax-docker

安装metax-docker需要使用名称格式为 metax-docker_0.8.0.tar 的离线压缩包。用户可解压后根据安装环境选择合适的包进行安装。

操作步骤

  1. 在终端上使用以下命令安装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 命令下支持额外参数,详情参见下表。

表 7.1 metax-docker额外支持的参数

参数

说明

–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获取。

表 7.2 metax sgpu Options

参数

说明

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 modeDisable 时,代表GPU没有开启sGPU模式,可以通过 --gpus 参数挂载到容器中。

7.1.3. 构建应用软件镜像

用户可根据此节内容构建更加适用于 MetaX Docker 以及云场景的容器镜像。

操作步骤

  1. 假设用户软件具有如下目录结构,源代码放置在项目的src目录下。

    samples/
       ├──Dockerfile
       └──src
           ├──Makefile
           ├──sample1.cpp
           └──sample2.cpp
    
  2. 用户可使用如下内容的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"]
    
  3. 完成Dockerfile的编写后,用户可在项目根目录下执行如下命令完成镜像的构建。

    docker build -t user-application:1.0 .