高通® AI Hub 模型
高通® AI Hub 模型是一系列针对性能(延迟、内存等)进行了优化并可在高通®设备上部署的最先进机器学习模型集合。
- 探索针对设备上部署的视觉、语音、文本和生成式 AI 优化模型。
- 查看量化、优化和在设备上部署这些模型的开源方案。
- 浏览在多种设备上捕获的这些模型的性能指标。
- 通过Hugging Face访问这些模型。
- 查看用于在设备上部署 AI Hub 模型的示例应用。
- 注册以在托管的高通®设备上运行这些模型。
支持的python 包主机操作系统:
- Linux (x86, ARM)
- Windows (x86)
- Windows (ARM -- 仅通过 x86 Python,不支持 ARM Python)
- MacOS (x86, ARM)
支持的运行时
模型可以部署在:
- Android
- Windows
- Linux
支持的计算单元
- CPU, GPU, NPU (包括 Hexagon DSP, HTP)
支持的精度
- 浮点:FP16
- 整数:INT8 (8位权重和激活,部分模型), INT4 (4位权重,16位激活,部分模型)
支持的芯片组
部分支持的设备
- 三星 Galaxy S21 系列, Galaxy S22 系列, Galaxy S23 系列, Galaxy S24 系列
- 小米 12, 13
- Google Pixel 3, 4, 5
- 骁龙 X Elite CRD (计算参考设备)
以及更多其他设备。
安装
我们目前支持 Python >=3.8 且 <= 3.10。 我们建议使用 Python 虚拟环境(miniconda 或 virtualenv)。
您可以使用以下命令设置虚拟环境:
python -m venv qai_hub_models_env && source qai_hub_models_env/bin/activate
环境设置完成后,您可以使用以下命令安装基础包:
pip install qai_hub_models
某些模型(例如 YOLOv7)需要额外的依赖项。您可以使用以下命令自动安装这些依赖项:
pip install "qai_hub_models[yolov7]"
入门
每个模型都带有以下一组 CLI 演示:
- 可在本地运行的基于 PyTorch 的 CLI 演示,用于验证设备外的模型。
- 设备上 CLI 演示,生成可在设备上部署的模型,并在托管的高通®设备上运行模型(需要注册)。
这些演示生成的所有模型都可以在 Hugging Face 或通过我们的网站免费获得。有关更多详细信息,请参阅各个模型的自述文件(例如 YOLOv7)。
使用 PyTorch 的本地 CLI 演示
所有模型都包含 CLI 演示,可在本地使用示例输入运行 PyTorch 模型。演示针对代码清晰度而不是延迟进行了优化,并且仅在 PyTorch 中运行。可以通过高通® AI Hub的模型导出实现最佳模型延迟。
python -m qai_hub_models.models.yolov7.demo
有关如何使用演示 CLI 的其他详细信息,请使用 --help
选项
python -m qai_hub_models.models.yolov7.demo --help
请参阅下面的模型目录以探索所有其他模型。
请注意,大多数 ML 用例需要一些预处理和后处理,这些处理不是模型本身的一部分。每个模型的 app.py
中都提供了这些处理的 Python 参考实现。应用程序加载和预处理模型输入,运行模型推理,并在将结果返回给您之前对模型输出进行后处理。
以下是 PyTorch CLI 如何用于 YOLOv7 的示例:
from PIL import Image
from qai_hub_models.models.yolov7 import Model as YOLOv7Model
from qai_hub_models.models.yolov7 import App as YOLOv7App
from qai_hub_models.utils.asset_loaders import load_image
from qai_hub_models.models.yolov7.demo import IMAGE_ADDRESS
# 加载预训练模型
torch_model = YOLOv7Model.from_pretrained()
# 加载简单的基于 PyTorch 的应用程序
app = YOLOv7App(torch_model)
image = load_image(IMAGE_ADDRESS, "yolov7")
# 对示例图像执行预测
pred_image = app.predict(image)[0]
Image.fromarray(pred_image).show()
在托管的高通®设备上运行的 CLI 演示
一些模型包含 CLI 演示,可使用高通® AI Hub在托管的高通®设备上运行模型。
要在托管设备上运行模型,请注册以访问高通® AI Hub。使用您的高通® ID 登录高通® AI Hub。登录后,导航到 Account -> Settings -> API Token。
使用此 API 令牌,您可以配置客户端以在云托管设备上运行模型。
qai-hub configure --api_token API_TOKEN
导航到文档以获取更多信息。
设备上的 CLI 演示执行以下操作:
- 导出模型以在设备上执行。
- 在云托管的高通®设备上对模型进行分析。
- 在云托管的高通®设备上运行模型,并比较本地基于 CPU 的 PyTorch 运行和设备上运行之间的准确性。
- 下载可以在 Android 应用程序中部署在设备上的模型(和其他必需资产)。
python -m qai_hub_models.models.yolov7.export
许多模型可能具有允许加载自定义权重和检查点的初始化参数。有关更多详细信息,请参阅 --help
python -m qai_hub_models.models.yolov7.export --help
这个导出脚本是如何工作的?
如上所述,上述脚本在云托管的高通®设备上编译、优化和运行模型。该演示使用高通® AI Hub 的 Python API。
以下是可用于在云托管设备上运行整个模型的简化代码示例:
from typing import Tuple
import torch
import qai_hub as hub
from qai_hub_models.models.yolov7 import Model as YOLOv7Model
# 在 PyTorch 中加载 YOLOv7
torch_model = YOLOv7Model.from_pretrained()
torch_model.eval()
# 使用提供的示例输入中的一个数据点跟踪 PyTorch 模型以跟踪模型。
example_input = [torch.tensor(data[0]) for name, data in torch_model.sample_inputs().items()]
pt_model = torch.jit.trace(torch_model, example_input)
# 选择设备
device = hub.Device("Samsung Galaxy S23")
# 为特定设备编译模型
compile_job = hub.submit_compile_job(
model=pt_model,
device=device,
input_specs=torch_model.get_input_spec(),
)
# 获取要在云托管设备上运行的目标模型
target_model = compile_job.get_target_model()
# 在云托管设备上分析先前编译的模型
profile_job = hub.submit_profile_job(
model=target_model,
device=device,
)
# 在云托管设备上执行设备上推理
input_data = torch_model.sample_inputs()
inference_job = hub.submit_inference_job(
model=target_model,
device=device,
inputs=input_data,
)
# 返回输出为 dict{name: numpy}
on_device_output = inference_job.download_output_data()
使用源代码
您可以使用以下命令克隆存储库:
git clone https://github.com/quic/ai-hub-models/blob/main
cd main
pip install -e .
在使用以下内容之前,安装额外的依赖项以准备模型:
cd main
pip install -e ".[yolov7]"
所有模型在适用时都有准确性和端到端测试。这些测试旨在在本地运行,并验证PyTorch代码产生正确的结果。要运行模型的测试:
python -m pytest --pyargs qai_hub_models.models.yolov7.test
如有任何问题,请通过ai-hub-support@qti.qualcomm.com与我们联系。
许可证
Qualcomm® AI Hub模型采用BSD-3许可。请参阅LICENSE文件。
模型目录
计算机视觉
音频
多模态
模型 | README | Torch 应用 | 设备导出 | CLI 演示 |
---|---|---|---|---|
TrOCR | qai_hub_models.models.trocr | ✔️ | ✔️ | ✔️ |
OpenAI-Clip | qai_hub_models.models.openai_clip | ✔️ | ✔️ | ✔️ |