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 | 可以传入多个驱动能力,以 "," 为分隔符。 |
all | GPU 所有的能力。 |
| empty 或者 unset | 设置默认值:compute, utility。 |
void | 不挂载任何驱动能力。 |
支持设置的驱动能力列表。
| 驱动能力 | 描述 |
|---|---|
compute | 使用 MUSA 和 OpenCL 的应用。 |
graphics | 使用 OpenGL 和 Vulkan 的应用。 |
utility | 使用 mthreads-gmi 和 MTML。 |
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 的行为。下面是一些用法的示例:
- 使用
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
- 使用
MTHREADS_VISIBLE_DEVICES在特定的 GPU 上启动一个支持 GPU 的容器,并指定compute和utility能力,允许使用MUSA和MTML:
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

