Qualcomm Cloud AI SDK 用户指南(2)
2. 简介-云AI 100
介绍
开发者可以通过云实例或购买配备高通云AI硬件的服务器来访问高通云AI硬件。
云实例
云实例拥有开发人员运行云人工智能工具链所需的所有软件工具和软件包。最低设置通常包括安装应用程序和平台 SDK。开发人员能够启动深度学习容器、加载适合其需求的机器映像等。有关访问这些实例的详细信息即将推出。
笔记
使用云实例的开发人员可以跳过安装部分的其余部分。单击此处转到下一部分“推理工作流程”
本地服务器
拥有本地服务器的开发人员需要与系统管理员合作,以确保正确安装和验证 Cloud AI SDK。建议开发人员和系统管理员完整地完成安装部分。
安装
Platform SDK(x86-64 和 ARM64)和 Apps SDK(仅限 x86-64)面向基于 Linux 的平台。SDK 可以本地安装在 Linux 操作系统上。Docker 和 Kubernetes 还支持容器和编排。还支持虚拟机,包括 KVM、ESXi 和 Hyper-V。本节涵盖:
- 跨多个 Linux 发行版安装 SDK
- 使用 SDK 和第三方软件包构建 Docker 映像,以无缝执行 QAic 推理工具/工作流程
- 设置 KVM、ESXi 和 Hyper-V 以及安装 SDK
编译和执行模式
应用程序和平台 SDK 支持在 x86-64 平台上进行即时 (JIT) 或提前 (AOT) 编译和执行,而 ARM64 上仅支持 AOT 编译/执行。
在 JIT 模式下,编译和执行紧密耦合,需要将应用程序和平台 SDK 安装在同一系统/VM 上。
在AOT模式下,编译和执行是解耦的。网络可以在 x86-64 上提前编译(仅使用 Apps SDK),编译后的网络可以使用 Platform SDK 部署在 x86-64 或 ARM64 上。
当应用程序和 Platform SDK 安装在同一服务器/VM 上时,x86-64 上支持 JIT 和 AOT。
支持的操作系统、虚拟机管理程序和平台
Cloud AI Platform SDK兼容以下操作系统和平台。
管理程序
Cloud AI 仅支持 PCIe 直通虚拟机。这意味着虚拟机完全拥有Cloud AI设备。单个Cloud AI设备不能在虚拟机之间或虚拟机与本地主机之间共享。
2.1 清单 - Cloud AI 100
安装清单
首先,检查支持的操作环境。
本地服务器安装
-
设置Linux服务器/工作站环境(先决条件)
- 在 UEFI/BIOS 设置中启用 32 个消息信号中断 (MSI)(MSI 指令)
-
安装平台和应用程序 SDK ( Cloud AI SDK )
-
提示:要在没有 root (sudo) 权限的情况下运行 Platform SDK 工具,请将您自己添加到 qaic 组。
sudo usermod -aG qaic $USER
- 再次登录以使更改生效,或运行“newgrp qaic”。
验证卡的健康状况/功能
- 检查 PCIe 枚举:
$ lspci | grep Qualcomm
01:00.0 Unassigned class [ff00]: Qualcomm Device a100
- PCIe 枚举失败可能表示连接不安全。尝试重新插入该卡,或使用其他 PCIe 卡进行故障排除。
- 检查设备节点:
ls /dev/mhi*
/dev/mhi0_QAIC_DIAG /dev/mhi0_QAIC_TIMESYNC /dev/mhi0_QAIC_QDSS /dev/mhi1_QAIC_DIAG
- 对于每张卡,都会创建 QAIC_DIAG、QAIC_TIMESYNC、QAIC_QDSS 和 QAIC_DIAG 节点。
- 如果 mhi* 文件夹不存在,请仔细检查UEFI/BIOS 设置中的MSI 设置
- 使用qaic-util检查卡的健康状况和状态
sudo /opt/qti-aic/tools/qaic-util -q | grep -e Status -e QID
QID 0
Status:Ready
QID 1
Status:Ready
QID 2
Status:Ready
QID 3
Status:Ready
- “状态:就绪”表示卡运行状况良好。这里显示的是一个具有 4 个云 AI SoC 的系统(每张卡可能有一个或多个基于 SKU 的 SoC)。
- “状态:错误”表示相应的卡尚未完全启动。
- 卡可能仍在启动。等待几分钟并重试上述命令。
- 卡错误可能是由于多种原因造成的 - 不支持的操作系统/平台、安全启动等。
- 使用 qaic-runner CLI 运行测试推理工作负载,以检查硬件/软件功能的健全性。例子:
sudo /opt/qti-aic/exec/qaic-runner -t /opt/qti-aic/test-data/aic100/v2/1nsp/1nsp-conv-hmx/ -a 14 -n 5000 -d 0
Input file: /opt/qti-aic/test-data/aic100/v2/1nsp/1nsp-conv-hmx//user_idx0_in.bin
---- Stats ----
InferenceCnt 5000 TotalDuration 17598us BatchSize 1 Inf/Sec 284123.196
- -d指定运行工作负载的 QID。
- -a根据指定 QID 中的 NSP 数量编辑值。
Inf/Sec 为正值表示 HW/SW 运行正常。报告的 Inf/Sec 取决于-a命令中指定的信息。
虚拟机设置
- 为支持的虚拟机管理程序配置 PCIe 直通
- 在 UEFI/BIOS 设置和管理程序中配置消息信号中断
- 安装和配置虚拟机管理程序
- 使用受支持的操作系统之一和先决条件配置并启动虚拟机实例
- 安装云AI SDK
- 检查卡的健康/功能
Docker 设置
- 在主机系统或虚拟机上安装Platform SDK(Cloud AI SDK)
- 构建 Docker 镜像并启动容器(Docker)
2.2 先决条件 - Cloud AI 100
x86-64 上的 Ubuntu 20.04 / 22.04
-
Ubuntu 20.04 / 22.04 安装了默认内核,具有最少的选项。
-
安装dkms内核包。
- sudo apt-get install dkms
-
安装linux-headers内核包。
-
安装以下软件包:
笔记
Python 3.8 64 位是 Cloud AI SDK 唯一支持的 Python 版本。
sudo apt-get update && sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt-get update && sudo apt-get install -y build-essential git vim libpci-dev libudev-dev python3-pip python3-setuptools python3-wheel python3.8 python3.8-dev python3.8-venv
sudo apt-get update && sudo apt-get install -y unzip wget ca-certificates sudo pciutils libglib2.0-dev libssl-dev snap snapd libgl1-mesa-glx openssh- server pkg-config clang-format libpng-dev
sudo apt-get install libstdc++6
sudo apt-get install libncurses5
sudo pip3 install --upgrade pip
sudo pip3 install wheel numpy opencv-python onnx
添加/更新环境变量:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/qti-aic/dev/lib/x86_64"
export PATH="/usr/local/bin:$PATH"
export PATH="$PATH:/opt/qti-aic/tools:/opt/qti-aic/exec:/opt/qti-aic/scripts"
export QRAN_EXAMPLES="/opt/qti-aic/examples"
export PYTHONPATH="$PYTHONPATH:/opt/qti-aic/dev/lib/x86_64"
export QAIC_APPS="/opt/qti-aic/examples/apps"
export QAIC_LIB="/opt/qti-aic/dev/lib/x86_64/libQAic.so"
export QAIC_COMPILER_LIB="/opt/qti-aic/dev/lib/x86_64/libQAicCompiler.so"\
x86-64 上的 Ubuntu 18.04
- 安装dkms软件包和linux-headers内核软件包。
sudo apt-get install dkms
-
原生内核已经安装了 linux-headers 包,但对于 5.4.1 内核,需要手动安装 headers 包。
-
从此处下载内核通用 .deb 文件并按如下方式安装:
sudo dpkg -i linux-headers-5.4.1-050401-generic_5.4.1-050401- generic-1_amd64.deb
sudo dpkg -i linux-image-5.4.1-050401-generic_5.4.1-050401- generic-1_amd64.deb
- 安装以下软件包:
笔记
Python 3.8 64 位是 Cloud AI SDK 唯一支持的 Python 版本。
sudo apt-get update && sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt-get update && sudo apt-get install -y build-essential git vim libpci-dev libudev-dev python3-pip python3-setuptools python3-wheel python3.8 python3.8-dev python3.8-venv
sudo apt-get update && sudo apt-get install -y unzip wget ca-certificates sudo pciutils libglib2.0-dev libssl-dev snap snapd libgl1-mesa-glx openssh- server pkg-config clang-format libpng-dev
sudo apt-get install -y libstdc++6
sudo apt-get install -y libncurses5
sudo pip3 install --upgrade pip
sudo pip3 install wheel numpy opencv-python onnx
添加/更新环境变量:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/qti-aic/dev/lib/x86_64"
export PATH="/usr/local/bin:$PATH"
export PATH="$PATH:/opt/qti-aic/tools:/opt/qti-aic/exec:/opt/qti-aic/scripts"
export QRAN_EXAMPLES="/opt/qti-aic/examples"
export PYTHONPATH="$PYTHONPATH:/opt/qti-aic/dev/lib/x86_64"
export QAIC_APPS="/opt/qti-aic/examples/apps"
export QAIC_LIB="/opt/qti-aic/dev/lib/x86_64/libQAic.so"
export QAIC_COMPILER_LIB="/opt/qti-aic/dev/lib/x86_64/libQAicCompiler.so"
x86-64 上的 Centos 7 / RHEL
- 安装了默认内核的 Centos 7 / RHEL
- 以“root”身份运行所有命令。
- 安装内核的 dkms 软件包。
- Centos 7 – yum -y 安装 dkms
- RHEL – 请参阅此链接了解如何安装 EPEL 软件包
- 为内核安装适当的 linux-headers 包。
- 安装以下软件包:
笔记
Python 3.8 64 位是 Cloud AI SDK 唯一支持的 Python 版本。
yum update –y
[Optional] update-ca-trust force-enable
yum -y install gcc-toolset-9-gcc gcc-toolset-9-gcc-c++ gcc-toolset-9- make gcc-toolset-9-binutils automake
source /opt/rh/gcc-toolset-9/enable
yum install -y git vim cmake pciutils-devel rpm-build systemd-devel libudev-devel python38 python3-pip python3-setuptools python3-wheel python3-devel
yum install -y unzip wget ca-certificates sudo pciutils libnsl ncurses-compat-libs libasan glib2-devel ncurses-compat-libs mesa- libGL libpng-devel
pip3 install --upgrade pip
pip3 install numpy opencv-python onnx wheel
添加/更新环境变量:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/qti-aic/dev/lib/x86_64"
export PATH="/usr/local/bin:$PATH"
export PATH="$PATH:/opt/qti-aic/tools:/opt/qti-aic/exec:/opt/qti-aic/scripts"
export QRAN_EXAMPLES="/opt/qti-aic/examples"
export PYTHONPATH="$PYTHONPATH:/opt/qti-aic/dev/lib/x86_64"
export QAIC_APPS="/opt/qti-aic/examples/apps"
export QAIC_LIB="/opt/qti-aic/dev/lib/x86_64/libQAic.so"
export QAIC_COMPILER_LIB="/opt/qti-aic/dev/lib/x86_64/libQAicCompiler.so"
消息信号中断
Linux 的 QAic 内核驱动程序需要 32 个消息信号中断 (MSI) 才能获得最佳性能。QAic 内核驱动程序确实支持单个 MSI 配置,但不推荐。在基于 x86 的主机系统上,必须在 BIOS 中启用 Intel VT-d 或 IOMMU 功能才能启用所需数量的 MSI。
对于使用 Intel 芯片组的主机系统,请确保在 BIOS 中启用 Intel 虚拟化 (VT-d)。对于使用 AMD 芯片组的主机系统,请确保在 BIOS 中启用 IOMMU 功能。