在容器中使用vnpu运行报错:set device=132, valid device range is [0, 3)
收藏回复举报
在容器中使用vnpu运行报错:set device=132, valid device range is [0, 3)
t('forum.solved') 已解决
新人帖
发表于2025-04-19 18:44:35
0 查看

对56号GPU进行虚拟化,得到了id为132的vnpu

cke_19841.png

设置ASCEND_VISIBLE_DEVICES=132,133,134

docker run -it --device=/dev/vdavinci132:/dev/davinci132 --device=/dev/vdavinci133:/dev/davinci133 --device=/dev/vdavinci134:/dev/davinci134 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -e  ASCEND_VISIBLE_DEVICES=132,133,134 -e ASCEND_RUNTIME_OPTIONS=VIRTUAL -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi  -v /usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/common -v /usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/driver -d ascend-sam:v1 /bin/bash

运行如下程序:

​#!/usr/bin/env python3

import os
import sys
from ais_bench.infer.interface import InferSession

device_ids = [56, 132]

model_path = "weights/resnet18_image_encoder_310P3_FP32.om"
if len(sys.argv) > 1:
    model_path = sys.argv[1]

print(f"当前环境变量: ASCEND_VISIBLE_DEVICES={os.environ.get('ASCEND_VISIBLE_DEVICES', '未设置')}")
print(f"将尝试以下设备ID: {device_ids}")

for device_id in device_ids:
    print(f"\n尝试使用设备ID: {device_id}")
    try:
        os.environ["ASCEND_VISIBLE_DEVICES"] = str(device_id)
        print(f"设置ASCEND_VISIBLE_DEVICES={device_id}")
        
        session = InferSession(device_id, model_path)
        print(f"成功使用设备ID {device_id} 加载模型!")
        break
    except Exception as e:
        print(f"使用设备ID {device_id} 失败: {e}") 


​

[ACL ERROR] EE1001: [PID: 209] 2025-04-18-16:08:59.202.056 The argument is invalid.Reason: Set device failed, invalid device, set device=132, valid device range is [0, 3)

Solution: 1.Check the input parameter range of the function. 2.Check the function invocation relationship.

TraceBack (most recent call last):

rtSetDevice execute failed, reason=[device id error][FUNC:FuncErrorReason][FILE:error_message_manage.cc][LINE:53]

open device 132 failed, runtime result = 107001.[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161]

比如在此处我配置3个vnpu,他仅能调度[0,3)号设备,但vnpu_id限制取值范围为[phy_id*16 + 100, phy_id * 16+107],应该如何解决?

我要发帖子