开发者
下载
NPU推理服务拉起失败问题排查与解决:驱动库路径配置异常导致get device count失败

NPU推理服务拉起失败问题排查与解决:驱动库路径配置异常导致get device count失败

昇腾CANN

发表于: 2026/06/04

背景概述

在基于昇腾(Ascend)AI处理器的深度学习推理场景中,推理服务的正常启动依赖于NPU驱动的正确加载与初始化。当推理任务无法拉起时,通常需从驱动层、运行时环境及容器配置等多个维度进行排查。本文记录一次因容器内动态库加载路径配置不当,导致NPU驱动异常、推理服务启动失败的典型问题,结合实际排查过程,提供可复现的解决方案。

问题现象

在容器化部署的推理服务启动过程中,出现服务拉起失败,日志中持续报错:

[ERROR] ASCENDCL(16,python):2026-03-10-20:43:06.551.104 [device.cpp:236]16 aclrtGetDeviceCountImpl: get device count failed, runtime result = 507000.

同时,执行npu-smi info命令时返回符号查找错误:

npu-smi: symbol lookup error: /usr/local/Ascend/driver/lib64/driver/libdrvdsmi_host.so: undefined symbol: g_logPrintInfo

该错误表明NPU管理工具在加载驱动库时,无法找到所需的符号g_logPrintInfo,进而导致NPU设备信息无法获取,推理任务因无法初始化设备而失败。

故障排查过程

1. 分析npu-smi报错含义

symbol lookup error表明运行npu-smi时加载libdrvdsmi_host.so时,未能找到符号g_logPrintInfo。该符号通常由驱动层的日志模块提供,其缺失可能源于以下原因:

  • 容器内npu-smi二进制与宿主机驱动版本不兼容;
  • LD_LIBRARY_PATH环境变量配置错误,导致链接器在错误的路径下查找库文件(一般情况下业务容器内有俩,一个CANN的,一个HDK的,同名文件,HDKlibdrvdsmi_host.so是向下的dirver/libascend_hal.so查询芯片信息,与底层硬件互动。CANNlibdrvdsmi_host.so是向上的,toolkit/xxx/libascend_hal.so 是向应用程序开放的接口,开发应用时用到)。

2. 验证版本兼容性

通过md5sum npu-smi对比容器内与宿主机上npu-smi二进制文件的哈希值,确认二者一致,排除版本不匹配问题。

3. 检查依赖库加载路径

使用ldd ./libdrvdsmi_host.so命令分析npu-smi二进制的依赖项

确定容器内和宿主机上使用npu-smi 二进制时用到的依赖不一致,容器中npu-smi实际使用的是CANNlibdrvdsmi_host.so,是因为在LD_LIBRARY_PATH指定的路径中,CANNlib库路径在HDKlib库路径前,所以执行npu-smi相关命令时,调用的是CANNlibdrvdsmi_host.so

问题根因

容器内LD_LIBRARY_PATH的路径顺序配置错误,导致npu-smi及其依赖的运行时组件加载了错误版本的驱动库(CANN版本),该版本与当前环境不兼容,引发符号缺失,最终导致aclrtGetDeviceCountImpl调用失败,推理服务无法拉起。

解决方案

为确保推理服务正常启动,需修正容器内库路径加载顺序,优先使用与硬件交互兼容的HDK驱动库。在容器启动脚本或环境配置中,执行以下命令:

export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver:${LD_LIBRARY_PATH}

说明:

/usr/local/Ascend/driver/lib64/common:包含通用驱动接口库;  

/usr/local/Ascend/driver/lib64/driver:包含底层驱动实现,与硬件直接交互;  

将此路径置于LD_LIBRARY_PATH前部,可确保链接器优先加载正确的libdrvdsmi_host.so

执行后重新运行npu-smi info,确认无符号错误;重启推理服务,问题解决,aclrtGetDeviceCountImpl调用成功,推理任务可正常拉起。

总结

本案例表明,在容器化部署NPU推理服务时,环境变量LD_LIBRARY_PATH的路径顺序对驱动库的正确加载具有关键影响。建议在部署时统一管理驱动库路径,避免因路径优先级问题导致运行时异常。通过合理配置库路径,可有效规避因动态库加载错误引发的推理服务启动失败问题。

本页内容