4.2 后摩
本次大赛提供后摩 LQ50 M.2 卡和 LM5030 PCIe 智能加速卡,用于扩展 CIX P1 平台的本地模型推理能力。两款板卡均基于后摩 M50 平台,使用后摩大道和揽月软件栈,驱动、设备管理和推理框架的基本使用方式一致,主要区别在于硬件形态和赛事适配平台。
板卡 |
接口 |
赛事适配平台 |
|---|---|---|
LQ50 |
M.2 2280 M-Key,PCIe 通信 |
瑞莎星睿 O6N |
LM5030 |
PCIe |
瑞莎星睿 O6、铭凡 MS-R1 |
后摩 M50 软件包通常使用 xh2 标识目标平台。CIX P1 为 ARM64 架构,下载驱动和揽月软件时,应选择:
关联芯片:M50
板级:LM5030/LQ50
平台架构:aarch64
本章按照以下流程介绍后摩加速卡的使用:
检查硬件和已有驱动
安装或恢复驱动
选择揽月推理组件
部署 HLIELlama
下载并运行后摩适配模型
启动 OpenAI 兼容接口
接入 CIX P1 上的 Agent 应用
如果赛事设备已经预装驱动,且 hm_smi -a 检查正常,可以跳过驱动安装,直接进入 4.2.2 节。
4.2.1 驱动安装
4.2.1.1 检查硬件和现有驱动
安装驱动前,先安装 PCIe 检查工具:
sudo apt update
sudo apt install -y pciutils
检查 PCIe 设备:
lspci -nn | grep -i "1f6b:0c00"
也可以查看 PCIe 拓扑:
lspci -tv
如果能够看到 1f6b:0c00,说明操作系统已经识别到后摩 M50 设备,PCIe 硬件链路基本正常。
继续检查后摩设备管理工具:
command -v hm_smi
hm_smi -a
如果 hm_smi -a 能够显示以下信息,说明当前驱动环境基本可用:
后摩软件和 SMI 版本;
驱动版本;
固件版本;
板卡型号;
PCIe BDF、速率和 Lane 数量;
IPU 核心数量和利用率;
设备内存;
温度;
板卡功耗。
此时无需重新安装驱动,可以直接进入 4.2.2 节。
根据检查结果进行处理:
检查结果 |
处理方式 |
|---|---|
lspci 无输出 |
检查板卡安装、供电、散热、BIOS 和 PCIe 通道,不继续安装驱动 |
lspci 正常,hm_smi -a 正常 |
驱动已经可用,跳过安装 |
lspci 正常,但 hm_smi 不存在 |
安装赛事提供的驱动包 |
hm_smi 存在但无法识别设备 |
检查驱动、固件和 Runtime 版本,必要时重新安装 |
温度或功耗明显异常 |
停止模型任务并联系赛事维护人员 |
lspci 无法识别设备属于硬件链路问题,不能通过反复安装驱动解决。
4.2.1.2 下载驱动安装包
后摩开发者社区:点击此处跳转
后摩资源中心:点击此处跳转
在资源中心下载驱动时,应确认以下条件:
筛选项 |
选择要求 |
|---|---|
板级产品 |
LQ50或LM5030 |
平台架构 |
ARM / ARM64 / aarch64 |
操作系统 |
Linux,若没有选择ubuntu |
资源类型 |
芯片驱动 |
驱动文件名通常类似:
houmo-drv-xh2_<release>_<distro>_aarch64.run
其中:
xh2 表示 M50 平台;
<release> 表示后摩软件 Release;
<distro> 表示适配的操作系统;
aarch64 表示 ARM64 架构。
后摩官方驱动文档主要覆盖 Ubuntu、Kylin、UOS 等系统。赛事使用 Debian 12 时,应优先使用赛事技术团队已经在当前系统和内核上验证过的驱动包,不要自行选择其他发行版的软件包混装。
4.2.1.3 安装前准备
创建安装目录:
mkdir -p ~/houmo-install
cd ~/houmo-install
将赛事提供的驱动安装包复制到该目录。
安装基础依赖:
sudo apt update
sudo apt install -y \
pciutils \
python3 \
python3-dev \
python3-pip
检查 Python 和 pip:
python3 --version
python3 -m pip --version
后摩驱动文档要求 Python 3.9 及以上,并推荐 Python 3.9。赛事 Debian 12 系统如果已经使用更高版本的 Python,且赛事驱动已完成验证,不需要主动降级系统 Python。
网络访问 PyPI 较慢时,可以选择配置 pip 镜像源:
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
检查配置:
python3 -m pip config list
如果仅使用命令行安装驱动,不需要安装 GUI 和 XCB 图形依赖。只有在明确使用图形化升级工具时,才按照后摩对应文档安装图形组件。
安装前还应确认:
主机网络连接正常;
系统剩余空间充足;
没有正在运行的驱动安装或卸载任务;
当前使用的驱动包文件完整;
板卡供电和散热正常。
4.2.1.4 卸载旧版本驱动
首次安装可以跳过本步骤。
如果设备已经安装其他版本的后摩驱动,或者需要升级到赛事指定版本,应先使用原驱动安装包卸载旧版本:
sudo bash \
./houmo-drv-xh2_<old_release>_<distro>_aarch64.run \
uninstall all
卸载过程中:
不得使用 Ctrl+C 中断;
不得关闭主机电源;
不得复位或拔插后摩设备;
不得同时执行新版本驱动安装。
不要直接删除:
/usr/local/houmo-sdk
直接删除目录可能残留内核模块、环境变量、系统服务或配置文件,应通过原安装包执行完整卸载。
卸载完成后,根据安装程序提示重新启动系统:
sudo reboot
4.2.1.5 安装驱动和 SDK
进入驱动安装包目录:
cd ~/houmo-install
增加执行权限:
chmod a+x \
houmo-drv-xh2_<release>_<distro>_aarch64.run
安装驱动和全部相关组件:
sudo bash \
./houmo-drv-xh2_<release>_<distro>_aarch64.run \
install all
后摩官方建议使用:
install all
该方式会安装驱动、SDK、SMI 管理工具及 HmUpdateTool 等相关组件。
上述install成功后,需要重启加速卡设备
hm_smi -rd <device_id>
<device_id>为当前设备上后摩加速卡设备描述符,若只有一张卡则默认为0
如果需要指定安装目录,可以执行:
sudo bash \
./houmo-drv-xh2_<release>_<distro>_aarch64.run \
install all \
--path /usr/local/houmo-sdk
不指定 –path 时,默认安装目录通常为:
/usr/local/houmo-sdk
安装过程中如果提示旧目录非空,例如:
the /usr/local/houmo-drv-xh2_<release> directory is not empty,
do you want to clean the files in this directory
确认该目录属于需要替换的旧版本后,输入:
yes
安装过程中必须遵守以下要求:
不得断电或复位主机;
不得拔插后摩板卡;
不得使用 Ctrl+C 中断;
不得同时启动其他安装或卸载程序;
不得混装不同 Release 的驱动、固件和 Runtime。
4.2.1.6 加载环境变量并验证
安装程序可能提示执行:
source /etc/profile.d/houmo-sdk.sh
可以使用以下命令判断文件是否存在并加载:
test -f /etc/profile.d/houmo-sdk.sh && \
source /etc/profile.d/houmo-sdk.sh
检查 SDK 目录:
ls -ld /usr/local/houmo-sdk
检查管理工具:
command -v hm_smi
验证设备:
hm_smi -a
重点检查以下字段:
字段 |
判断标准 |
|---|---|
Driver_Version |
能够显示驱动版本 |
Firmware_Version |
能够显示固件版本 |
Model |
能够识别当前板卡型号 |
BDF |
能够显示 PCIe 地址 |
Cur_BandWidth |
能够显示 PCIe 速率和 Lane 数量 |
Core_Num |
能够识别 IPU 核心 |
DDR_Memory_Total |
能够识别板载内存 |
Temperature |
温度信息正常 |
Board_Power |
能够读取功耗 |
再次检查 PCIe:
lspci -nn | grep -i "1f6b:0c00"
如果安装后 hm_smi -a 没有返回设备信息,可以重新启动系统:
sudo reboot
重新登录后执行:
source /etc/profile.d/houmo-sdk.sh
hm_smi -a
同时满足以下条件,可认为驱动环境基本正常:
lspci 能够识别 1f6b:0c00;
hm_smi -a 能够显示后摩设备;
驱动和固件版本能够读取;
IPU、板载内存、温度和功耗信息正常;
没有设备初始化或 PCIe 通信错误。
4.2.1.7 固件异常处理
如果驱动安装程序提示固件版本过低,或者 hm_smi -a 显示驱动与固件版本不匹配,不应继续反复安装驱动。
HmUpdateTool 用于后摩设备固件升级,但固件刷写存在设备不可用风险。赛事环境下,应由后摩或赛事技术团队确认以下内容后再执行:
板卡型号;
固件包版本;
驱动与固件的对应关系;
供电和散热状态;
升级失败后的恢复方案。
参赛者不要自行执行:
固件升级;
DDR Training;
设备频率调整;
功耗策略调整;
底层设备复位。
4.2.2 揽月推理组件选择
后摩揽月软件栈提供从底层推理引擎到上层服务封装的多层组件。M.2 和 PCIe 板卡的软件选型方式基本一致,选择时应重点考虑模型格式、调用接口、并发需求、开发语言和交付复杂度。
4.2.2.1 组件定位
组件 |
核心定位 |
典型能力 |
大赛使用建议 |
|---|---|---|---|
HLIELlama |
后摩定制 llama.cpp 运行环境 |
GGUF、命令行推理、Benchmark、WebUI、OpenAI 兼容接口 |
推荐优先使用 |
HLIECpp |
C++ 工程化推理服务 |
HTTP 服务、模型加载与卸载、多实例、系统服务 |
可选 |
HLIEvLLM |
后摩定制 vLLM 推理引擎 |
高吞吐、长上下文、批处理、Prompt Cache、多芯调优 |
高级可选 |
HLIEPython |
Python 服务封装与模型调度层 |
多模型管理、HTTP、OpenAI SDK、WebSocket |
高级可选,通常依赖 HLIEvLLM |
HLIELlama 基于开源 llama.cpp 集成后摩大道推理能力,提供 llama-cli、llama-server、llama-bench、llama-gguf 和 model-cli 等工具,适合在 ARM64 Linux 环境中完成模型验证、性能测试和本地 Agent 接入。
4.2.2.2 选择建议
根据作品需求选择:
需要快速运行 GGUF 模型并接入 Agent:选择 HLIELlama;
需要工程化 OpenAI 兼容服务和模型动态管理:选择 HLIECpp;
需要高并发、长上下文或 vLLM 参数调优:选择 HLIEvLLM;
Python 后端需要统一管理文本、多模态、ASR、TTS 或 Embedding 模型:选择 HLIEPython 和 HLIEvLLM。
本指南后续以 HLIELlama 为主要示例。
后摩资源中心还提供 HLChatDesktop、HLChat、揽月 AI 助手等应用。这些应用可以用于模型能力体验和环境验证,但不替代参赛作品自身需要实现的多步骤规划、工具调用和任务状态管理能力。
4.2.2.3 版本选择原则
HLIELlama、后摩大道 Runtime 和模型包之间存在版本对应关系。不同版本可能出现以下变化:
支持的模型架构不同;
模型包可能不向前兼容;
llama-server 参数可能变化;
Qwen 思考模式参数可能变化;
Prompt Cache、并发和多模态能力可能变化;
模型使用的后摩大道 BUILD 版本不同。
赛事使用时应遵循:
赛事驱动版本
赛事大道 Runtime 版本
赛事 HLIELlama 版本
与该版本匹配的模型 BUILD
应优先使用赛事指定的正式版本,不建议使用未经验证的 Preview 软件包。
4.2.3 HLIELlama 部署和使用
4.2.3.1 下载 HLIELlama
进入后摩资源中心,选择:
后摩揽月
类别:推理框架
软件系统:HLIELlama
CPU 架构:arm
操作系统:Linux
版本:最新正式版
创建工作目录:
mkdir -p ~/houmo
cd ~/houmo
将软件包复制到该目录,根据实际格式解压。例如:
tar -xf <HLIELLAMA_ARM_LINUX_PACKAGE>.tar.gz
或者:
unzip <HLIELLAMA_ARM_LINUX_PACKAGE>.zip
进入解压目录:
cd houmo-application-software-llama.cpp-xh2*
查看目录结构:
find . -maxdepth 2 -type d | sort
正常情况下应包含:
bin/
include/
lib/
models/
scripts/
service/
version.txt
其中:
目录 |
作用 |
|---|---|
bin |
HLIELlama 命令行和服务程序 |
include |
llama.cpp 头文件,用于 C/C++ 二次开发 |
lib |
llama.cpp 和后摩大道依赖库 |
models |
默认模型存放目录 |
scripts |
HMM 到 GGUF 的转换工具 |
service |
llama-server 系统服务脚本 |
version.txt |
当前软件版本 |
查看版本:
cat version.txt
检查主要程序:
ls -lh bin
通常包括:
llama-cli
llama-server
llama-bench
llama-gguf
llama-gguf-split
model-cli
确保程序具有执行权限:
chmod +x bin/*
4.2.3.2 检查运行环境
加载后摩 SDK 环境:
test -f /etc/profile.d/houmo-sdk.sh && \
source /etc/profile.d/houmo-sdk.sh
检查程序架构:
file bin/llama-server
输出中应包含 ARM 或 AArch64,而不是 x86-64。
检查动态库:
ldd bin/llama-server | grep "not found"
如果没有输出,说明没有发现明显缺失的动态库。
仅在确实存在软件包内部动态库加载问题时,可在当前终端临时执行:
export LD_LIBRARY_PATH="$PWD/lib:${LD_LIBRARY_PATH:-}"
不要在未确认影响范围时,将该路径永久写入系统环境。
检查 HLIELlama 是否能够识别后摩设备:
./bin/llama-server --list-devices
正常情况下应看到类似:
Available devices:
0: HoumoNPU LQ50
同时执行:
hm_smi -a
如果 llama-server –list-devices 和 hm_smi -a 均能识别设备,说明 HLIELlama 已经能够访问后摩加速卡。
单卡赛事设备通常默认使用设备 0。如需显式指定:
export HOUMO_DEVICE_ID=0
4.2.3.3 查询并下载适配模型
HLIELlama 的 model-cli 可以查询和下载后摩已经完成量化、编译和 GGUF 封装的模型。
查询 M50 模型:
./bin/model-cli query target=xh2
筛选单卡模型:
./bin/model-cli query target=xh2 device=1
也可以根据模型规模继续筛选:
./bin/model-cli query \
target=xh2 \
device=1 \
size=4b
模型列表中的主要字段如下:
字段 |
说明 |
|---|---|
ID |
模型下载标识 |
NAME |
模型名称 |
SIZE |
模型参数规模 |
BUILD |
模型使用的后摩大道构建版本 |
CTX |
最大上下文长度 |
BATCH |
是否为多 Batch 模型 |
DEVICE |
模型所需板卡或芯片数量 |
TARGET |
目标平台,M50 应为 xh2 |
CORES |
使用的 IPU 核心数量 |
FILES |
GGUF 文件数量,多模态模型通常包含多个文件 |
单卡赛事设备应优先选择:
TARGET = xh2
DEVICE = 1
首次验证建议优先使用赛事指定的 Qwen3 4B、Qwen3 8B 或其他较小模型,不建议一开始选择需要双卡、多卡或超长上下文的大模型。
下载模型:
./bin/model-cli \
-model-path "$PWD/models" \
pull <MODEL_ID>
其中,<MODEL_ID> 应替换为当前 query 返回的实际 ID,不建议把文档中的历史 ID 写死。
查看本地模型:
./bin/model-cli \
-model-path "$PWD/models" \
list
检查下载结果:
find "$PWD/models" \
-type f \
-name "*.gguf" \
-ls
查看 GGUF 信息:
./bin/llama-gguf <MODEL_GGUF> r
如果模型包含多个 GGUF 文件,应按照模型说明选择入口文件。分片模型通常使用第一个 GGUF 文件作为 -m 参数,例如:
model_00001-of-00003.gguf
后摩发布的 GGUF 模型已经根据 M50 和后摩大道工具链完成适配。普通上游 GGUF 不一定能够直接运行,应优先使用 model-cli 下载或赛事提供的模型。
4.2.3.4 运行命令行推理
1. 查看已下载的 GGUF 模型文件
find "$PWD/models" -type f -name "*.gguf"
根据模型 README、下载说明或 model-cli list 输出,确认需要加载的入口模型文件。
2. 设置模型路径
将 MODEL_PATH 设置为入口模型文件的绝对路径:
MODEL_PATH="<MODEL_GGUF绝对路径>"
例如:
MODEL_PATH="$PWD/models/Qwen2.5-1.5B-Instruct-Q4_K_M.gguf"
注意:不要自动选择搜索结果中的第一个 .gguf 文件。在多模态、多模型或分片模型目录中,第一个文件可能是 mmproj.gguf、Embedding 模型或非入口分片,无法作为主模型直接加载。具体入口文件应以模型 README、下载说明或 model-cli list 的结果为准。
3. 检查模型路径
echo "$MODEL_PATH"
ls -lh "$MODEL_PATH"
如果文件路径正确,ls 命令将输出模型文件的大小、权限和修改时间等信息。
4. 查看 llama-cli 参数
./bin/llama-cli --help
5. 执行基础文本推理
./bin/llama-cli \
-m "$MODEL_PATH" \
-p "请用一句话介绍你自己。" \
-n 128
6. 观察设备运行状态
推理过程中,在另一个终端执行:
watch -n 1 hm_smi -a
如果模型能够正常加载并生成文本,同时设备内存、功耗或 IPU 利用率发生变化,说明基础推理链路基本可用。
4.2.3.5 启动 OpenAI 兼容服务
HLIELlama 推荐直接运行 llama-server。新版本不再建议使用 run_llama-server.sh,该脚本后续可能被移除。官方指南同时提供预加载模型、动态加载模型和系统服务三种方式。
查看支持的参数:
./bin/llama-server --help
使用预加载模型方式启动。
仅供当前设备上的 Agent 或客户端访问时,建议服务只监听本机地址。先查看当前版本支持的参数:
./bin/llama-server --help
如果当前版本支持 –host 参数,可以执行:
./bin/llama-server \
-m "$MODEL_PATH" \
-a local-model \
--host 127.0.0.1 \
--port 17701 \
--cache-ram 0
如果当前版本不支持 –host 参数,应以 ./bin/llama-server –help 的实际输出和赛事指定版本的 HLIELlama 使用指南为准。
需要供局域网中的其他设备访问时,应将服务监听地址设置为 0.0.0.0。确认当前
版本支持 –host 参数后,执行:
./bin/llama-server \
-m "$MODEL_PATH" \
-a local-model \
--host 0.0.0.0 \
--port 17701 \
--cache-ram 0
主要参数如下:
参数 |
说明 |
|---|---|
-m |
后摩适配 GGUF 模型路径 |
-a |
模型别名,用于 OpenAI 兼容请求 |
–host 127.0.0.1 |
仅监听本机,只允许当前设备访问 |
–host 0.0.0.0 |
监听所有网络接口,允许局域网设备访问 |
–port 17701 |
服务端口,默认通常为 17701 |
–cache-ram 0 |
关闭会话 Prompt 的 RAM 缓存 |
HLIELlama 默认可能启用 Prompt Cache,用于复用历史 KV Cache、降低多轮对话的首 Token 延迟。长期运行时,缓存可能导致主机内存逐渐增加,因此基础长稳测试建议增加:
--cache-ram 0
如果模型加载阶段因系统内存不足退出,可尝试:
--no-mmap
使用该参数后,模型加载速度可能下降。
4.2.3.6 验证 OpenAI 兼容接口
在模型服务所在设备上查询模型列表:
curl -sS \
http://127.0.0.1:17701/v1/models \
| python3 -m json.tool
如果从局域网中的其他设备验证,应将 127.0.0.1 替换为模型服务所在设备的实际 局域网 IP,例如:
curl -sS \ http://192.168.1.100:17701/v1/models \ | python3 -m json.tool
发送最小文本请求:
curl -sS \
http://127.0.0.1:17701/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "local-model",
"messages": [
{
"role": "user",
"content": "请只回复:后摩本地模型接入成功"
}
],
"stream": false
}' \
| python3 -m json.tool
如果能够正常返回文本,说明:
llama-server 已经启动;
模型已经正确加载;
OpenAI 兼容接口可以访问;
后摩加速卡可以作为本地模型 Provider 使用。
本地服务通常不需要真实 API Key。部分 OpenAI SDK 客户端强制要求填写 api_key 时,可以使用无敏感含义的占位值:
no-key
Python 示例:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:17701/v1",
api_key="no-key",
timeout=60.0,
)
response = client.chat.completions.create(
model="local-model",
messages=[
{
"role": "user",
"content": "请只回复:后摩本地模型接入成功",
}
],
stream=False,
)
content = response.choices[0].message.content
print(content)
安装 Python SDK:
python3 -m venv ~/anyint-venv
source ~/anyint-venv/bin/activate
python3 -m pip install "openai>=1,<2"
4.2.3.7 动态模型管理
如果需要在服务启动后加载和卸载不同模型,可以使用动态模型目录。
启动服务:
./bin/llama-server \
--models-dir "$PWD/models" \
--port 17701 \
--cache-ram 0
列出模型:
./bin/model-cli list
加载模型:
./bin/model-cli run <MODEL_NAME>
查看加载状态:
./bin/model-cli ps
卸载模型:
./bin/model-cli stop <MODEL_NAME>
删除本地模型:
./bin/model-cli rm <MODEL_NAME>
model-cli run 返回通常只表示服务已经接收到加载请求,模型加载需要一定时间,应继续执行:
./bin/model-cli ps
确认模型已经完成加载。
当前版本通常只在 llama-server 启动时扫描 –models-dir。服务启动后新增模型时,应重新启动服务以刷新模型列表。
4.2.3.8 安装为系统服务
开发调试阶段建议直接运行 llama-server,便于查看日志。模型和参数验证完成后,可以安装为后台服务。
安装:
sudo bash service/install_llama-server.sh
查看状态:
sudo systemctl status llama-server.service
启动、停止和重启:
sudo systemctl start llama-server.service
sudo systemctl stop llama-server.service
sudo systemctl restart llama-server.service
查看实时日志:
sudo journalctl \
-u llama-server.service \
-f
卸载服务:
sudo bash service/uninstall_llama-server.sh
安装服务前,应先检查安装脚本中的模型目录、端口、设备和启动参数是否符合当前赛事环境。
4.2.3.9 可选功能
1. 多模态模型
多模态模型通常包含语言主模型和视觉模型:
main-model.gguf
mmproj.gguf
启动:
./bin/llama-server \
-m <MAIN_MODEL_GGUF> \
--mmproj <MMPROJ_GGUF> \
-a local-vlm \
--port 17701 \
--cache-ram 0
主模型和 mmproj 必须来自同一模型版本和同一构建版本。
后摩部分视觉模型采用固定输入分辨率。图片会按照模型要求 Resize 和 Padding。目标检测等任务返回的坐标可能基于处理后的图片,应用端需要根据 Resize 和 Padding 过程映射回原图。
2. Embedding 模型
./bin/llama-server \
-m <EMBEDDING_MODEL_GGUF> \
--embedding \
--pooling last \
-b <CONTEXT_LENGTH> \
-ub <CONTEXT_LENGTH> \
--port 17701
Embedding 模型可用于:
本地知识库;
RAG;
文档向量化;
语义检索;
Agent 长期记忆检索。
3. Rerank 模型
./bin/llama-server \
-m <RERANK_MODEL_GGUF> \
--rerank \
--port 17701
Rerank 模型可对向量检索结果进行重新排序。
4. 并发访问
多用户访问时,可以根据模型类型使用:
--np 2
当前版本通常最大支持 4。只有多 Batch 模型能够实现真正并发,单 Batch 模型通常采用请求交替执行。
应先完成单请求验证,再逐步提高并发数。
5. Qwen 思考模式
不同版本关闭 Qwen 思考模式的参数可能不同:
HLIELlama 版本 |
常见参数 |
|---|---|
2.1.0 之前 |
–reasoning-budget 0 |
2.1.0 |
-rea off |
OpenAI 兼容请求还可通过请求体控制:
{
"chat_template_kwargs": {
"enable_thinking": false
}
}
部分模型支持设置推理等级:
{
"reasoning": {
"effort": "low"
}
}
具体能力应以模型和赛事 HLIELlama 版本为准,基础连通性测试不建议加入这些可选参数。
更多模型转换、多卡调度、投机解码、ASR、OCR、C/C++ 二次开发和底层模型调试方法,参见后摩开发者中心相关文档。
4.2.4 性能测试
4.2.4.1 基础性能测试
HLIELlama 提供 llama-bench 用于模型性能测试。
查看参数:
./bin/llama-bench --help
执行基础测试:
./bin/llama-bench \
-m "$MODEL_PATH" \
-p 512 \
-n 128
其中:
参数 |
说明 |
|---|---|
-m |
模型路径 |
-p 512 |
Prompt/Prefill 测试输入 512 Token |
-n 128 |
Decode 测试生成 128 Token |
如果赛事指定版本的参数格式不同,应以:
./bin/llama-bench --help
为准。
4.2.4.2 观察设备状态
性能测试期间,在另一个终端执行:
watch -n 1 hm_smi -a
重点观察:
IPU 利用率;
Core 利用率;
设备内存;
板卡功耗;
芯片和内存温度;
PCIe 链路状态。
如果模型有输出但 IPU 利用率、设备内存和功耗始终没有变化,应检查模型是否实际使用后摩设备。
4.2.4.3 记录性能指标
建议记录:
指标 |
说明 |
|---|---|
Prefill 速度 |
输入 Token 处理速度 |
Decode 速度 |
输出 Token 生成速度 |
TTFT |
首 Token 延迟 |
TOPT |
相邻输出 Token 的时间间隔 |
E2E Latency |
端到端响应时间 |
E2E TPS |
端到端整体吞吐 |
Vision 时间 |
多模态模型的图片编码耗时 |
设备内存 |
模型加载和推理内存占用 |
主机内存 |
模型服务占用的系统内存 |
IPU 利用率 |
推理期间的加速卡负载 |
温度 |
芯片和设备内存温度 |
功耗 |
板卡运行功耗 |
HLIELlama 默认启用 Prompt Cache 时,Prefill 统计可能排除已经复用的历史前缀。正式对比时,应保证两次测试采用相同的 Cache 配置;需要观察完整 Prefill 时,可根据当前版本帮助关闭 Prompt Cache。官方指南将 TTFT、TOPT、E2E Latency、E2E TPS、Prefill 和 Decode 作为主要统计指标。
4.2.4.4 测试要求
不同配置的性能结果不能直接比较。正式测试时应保持以下条件一致:
板卡型号和内存容量;
驱动、固件和大道 Runtime 版本;
HLIELlama 版本;
模型名称和模型 BUILD;
模型量化方式;
上下文长度;
Prompt Token 数;
生成 Token 数;
Batch 和并发数;
Prompt Cache 配置;
多模态图片尺寸;
后台系统负载;
散热和环境温度。
建议模型启动后先完成一次预热,再连续执行多次测试,记录稳定结果。性能数据只用于当前硬件和软件环境下的对比,不作为不同模型、不同设备和不同版本之间的统一结论。
4.2.4.5 基础验收条件
同时满足以下条件,可认为后摩推理链路基本跑通:
lspci 能够识别 1f6b:0c00;
hm_smi -a 能够显示设备状态;
llama-server –list-devices 能够识别 HoumoNPU;
后摩适配 GGUF 模型能够加载;
llama-cli 或 llama-server 能够生成有效结果;
OpenAI 兼容接口能够正常返回;
推理期间设备内存、功耗或 IPU 利用率发生变化;
日志中没有模型加载失败或完全回退至 CPU 的异常;
多次请求能够稳定完成;
4.2.5 常见问题
问题现象 |
处理建议 |
|---|---|
lspci 找不到 1f6b:0c00 |
检查板卡安装、供电、散热、BIOS 和 PCIe 通道,不继续安装驱动 |
lspci 正常但 hm_smi 不存在 |
检查是否安装驱动并使用了 install all |
hm_smi 能执行但无设备 |
检查驱动、固件和 PCIe 状态,按照要求重启设备 |
驱动包无法执行 |
检查执行权限和 CPU 架构,确认使用 AArch64 包 |
驱动提示架构不匹配 |
误用了 x86_64、AMD64、Windows 或 M30 软件包 |
驱动依赖下载失败 |
检查网络、DNS 和 pip 源,或使用赛事提供的离线依赖 |
驱动目录已存在 |
先使用旧版本安装包执行 uninstall all |
驱动安装被中断 |
不要直接重复覆盖安装,先联系赛事技术支持确认残留状态 |
Debian 12 安装失败 |
使用赛事验证的驱动包,不要自行更换其他发行版驱动反复尝试 |
驱动与固件不匹配 |
联系后摩或赛事维护人员,不要自行刷写固件 |
HLIELlama 无法启动 |
检查是否下载了 M50、xh2、ARM Linux 版本 |
file bin/llama-server 显示 x86-64 |
下载了错误 CPU 架构的软件包 |
提示动态库缺失 |
使用 ldd 检查,必要时临时设置 LD_LIBRARY_PATH |
–list-devices 找不到 NPU |
检查 hm_smi、SDK 环境变量和动态库 |
model-cli query 失败 |
检查网络和后摩模型服务访问状态 |
模型下载失败 |
检查网络、磁盘空间和模型访问权限 |
模型加载失败 |
检查 BUILD、TARGET、DEVICE 和 HLIELlama 版本 |
单卡设备加载了双卡模型 |
重新选择 DEVICE=1 的模型 |
普通 GGUF 无法运行 |
使用后摩已经适配并发布的 GGUF 模型 |
多文件模型无法加载 |
按模型说明指定主文件或第一个 GGUF 分片 |
新下载模型未出现在动态列表 |
重启 llama-server,重新扫描 –models-dir |
model-cli run 后模型不可用 |
使用 model-cli ps 检查是否仍在加载 |
OpenAI 接口返回 404 |
检查服务端口、接口路径和 llama-server 状态 |
服务可以输出但 NPU 无负载 |
检查模型是否使用后摩适配版本,以及是否发生 CPU 回退 |
运行一段时间后内存增长 |
启动服务时增加 –cache-ram 0 |
模型加载阶段内存不足 |
使用更小模型,或尝试增加 –no-mmap |
多并发效果不明显 |
检查模型是否为多 Batch 模型 |
提高 –np 后内存不足 |
降低并发数,使用更小上下文或更小模型 |
多模态模型只能文本对话 |
检查主模型、mmproj、图片输入和模型版本 |
多模态结果与图片无关 |
检查图片是否成功读取,主模型和视觉模型是否匹配 |
检测框位置不准确 |
检查图片 Resize、Padding 和坐标映射 |
Qwen 无法关闭思考模式 |
根据 HLIELlama 版本选择对应参数 |
llama-bench 执行失败 |
检查模型和 HLIELlama 版本,优先使用赛事验证版本 |
性能结果波动较大 |
固定模型、参数、Cache、并发、温度和系统负载 |
温度或功耗异常 |
立即停止压力任务并联系赛事维护人员 |
后摩开发者社区:
后摩资源中心:
后摩文档中心:
HLIELlama、HLIECpp、HLIEPython 和 HLIEvLLM 的完整模型支持范围、多芯调度、投机解码、模型转换、C/C++ API 和深度性能调优方法,以后摩官方部署及使用指南为准。