高通 AI Hub 上手指南

news2024/11/19 21:17:18

文章介绍

         2月26日,高通在2024年世界移动通信大会(MWC2024)上发布高通AI Hub, AI Hub 简化了AI 模型部署到边缘设备的过程。可以利用AI-hub云端托管 Qualcomm 设备上,在几分钟内完成模型的优化、验证和部署。本文以Pytorch版本的MobileNet模型为例子,介绍如何使用AI Hub。

更多关于Qualcomm AI Hub的入门指南,可以参考文档 Getting started — qai-hub documentation

第一步. 安装环境

建议使用Miniconda来管理您的python版本和环境。

Installing Miniconda — Anaconda documentation

1. Python环境

在您的机器上安装miniconda。

Windows:安装完成后,从「开始」菜单打开Anaconda Prompt。

macOS/Linux:安装完成后,打开一个新的shell窗口。

为Qualcomm AI Hub设置一个环境:

conda create python=3.8 -n qai_hub

conda activate qai_hub

2. 安装qai-hub客户端

pip3 install qai-hub

3. 登录

登陆到 Qualcomm AI Hub

Home - Qualcomm AI Hub

使用您的高通ID登录,登录后导航Account -> Settings -> API Token。生成API token后进入下一步配置您的客户端。

4. 配置API Token

接下来,在终端中使用以下命令使用API令牌配置客户端:

qai-hub configure --api_token INSERT_API_TOKEN

INSERT_API_TOKEN 是你在第3步中生成的token

您可以通过获取可用设备的列表来检查API令牌是否正确安装。为此,您可以在Python终端中键入以下内容:

import qai_hub as hub

hub.get_devices()

第二步. 模型编译部署(PyTorch)

设置好Qualcomm AI Hub环境后,我们演示如何模型给到AI-hub托管的云端设备,完成模型的编译与优化。

首先,安装此示例的依赖项:

pip3 install "qai-hub[torch]"

注意:如果任何代码段因API身份验证错误而失败,则表示您没有安装有效的API Token。请参阅安装说明以了解如何设置。

如果任何代码段因SSL:CERTIFICATE_VERIFY_FAILED错误而失败,则安装了SSL拦截和流量检查工具。请向您的IT部门咨询如何为Python pip和Python请求库设置证书的说明。

提交MobileNet v2网络的性能分析:

from typing import Tuple

import torch

import torchvision

import qai_hub as hub

# Using pre-trained MobileNet

torch_model = torchvision.models.mobilenet_v2(pretrained=True)

torch_model.eval()

# Trace model

input_shape: Tuple[int, ...] = (1, 3, 224, 224)

example_input = torch.rand(input_shape)

pt_model = torch.jit.trace(torch_model, example_input)

# Profile model on a specific device

compile_job, profile_job = hub.submit_compile_and_profile_jobs(

    pt_model,

    name="MyMobileNet",

    device=hub.Device("Samsung Galaxy S23 Ultra"),

    input_specs=dict(image=input_shape),

)

这将提交一个编译工作,然后提交一个分析工作,打印这两个工作的URL。可以在

https://app.aihub.qualcomm.com/jobs/ 上查看您的所有作业的结果。

也可以通过编程方式查询工作的状态:

status = profile_job.get_status()

print(status)

您可以使用下面的代码段访问工作的结果。主要有三个部分

Profile:JSON格式的概要文件的结果。

Target Model:已优化的模型可供部署。

Results:包含所有工件(包括日志)的文件夹。

请注意,这些正在阻止等待工作完成的API调用:

#将配置文件结果下载为JSON(blocking call)

profile = profile_job.download_profile()

print(profile)

#下载优化模型(blocking call)

model = profile_job.model.download()

print(model)

#将结果下载到当前目录(blocking call)

profile_job.download_results(".")

 作者:高通工程师,戴忠忠(Zhongzhong Dai)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录 网络协议如何分层 引入 osi模型 tcp/ip模型 引入 命名由来 介绍 物理层 数据链路层 网络层 传输层 应用层 中间设备 网络协议如何分层 引入 我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层 常见的网络协议分层模型是OSI模型 和 …

JavaEE:多线程(3):案例代码

多线程基础知识要点 案例一:单例模式 是一种设计模式 软件设计需要框架,这是硬性的规定;设计模式是软性的规定。遵循好设计模式,代码的下限就被兜住了 单例 单个实例(对象) 某个类在一个进程中只应该创…

【mysql】1812 - Tablespace is missing for table `job`.`xxl_job_log`.

打开表提示: 1812 - Tablespace is missing for table job.xxl_job_log. 1812-表“job”缺少表空间xxl_job_log。 尝试删除表重建表 DROP TABLE IF EXISTS job.xxl_job_log; 提示: 1051 - Unknown table job.xxl_job_log 1051-未知表“job.xxl_job_lo…

基于springboot实现二次元商品购物系统项目【项目源码+论文说明】

基于springboot实现二次元商品购物系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xff0…

网站三合一缩略图片介绍展示源码

网站三合一缩略图片介绍展示源码,PHP源码,运行需要php环境支持,效果截图如下 蓝奏云下载:https://wfr.lanzout.com/ihY8y1pgim6j

