---
title: vLLM-Ascend 推理作业 NPU 设备识别为空-官方技术文章-昇腾社区
description: 在使用 Ray 分布式框架部署 vLLM-Ascend 进行多机多卡推理时&#xff0c;遇到作业启动失败的问题。具体表现为 HCCL 通信初始化报错&#xff0c;且日志中频繁出现 &#96;set device parameters [] error&#96; 或类似的空列表错误。
keywords: LLM,Ascend,推理作业,NPU,设备识别为空,官方技术文章,昇腾社区,背景概述
url: https://www.hiascend.com/developer/techArticles/20260721-3
section: (其他)
---

# vLLM-Ascend 推理作业 NPU 设备识别为空-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20260721-3
描述: 在使用 Ray 分布式框架部署 vLLM-Ascend 进行多机多卡推理时&#xff0c;遇到作业启动失败的问题。具体表现为 HCCL 通信初始化报错&#xff0c;且日志中频繁出现 &#96;set device parameters [] error&#96; 或类似的空列表错误。
关键词: LLM,Ascend,推理作业,NPU,设备识别为空,官方技术文章,昇腾社区,背景概述

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

vLLM-Ascend 推理作业 NPU 设备识别为空

vLLM-Ascend 推理作业 NPU 设备识别为空

技术文章CANN

发表于: 2026/07/21

24

0

## 背景概述

在使用 Ray 分布式框架部署 vLLM-Ascend 进行多机多卡推理时，遇到作业启动失败的问题。具体表现为 HCCL 通信初始化报错，且日志中频繁出现`set device parameters [] error`或类似的空列表错误。

## 问题现象

### 1. 报错信息

在四机集群环境中运行 vLLM-Ascend 作业时，进程启动阶段即发生崩溃，关键报错如下：

●

HCCL 错误：`HCCL function error: hcclCommInitRootInfoConfig`

●

设备配置错误：日志中显示`set device parameters [] error`，表明框架未能正确获取到可用的 NPU 设备列表。

### 2. 环境版本

●

HDK: 24.1.rc3

●

CANN: 8.0.0

●

vllm-ascend: 0.7.3rc2.dev5+g0713836.d20250804

●

Ray: 最新稳定版

## 原因分析

### 1. 排查环境变量

排查方向集中在是否未配置`ASCEND_RT_VISIBLE_DEVICES`环境变量。然而，即使手动配置了该变量，作业依然报错，且错误信息仍指向设备列表为空（`[]`）。

### 2. Ray 的资源调度机制差异

问题的根本原因在于Ray 框架对 Ascend NPU 设备的默认行为与 NVIDIA GPU 存在差异。

●

Ray 的资源抽象：Ray 通过中央调度器管理逻辑资源池。对于 NVIDIA GPU，Ray 可以利用成熟的 CUDA 生态和`nvidia-smi`工具自动探测并注册 GPU 资源。

●

Ascend NPU 的特殊性：Ray 默认并未内置对 Ascend NPU 的自动发现和管理机制。当 Ray 在 NPU 节点上启动 Worker 进程时，由于无法自动识别可用的 NPU 资源，它会保守地将`ASCEND_RT_VISIBLE_DEVICES`设置为空列表`[]`。

●

后果：vLLM-Ascend 依赖该环境变量来绑定具体的 NPU 卡。当接收到空列表时，底层驱动无法初始化 HCCL 通信，从而导致作业崩溃。

## 解决方案

针对上述根因，有两种有效的解决策略，可根据实际部署场景选择其一。

### 方案一：在 Ray 启动时显式声明 NPU 资源

在启动 Ray 集群节点时，通过`--resources`参数显式告知 Ray 当前节点可用的 NPU 数量。这样 Ray 就能将 NPU 纳入资源池管理，从而正确分配设备。

操作步骤：在启动 Ray Head 或 Worker 节点时，添加`--resources`参数，指定 NPU 资源名称及数量。

# 示例：声明当前节点有 8 个 NPU 资源
ray start --head --resources='{"NPU": 8}'

●

参考文档：Ray Accelerators Documentation [了解详情](https://docs.ray.io/en/latest/ray-core/scheduling/accelerators.html#starting-ray-nodes-with-accelerators)

### 方案二：禁用 Ray 自动设置，手动管理设备

vLLM-Ascend 官方文档提供了一种更灵活的方式：通过环境变量禁用 Ray 自动设置`ASCEND_RT_VISIBLE_DEVICES`的行为，转而由 vLLM 手动管理设备绑定。

操作步骤：在启动 Ray 集群之前，设置环境变量`RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES`为`1`。

export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1

设置后，Ray 将不再尝试自动修改该环境变量，vLLM-Ascend 将根据其内部逻辑自定义的环境变量正确识别 NPU 设备。

●

参考文档：vLLM-Ascend Multi-Node Tutorial [了解详情](https://github.com/vllm-project/vllm-ascend/blob/v0.8.4rc1/docs/source/tutorials/multi_node.md)

## 总结

在使用 Ray 框架运行 vLLM-Ascend 时，务必注意 NPU 资源的显式声明或手动管理。通过上述任一方案解决设备识别为空的问题，即可确保 HCCL 通信正常初始化，保障多机多卡推理作业的稳定性。

边框设置

无框线

边距

宽度

1磅

颜色

自由布局设置

整体布局

子模块

评论

修订记录

对正文进行的文本增删、样式修改都将标记为修订

自定义多级列表

列表设置

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9

- 1.
- a.
- i.
- 1.
- a.
- i.
- 1.
- a.
- i.

前缀

无

序号

1 2 3 ...

后缀

.

编号格式

列表显示

继承层级

不继承

位置

对齐方式

默认

单元格边距

边距

默认

左边距

cm

右边距

cm

上边距

cm

下边距

cm

点赞 0

本页内容

背景概述 [了解详情](https://www.hiascend.com/#3okcNS2rQmNWjya5TMrsP8)

问题现象 [了解详情](https://www.hiascend.com/#7ReudkqNn1tf7niWwqFhhs)

原因分析 [了解详情](https://www.hiascend.com/#1I9UGpHi01arBxSmwzeT0T)

解决方案 [了解详情](https://www.hiascend.com/#7UZzKzVAsbayNsKzr9WnKn)

总结 [了解详情](https://www.hiascend.com/#27zqS00MMcD5byDCYDJdZB)
