常见问题

注解

为提高问题排查效率,我们推荐您优先升级工具到最新版本。

通用排查方法

若出现异常,请您首先参考报错信息给出的 log 提示进行检查,若 x86 端日志无法准确定位问题,请查看开发板端日志,路径为 ${remote_root}/${session_token}/log/s.log${remote_root} 默认为 /map/hbm_infer${session_token} 为错误日志中打印的 token 值。

SSH 相关错误

若出现 SSH 错误,请先确认 x86 端与开发板网络是否联通。当开发板 SSH 端口非 22 时,需要用工具的 ssh_port 参数指定实际端口号。若登录开发板的账号非 root 时,请正确指定 username 参数。若账号密码非空,请正确指定 password 参数,且需要在 x86 端安装 sshpass 工具用于在清理资源时传递密码。

InactivcateRpcError 异常

  • 首帧推理即失败且开发板日志无异常(无错误日志或已超时退出),请按如下方法测试 gRPC 通信可用性:

    1. 我们提供的测试 case 位于 hbm_infer 包内的 grpctest 目录下,使用时需将 test_grpc_server_${os} 拷贝至开发板并手动运行,其中 ${os} 可选 linuxqnx
    # 若不指定参数,则会自动分配端口
    ./test_grpc_server_linux
    # Output: Server is running on port: 35017
    
    # 指定端口号
    ./test_grpc_server_linux 33333
    # Output: Server is running on port: 33333
    1. x86 端运行:
    # IP 为开发板 IP,PORT 为服务端打印的端口号。
    python3 -m hbm_infer.grpctest.test_grpc_client IP:PORT
    1. 若能成功连通则 x86 端和服务端均有传输成功打印,否则 x86 端将抛出异常。

    若上述方法无法跑通,请确认下开发板的相应端口是否开放了权限,若未开通请开通后再次测试。若开发板仅有部分端口开通了权限,可使用 HbmRpcSession 的 grpc_port 参数指定开发板的 gRPC 端口号;需要注意,同一时间内连接同一开发板的所有不同 session 都不能设置相同的 gRPC 端口号,防止数据混淆。

  • 推理若干帧后出现 InactivcateRpcError 错误,建议排查网络稳定性以及服务端进程是否有异常。

其他注意事项

  • HbmRpcSession、HbmServer及HbmHandle都需要显式调用 close 接口释放开发板资源,不推荐在上层对象的 __del__ 中调用 close 接口,避免因垃圾回收时机不确定导致的异常。

  • 推荐使用必要的异常处理逻辑,保证开发板资源正确释放。若在调试时出现较多次失败可能导致开发板进程和空间资源占用较多,请及时上板手动清理。

  • 若使用多模型 session,那么模型文件名称及模型 graph 名称都不允许重复,否则可能出现模型文件被覆盖找不到等异常问题。

  • 推理 L2M 模型时,请使用工具的 remote_environment 参数设置对应环境变量,使用 core_id 参数设置推理使用的 BPU 核心。

  • 若想简单了解工具评测效率,可参考使用如下命令进行测试:

python3 -m hbm_infer.perftest.test_performance --device xx.xx.xx.xx --model_dir xx/xx --log_path perf.log --epoch 100