pytorch 图像的卷积操作

目录 1.卷积核基本参数说明 2.卷积相关操作说明 3.卷积操作示例 1.卷积核基本参数说明 pytorch进行图像卷积操作之前,需要把图像素格式进行分离,比如一个图像为rgb格式,把R,G,B取出来作为一个ndarray,前文讲过&#…

kafka消费者接收不到消息

背景: 对kafka消息进行监听,生产者发了消息,但是消费端没有接到消息,监听代码 消费端,kafka配置 spring.kafka.bootstrap-serverskafka.cestc.dmp:9591 spring.kafka.properties.sasl.jaas.configorg.apache.kafka.…

Modern C++ std::any的实现原理

1. 前言 std::any 是 C17 中引入的一个新特性,它是一个类型安全的容器,可以在其中存储任何类型(但此类型必须可拷贝构造)的值,包括基本类型、自定义类型、指针等。相比于void* 指针,std::any 更为类型安全,可以避免由…

级联选择el-cascader 动态加载后台数据,出现箭头和需要双击才能选中的问题

最近做项目遇到一个问题,就是用饿了么UI的级联选择器el-cascader 的时候,第三级出现了箭头,而且需要连续点击两次第三级才可以选中第三级的项,如下图: 由于数据量较大,我们用了懒加载,就是用户选中了第一级后,我会拿第一级的id,也就是第二级的父id去发请求,获取到第二…

【C语言】数据存储篇,内存中的数据存储----C语言整型,浮点数的数据在内存中的存储以及大小端字节序【图文详解】

欢迎来CILMY23的博客喔,本篇为​【C语言】数据存储篇,内存中的数据存储----C语言整型,浮点数的数据在内存中的存储以及大小端字节序【图文详解】,感谢观看,支持的可以给个一键三连,点赞关注收藏。 前言 C语…

Android Activity启动模式

文章目录 Android Activity启动模式概述四种启动模式Intent标记二者区别 Android Activity启动模式 概述 Activity 的管理方式是任务栈。栈是先进后出的结构。 四种启动模式 启动模式说明适用场景standard标准模式默认模式,每次启动Activity都会创建一个新的Act…

Qt CMake 国际化相关配置

文章目录 本来用qmake使用pro文件很简单的一件事,结果用cmake折腾了半天。 何必呢~ 参考:QT6.3 CMake 多语言切换 这是我的 cmake_minimum_required(VERSION 3.16)project(testQml3_6 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTOMOC ON) set(CMAKE_CXX…

MySQL 篇-深入了解 DML、DQL 语言(二)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 DML、DQL 语言说明 2.0 使用 DML 实现对数据管理和操作 2.1 DML - 增添数据 insert 2.2 DML - 修改数据 update 2.3 DML - 删除数据 delete 3.0 使用 DQL 实现对…

docker 容器修改端口和目录映射

一、容器修改端口映射 一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]…

【EFK】基于K8S构建EFK+logstash+kafka日志平台

基于K8S构建EFKlogstashkafka日志平台 一、常见日志收集方案1.1、EFK1.2、ELK Stack1.3、ELK filbeat1.4、其他方案 二、EFK组件介绍2.1、Elasticsearch组件2.2、Filebeat组件【1】 Filebeat和beat关系【2】Filebeat是什么【3】Filebeat工作原理【4】传输方案 2.3、Logstash组件…

麒麟银河操作系统V10部署ffmpeg

麒麟银河操作系统V10部署ffmpeg 部署ffmpeg用来处理视频的各种操作 想使用ffmpeg,要先安装nasm,yasm,x264之后,否则会报错 nkvers 查看麒麟操作系统版本 cat /proc/version #查看linux版本信息 uname -a #查看linux版本和内核…

高分影像RPC校正工具使用步骤

高分影像准备 注意事项: 直接使用解压包,外部高分文件夹也要留存 文件夹内部不要有动作,就解压后的原始这些文件 最好不要有中文路径 xml中参数路径 入参包含三个,影像TIFF、影像RPB(解压后自带)、DEM&am…

电容元件及其特性

电容元件 电容器:由两块金属导体极板,中间间隔以不同的物质(如云母、绝缘纸、空气等)组成。 当在两极板之间加上电压后,两极板上分别聚集等量的正、负电荷,并在介质中建立电场且具有电场能量。 将电源移开后,电荷继续…

Java面向对象之接口和抽象类的区别一目了然

介绍 相信对于Java面向对象部分,很多人很长一段时间对于接口和抽象类的区别,使用场景都不是很熟悉,同是作为抽象层重要的对象,工作中到底什么情况下使用抽象类,不是很清楚。本文就一次性把这些概念一次性说清楚&#x…

Linux下性能分析的可视化图表工具

1 sar 和sadf 1.1 简介 sar命令可以记录系统下的常见活动信息,例如CPU使用率、网络统计数据、Block I/O数据、内存使用情况 等。 sar命令的“-o [file_name]”参数可以将系统活动数据记录到file_name文件,然后通过sadf来解析,sadf命令的“-g…