【昇腾】NPU Snt9B裸金属服务器在docker容器中挂载指定npu卡失效问题解决方案

举报
modelarts-dev-server 发表于 2023/12/09 10:05:23 2023/12/09
【摘要】 1. 背景Snt9B裸金属服务器包含8张独立的npu,均可独立进行训练和推理任务。在创建docker容器时,可以通过如下命令指定挂载npu卡。如下的命令为:在docker容器中挂载0、1、2、3号npu。-e ASCEND_VISIBLE_DEVICES=0-32. 问题描述分别使用如下命令创建两个docker容器,期望在容器test0挂载0~3号npu,在容器test1挂载4~7号npu,...

1. 背景

Snt9B裸金属服务器包含8张独立的npu,均可独立进行训练和推理任务。在创建docker容器时,可以通过如下命令指定挂载npu卡。如下的命令为:在docker容器中挂载0、1、2、3号npu。

-e ASCEND_VISIBLE_DEVICES=0-3

2. 问题描述

分别使用如下命令创建两个docker容器,期望在容器test0挂载0~3号npu,在容器test1挂载4~7号npu,但发现docker容器中并没有挂载指定卡,而是挂载了全部8张卡。

docker run -itd --privileged --cap-add=SYS_PTRACE --net=host \
--shm-size="32g" \
-e ASCEND_VISIBLE_DEVICES=0-3 \
--name test0 \
swr.cn-southwest-2.myhuaweicloud.com/devserver/pytorch_llama2_13b:0.1.0  \
/bin/bash
docker run -itd --privileged --cap-add=SYS_PTRACE --net=host \
--shm-size="32g" \
-e ASCEND_VISIBLE_DEVICES=4-7 \
--name test1 \
swr.cn-southwest-2.myhuaweicloud.com/devserver/pytorch_llama2_13b:0.1.0  \
/bin/bash

当在一个test0容器中执行npu操作后(如npu-smi info),会显示全部8张npu的信息,且在test1容器再执行npu操作时会卡死,并报错:

7.png

3. 解决方案

这是由于使用 --privileged 导致的问题,--privileged 会使docker容器拥有几乎与主机相同的权限,具体而言,包含以下两点:

1. 给容器添加了所有的capabilities

2. 允许容器访问主机的所有设备。

所以,应该尽量使用更细粒度的权限控制手段,通过--cap-add--device参数来分别添加必要的capabilities或设备访问权限。

本文提供两种方案:

3.1 通过ASCEND_VISIBLE_DEVICES挂载

通过如下命令创建docker容器时指定挂载0、1、2、3号卡:

docker run -itd--cap-add=SYS_PTRACE --net=host \
--shm-size="32g" \
-e ASCEND_VISIBLE_DEVICES=0-3 \
--name test0 \
swr.cn-southwest-2.myhuaweicloud.com/devserver/pytorch_llama2_13b:0.1.0  \
/bin/bash

3.2 通过--device挂载

通过如下命令创建docker容器时指定挂载0、1、2、3号卡:

docker run -itd --cap-add=SYS_PTRACE \
   --device=/dev/davinci0 \
   --device=/dev/davinci1 \
   --device=/dev/davinci2 \
   --device=/dev/davinci3 \
   --device=/dev/davinci_manager \
   --device=/dev/devmm_svm \
   --device=/dev/hisi_hdc \
   --shm-size 32g \
   --net=host \
   --name test0 \
   swr.cn-southwest-2.myhuaweicloud.com/devserver/pytorch_llama2_13b:0.1.0 \
   /bin/bash
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。