跳到主要内容

MT Container Toolkit 使用指南

摩尔线程容器套件提供了不同的选项来列举任何容器所支持的 GPU,本文介绍使用环境变量来启用以下功能。

  • 枚举 GPU 并控制 GPU 对容器的可见性。

  • 使用 MTHREADS_DRIVER_CAPABILITIES 控制驱动能力在容器中的可见性。

GPU 枚举

通过设置 MTHREADS_VISIBLE_DEVICES 环境变量可以将特定的 GPU 设备指定到容器中,可设置的值如下:

可设置的值描述
0,1,2,... 或者 438e3949-f6f2-f7b4-c904-8ffb9d6fa9d3通过 GPU 的设备编号或者 GPU UUID 指定。
all所有的 GPU 设备均可见。
void, empty 或者 unset容器启动过程与直接使用 runc 启动无任何区别,即无 GPU 透传、无驱动挂载。

示例

# 使用全部 GPU
$ docker run --rm -e MTHREADS_VISIBLE_DEVICES=all ubuntu:22.04 mthreads-gmi

# 使用设备号指定 GPU:
$ docker run --rm -e MTHREADS_VISIBLE_DEVICES=1 ubuntu:22.04 mthreads-gmi

# 使用 GPU UUID 指定 GPU:
$ mthreads-gmi --query | grep UUID
GPU UUID : 7e8581f5-6722-035b-9b7f-07b8ed270fd0
GPU UUID : 2716ae75-44e4-231b-df26-f7c2c4abb678

$ docker run --rm -e MTHREADS_VISIBLE_DEVICES=2716ae75-44e4-231b-df26-f7c2c4abb678 ubuntu:22.04 mthreads-gmi

驱动能力

MTHREADS_DRIVER_CAPABILITIES 用于控制容器中用户态驱动程序的能力,可以设置的值如下:

可设置的值描述
compute,video 或者 graphics,utility可以传入多个驱动能力,以 "," 为分隔符。
allGPU 所有的能力。
empty 或者 unset设置默认值:compute, utility
void不挂载任何驱动能力。

支持设置的驱动能力列表。

驱动能力描述
compute使用 MUSAOpenCL 的应用。
graphics使用 OpenGLVulkan 的应用。
utility使用 mthreads-gmiMTML
video使用编解码能力的应用。

示例:

$ docker run --rm \
-e MTHREADS_VISIBLE_DEVICES=all \
-e MTHREADS_DRIVER_CAPABILITIES=compute,utility \
ubuntu:22.04 mthreads-gmi

Kubernetes 使用方式(containerd、CRI-O)

和 Docker 一样,用户可以使用环境变量来控制摩尔线程 Container Runtime 的行为。下面是一些用法的示例:

  1. 使用 MTHREADS_VISIBLE_DEVICES 在所有 GPU 上启动一个支持 GPU 的容器:

pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: ubuntu
labels:
app: ubuntu
spec:
containers:
- image: ubuntu
command:
- "sleep"
- "604800"
imagePullPolicy: Always
name: ubuntu
env:
- name: MTHREADS_VISIBLE_DEVICES
value: "all"
restartPolicy: Always
  1. 使用 MTHREADS_VISIBLE_DEVICES 在特定的 GPU 上启动一个支持 GPU 的容器,并指定 computeutility 能力,允许使用 MUSAMTML

pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: ubuntu
labels:
app: ubuntu
spec:
containers:
- image: ubuntu
command:
- "sleep"
- "604800"
imagePullPolicy: Always
name: ubuntu
env:
- name: MTHREADS_VISIBLE_DEVICES
value: "1"
- name: MTHREADS_DRIVER_CAPABILITIES
value: "compute,utility"
restartPolicy: Always

构建镜像说明

构建容器镜像时在 Dockerfile 添加环境变量,运行容器时就无需再指定它们。

ENV MTHREADS_VISIBLE_DEVICES all
ENV MTHREADS_DRIVER_CAPABILITIES compute,utility