Skip to content

Laya 部署 ​

介绍 ​

Laya 是多语言、非自回归的 System 1 决策模型。只需输入状态信息(文本、电子邮件、工单或 JSON)以及类型化问题;模型即可在单次前向传播中(耗时约 33 毫秒)返回经过数学校准且附带概率分布的类型化答案,原生支持 100 多种语言。

模型采用严格适当评分规则(Strictly Proper Scoring Rules)通过强化学习(RLCD)训练而成,因此输出真实准确的概率是模型获取最大化奖励的唯一途径。该模型绝不生成自由文本,从而完全消除了文本解析的开销以及幻觉产生的可能。

本章节将演示如何在边缘设备上完成 laya 部署、加载与识别流程。提供以下方式部署:

  • AidLite Python API

在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。

  • 设备:Rhino Pi-X1
  • 系统:Ubuntu 22.04
  • 源模型:laya
  • 量化模型精度:INT8 量化
  • Model Farm 模型参考:laya

支持平台 ​

平台运行方式
Rhino Pi-X1Ubuntu 22.04, AidLux

准备工作 ​

  1. Rhino Pi-X1 硬件
  2. Ubuntu 22.04 系统或 AidLux 系统

下载 laya-FP16 模型资源 ​

bash
mms list laya

#------------------------可以看到 laya 模型------------------------
Model  Precision  Chipset  SOC               Backend
-----  ---------  -------  ----------------  -------
laya   FP16       qcs8550  Qualcomm QCS8550  QNN2.48


# 下载 laya FP16
mms get -m laya -p fp16 -c qcs8550 -b qnn2.48 -d /home/aidlux/laya
cd /home/aidlux/laya
# 解压
unzip laya_qcs8550_fp16.zip

💡注意

开发者也可以在 Model Farm 网页上搜索并下载

AidLite SDK 安装 ​

开发者也可以参考模型文件夹中的 README.md 安装 SDK

  • 确保 QNN 后端版本 ≥ 2.48
  • 确保 aidlite-sdk 和 aidlite-qnnxxx 的版本是 2.5.x
bash
# AidLite & QNN 版本检查
dpkg -l | grep aidlite
#------------------------ 可以看到类似如下输出 ------------------------
ii  aidlite-qnn248       2.5.0.284         arm64        aidlux aidlite qnn248 backend plugin
ii  aidlite-sdk          2.5.0.284         arm64        aidlux inference module sdk

QNN & AidLite 版本更新

bash
# 安装 AidLite SDK
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
sudo aid-pkg install aidlite-qnn48

# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"

AidLite Python API 部署 ​

运行 Python API 例子

bash
cd /home/aidlux/laya/

# 安装依赖
pip3 install -r code/python/requirements.txt

python3 code/python/run_test.py \
  --encoder_model ./models/QCS8550/FP16/Encoder.serialized.bin.aidem \
  --head_model ./models/QCS8550/FP16/Head_k16.serialized.bin.aidem \
  --question ./code/python/assets/question.json \
  --input ./code/python/assets/sample.jsonl --index 0 \
  --invoke_nums 10

可以在命令行看到模型推理耗时 (单位 ms)以及推理结果:

plain
====================================
Encoder.serialized.bin.aidem
QNN invoke 10 times:
 --mean_invoke_time is 81.78284168243408
 --max_invoke_time is 82.71455764770508
 --min_invoke_time is 81.55393600463867
 --var_invoketime is 0.10294212927419721
====================================
====================================
Head_k16.serialized.bin.aidem
QNN invoke 10 times:
 --mean_invoke_time is 4.773068428039551
 --max_invoke_time is 6.082057952880859
 --min_invoke_time is 4.555463790893555
 --var_invoketime is 0.1934741140985352
====================================
===================
Text: Fears for T N pension after talks Unions representing workers at Turner   Newall say they are 'disappointed' after talks with stricken parent firm Federal Mogul.
Sequence length: 98  markers: [14, 23, 33, 43]
0 logit= -3.3281 prob=0.017267  World: international news, politics, conflict
1 logit= -4.0039 prob=0.011762  Sports: games, athletes, matches, tournaments
2 logit=  3.7031 prob=0.937741  Business: companies, markets, economy, finance
3 logit= -2.1758 prob=0.033231  Sci/Tech: science, technology, computing, research
Answer: 2 (Business: companies, markets, economy, finance)
Confidence: 0.786663  act_probability: 1.000000
Result saved to ./code/python/result.json