开发者实战 | Intel® Developer Cloud 之 Telemetry 数据分析 (二)

文章介绍了如何在IntelDeveloperCloud中使用Telemetry功能来收集和分析AI模型的性能数据,特别是通过OpenVINO工具套件进行模型优化后的遥测指标。流程包括导入模型、创建IR文件、启用遥测和监控作业。通过示例展示了在object-detection-python应用中集成Telemetry的方法,强调了发送推理时间和应用指标的函数。文章还提供了访问Telemetry数据的步骤,并鼓励读者尝试集成和利用Telemetry优化自己的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击蓝字

关注我们,让开发变得更有趣

以下文章来源于英特尔物联网,作者尹参军

01

Telemetry 介绍

上一篇文章中介绍了 Intel® Developer Cloud Telemetry 的概念和功能,通过该功能的数据分析,可以更好地优化产品方案。有关 Telemetry 的工作原理和集成方法,我将在这篇文章里细细解释。耐心看下去,相信您肯定可以在自己应用中开启这个功能。

02

Telemetry 收集流程

48d1c6448b7f984a1cb86b0950101648.png

图 1-2 Telemetry收集数据流程

概括来说,对自定义 AI 模型上运行模型优化,由 OpenVINO™ 工具套件进行推理,完成对 AI 模型的推理后,您就可以获得计算节点上可用的遥测指标。具体步骤如下:

1

导入所有自定义模型文件(tensorflow、kaldi、onnx 等)

2

使用模型优化器以必要的精度创建模型中间表示(IR)文件

3

创建用于在计算节点上提交运行推理的作业文件(.sh)

4

使用 Application Metrics Writer 启用遥测

5

为不同的计算节点提交作业并监控作业状态直到完成(提交作业会调用 bash 和自定义 python 文件)

6

在遥测仪表板上显示模型指标

注意:流程里不止包含 Telemetry 。而是 AI 应用在 DevCloud 上运行的流程,以便您可以了解 Telemetry 功能在应用里的位置。

参考:

https://www.embedded.com/enabling-telemetry-for-custom-models-in-intel-devcloud-for-the-edge/ 

03

Telemetry 集成

这次依然选择 object-detection-python 实例来介绍集成方法,应用程序的 python 代码中调用了 applicationMetricWriter 模块向 Telemetry 传递数据指标如,帧率、推理时间、模型名称、推理硬件信息,下面通过具体代码来展示详细信息。

Step.1

登录 Jupyter Lab

登录 Intel® Developer Cloud 主页后,点击“Bare Metal Deployment” 的 “Get Started” 按钮,进入 Jupyter Lab 开发环境。在左侧目录导航栏选择这个路径:

Reference-samples/iot-devcloud/openvino-dev-latest/developer-samples/python/

然后找到 object-detection-python 应用。

Step.2

程序源码分析

直接打开 object_detection.py ,可以看到在文件开头部分导入了 applicationMetricWriter 模块。我们可以在 Jupyter notebook 里直接查看它的函数。方法如下:

4fd89d5e58e70ee6bc5e4e7b6c0a6102.png

可以看到它只有两个函数,使用起来非常的简单,我们来逐一介绍一下这两个函数。send_inference_time() 用来向 Telemetry  数据发送每一帧推送所消耗的时间,唯一要注意的是每一帧哦。这就要求你能区分每一帧推理的时间。如果你选择 async 模式,就需要考虑是不是适用了。  send_application_metrics 主要传递的是模型的名字和推理设备的名字,以便于你能更好地标记这个任务。

看到这里,估计你的想法与我刚开始的一样,怎么没有看到上传 CPU, GPU, Thermal 等数据上传呢?其实是因为这些数据都是通用的,这块就没有必要放在用户侧来每次都重复写一遍,在后端直接默认做了。从这里我们可以看到,最重要的数据还是推理时间的上传。

现在这两个函数在程序里的调用时机,这里我注释了没有必要的代码,以方便观察。

#!/usr/bin/env python
import applicationMetricWriter
...
def main():
    ...
    try:
        infer_time_start = time.time()
        with open(processed_vid, "rb") as data:
            while frame_count < video_len:
                byte = data.read(CHUNKSIZE)
                if not byte == b"":
                    deserialized_bytes = np.frombuffer(byte, dtype=np.uint8)
                    in_frame = np.reshape(deserialized_bytes, newshape=(n, c, h, w))
                    inf_time = time.time()
                    exec_net.start_async(request_id=current_inference,inputs={input_blob: in_frame})
                # Retrieve the output of an earlier inference request
                if previous_inference >= 0:
                    status = infer_requests[previous_inference].wait()
                    if status is not 0:
                        raise Exception("Infer request not completed successfully")
                    det_time = time.time() - inf_time
                    applicationMetricWriter.send_inference_time(det_time*1000)          
                    res = output_postprocessor(exec_net.requests[previous_inference].output_blobs)
                    processBoxes(frame_count, res, labels_map, args.prob_threshold, width, height, result_file)
                    frame_count += 1
     …
    applicationMetricWriter.send_application_metrics(model_xml, args.device)

向右滑动查看完整代码

step.3

Telemetry 数据访问

等应用程序在边缘节点运行结束,我们就可以去查看 Telemetry 的数据了。数据的连接您可以参考这个object-detection-python 里的方法,直接点击下图中框① Telemetry 按键获取连接方式。

81bb6c35430ca982021911e7447b4c6a.png

当然您也可以自己手动生成这样一个连接,注意上图中框②处的 ID 号。使用 Telemetry 服务器地址拼接该 ID 号,即可访问该数据。

https://devcloud.intel.com/edge/metrics/d/ + ID

比如:https://devcloud.intel.com/edge/metrics/d/573403

访问该路径即可获取 Telemetry 的数据了。

079d6125879318367cfd8322eedc4938.png

03

总结

看到这相信您一定理解了 Intel® Developer Cloud Telemetry 的集成方法了,它并没有我们想象的那么复杂。我这里总结出来,只是为了方便刚开始接触这块的您更快上手,不用花费太多精力就可以更快的把事情搞定。如果您在使用过程中有碰到问题,期待一起交流。

12c0aa320900c2f336ae6084c10e8179.gif

互动

有礼

Hi 各位英特尔物联网的新老粉丝

感谢关注与支持!

我们准备了互动活动 + 丰厚礼品!

速速扫描下方二维码来参加吧!

--END--

你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发者实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC

➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理➡️ 图片提取文字很神奇?试试三步实现OCR!➡️【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务➡️使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2023.0

点击 阅读原文 立即体验OpenVINO 2023.0

e322c786e5b4040882be2256d4fd5fb2.png

文章这么精彩,你有没有“在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值