使用动态虚拟化时,以普通用户运行推理业务失败
问题现象描述
在Atlas 推理系列产品上部署Ascend Device Plugin和Volcano组件并开启动态虚拟化开关,下发任务后虚拟设备创建成功,但推理任务运行失败。
原因分析
推理任务容器使用普通用户运行,会出现以下问题,最终导致普通用户访问root属组的vNPU设备失败,从而导致推理业务容器运行失败。
- 物理机上通过特权容器调用接口创建的vNPU为root属组,该vNPU在特权容器内“/dev”目录下不可见。
- 驱动接口创建vNPU后默认为root属组,特权容器内就无法修改新创建的vNPU属组为非root。
解决措施
在Ascend Device Plugin组件的启动YAML中挂载“/dev”,示例如下。
command: [ "/bin/bash", "-c", "--"]
args: [ "device-plugin -useAscendDocker=true -volcanoType=true
-logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0" ]
securityContext:
privileged: true
readOnlyRootFilesystem: true
imagePullPolicy: Never
volumeMounts:
- name: device-plugin
mountPath: /var/lib/kubelet/device-plugins
... # 此处省略若干字段
- name: tmp
mountPath: /tmp
- name: dev
mountPath: /dev # 在此处挂载/dev
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
volumes:
- name: device-plugin
hostPath:
path: /var/lib/kubelet/device-plugins
... # 此处省略若干字段
- name: tmp
hostPath:
path: /tmp
- name: dev # 在此处挂载/dev
hostPath:
path: /dev
父主题: 使用时出现的故障