60 Star 35 Fork 96

Ascend/mind-cluster

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
build
component
ascend-common
ascend-device-plugin
ascend-docker-runtime
assets
build
cli
destroy/src
hook
install
mindxcheckutils
opensource
output
platform
runtime
.gitignore
LICENSE
README.md
go.mod
go.sum
ascend-for-volcano
ascend-operator
clusterd
noded
npu-exporter
taskd
LICENSE
OWNERS
README.md
克隆/下载
贡献代码
同步代码
Loading...
README

Ascend Docker Runtime

组件介绍

容器引擎插件(Ascend Docker,又叫昇腾容器)是CANN的基础组件,为所有的AI训练/推理作业提供Ascend NPU(昇腾处理器)容器化支持,使用户AI作业能够以Docker容器的方式平滑运行在昇腾设备之上,如图1-1所示。

图1-1 Ascend Docker

image

设计简介

Ascend Docker Runtime本质上是基于OCI标准实现的Docker Runtime,不修改Docker引擎,对Docker以插件方式提供Ascend NPU适配功能。 如图1-2所示,Ascend Docker通过OCI接口与原生Docker对接。在原生Docker的runc启动容器过程中,会调用prestart-hook对容器进行配置管理。

图1-2 Docker适配原理

image

其中,prestart-hook是OCI定义的容器生存状态,即created状态到running状态的一个中间过渡所设置的钩子函数。在这个过渡状态,容器的namespace已经被创建,但容器的作业还没有启动,因此可以对容器进行设备挂载,cgroup配置等操作。这样随后启动的作业便可以使用到这些配置。 Ascend Docker在prestart-hook这个钩子函数中,对容器做了以下配置操作: 1.根据ASCEND_VISIBLE_DEVICES,将对应的NPU设备挂载到容器的namespace。 2.在Host上配置该容器的device cgroup,确保该容器只可以使用指定的NPU,保证设备的隔离。 3.将Host上的CANN Runtime Library挂载到容器的namespace。

编译Ascend-Docker-Runtime

执行以下步骤进行编译

1、下载master分支下的源码包,获得ascend-docker-runtime

示例:源码放在/home/mind-cluster/component/ascend-docker-runtime目录下

2、下载tag为v1.1.10的安全函数库

cd /home/mind-cluster/component/ascend-docker-runtime/platform
git clone -b v1.1.10 https://gitee.com/openeuler/libboundscheck.git

3、下载makeself

cd ../opensource
git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/makeself.git
tar -zxvf makeself/makeself-2.4.2.tar.gz

4、编译

cd ../build
bash build.sh

编译完成后,会在output文件夹看到相应的二进制run包

root@#:/home/mind-cluster/component/ascend-docker-runtime/output# ll
...
-rwxr-xr-x  ... Ascend-docker-runtime_x.x.x_linux-x86_64.run*
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ascend/mind-cluster.git
git@gitee.com:ascend/mind-cluster.git
ascend
mind-cluster
mind-cluster
master

搜索帮助