Laya 部署
介绍
Laya 是多语言、非自回归的 System 1 决策模型。只需输入状态信息(文本、电子邮件、工单或 JSON)以及类型化问题;模型即可在单次前向传播中(耗时约 33 毫秒)返回经过数学校准且附带概率分布的类型化答案,原生支持 100 多种语言。
模型采用严格适当评分规则(Strictly Proper Scoring Rules)通过强化学习(RLCD)训练而成,因此输出真实准确的概率是模型获取最大化奖励的唯一途径。该模型绝不生成自由文本,从而完全消除了文本解析的开销以及幻觉产生的可能。
本章节将演示如何在边缘设备上完成 laya 部署、加载与识别流程。提供以下方式部署:
- AidLite Python API
在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
- Rhino Pi-X1 硬件
- 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 sdkQNN & 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