Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
ONNXRuntime,深度学习领域的神经网络模型推理框架,从名字中可以看出它和 ONNX 的关系:以 ONNX 模型作为中间表达(IR)的运行时(Runtime)。

本文许多内容翻译于官方文档:https://onnxruntime.ai/docs/reference/high-level-design.html ,并适当地添加一些自己的理解,由于对ONNXRuntime的认识还不够深入,因此可能会存在一些错误,希望多多指正,深入交流。

特色:

  1. 在不同平台上,最大限度地、自动地使用定制的加速器(accelerators)和运行时(runtimes);
  2. 针对定制的加速器和运行时,提供良好的抽象和运行时(onnxruntime)来支持运行,这里的抽象也被称之为EP(Execution Provider,eg. CUDA、TensorRT、OpenVINO、ROCm等)。每个EP都各自定义自己的功能,比如内存分配、可以执行的单个的或融合的节点(注意:本文中所说的节点就是算子,两者等同;conv属于单个的算子,conv_bn_relu属于融合的算子),这些功能需要以标准的API形式暴露给 ONNXRuntime,以供其调用;
  3. ONNXRuntime并不要求每个EP都完全支持ONNX中定义的所有算子,这也就意味着 ONNXRuntime 可能需要在异构环境中才能完整的执行完一个模型,这里的异构环境是指涉及到多个计算硬件,比如CPU和GPU;
  4. 支持多种图优化(Graph Optimization),主要分为两类:
  • 全局变换(Global transformations):这种优化方式需要对整张计算图进行分析并优化;在源码中,每种变换都继承自 GraphTransformer 类;
  • 局部变换(Local transformations):这种优化方式相当于定义一些简单的重写规则(rewriting rules),比如消除一些没有具体操作的图节点(eg.推理阶段的dropout节点);与全局变换不同,重写规则一般只针对图中的部分节点,也就是说需要先判断图中的节点是否满足重写条件,然后再决定是否实施变换;在源码中,每种重写规则都继承自 RewriteRule 类,但是最后会使用 GraphTransformer 的一个派生类 RuleBasedGraphTransformer ,将所有的 RewriteRule 类聚合起来。

从更高视野看ONNXRuntime系统结构

从这张图中,我们可以看出ONNXRuntime的执行流程。

  1. ONNXRuntime 首先将 ONNX 模型转变为 In-memory 形式;
  2. 针对这个模型执行一些与EP无关的优化;
  3. 根据设置的EP(可能会有多个),将整体计算图分割成多个子图;
  4. 每个子图都被分配到一个相应的EP中,分配过程中要确保这个EP能够执行该子图;

由于很多EP都会对一些特定的算子做特殊优化,因此在分割子图时,ONNXRuntime希望充分利用这些EP的能力,但是仍然会存在一些算子不能被EP执行,或者高效执行,这时就需要设定一个默认的EP进行兜底,这个角色往往由CPU承担。

计算图分割的策略:首先设置可用的EP,比如

ort_sess = ort.InferenceSession('onnx\_model/resnet50.onnx', providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])

然后依照providers中设定的顺序为每个EP充分分配其可以执行的子图,为了确保每个子图都被执行,一般会讲CPU EP放置在最后。ONNXRuntime当前只支持同步的运行模式,并且由其控制整个计算图的运行。

【推理引擎】ONNXRuntime 的架构设计相关推荐

  1. 火山引擎 RTC 全球化架构设计

    动手点关注 干货不迷路 1. 为什么 RTC 要做全球化 RTC(Real Time Communication)是音视频基础设施,它已经融入了大家生活的方方面面:工作中,我们组织视频会议,即使团队成 ...

  2. 腾讯慧眼高可用架构设计

    一.腾讯云慧眼简介 腾讯云慧眼人脸核身,是一组对用户身份信息真实性进行验证审核的服务套件,提供各类认证功能模块,包含证件 OCR 识别.活体检测.人脸比对, 及各类要素信息核验能力,以解决行业内大量对 ...

  3. “健康码”背后,腾讯慧眼高可用架构设计

    导语 | 腾讯"防疫健康码"于2月9日率先落地深圳后,一个月累计访问量破60亿.而民众申领健康码过程中的"人脸识别登录验证",有着高准确率的要求.本文是腾讯云高 ...

  4. 基于时序数据的微内核预警引擎架构设计

    一个完整的监控生态体系包括"监.析.控"三个环节,预警平台作为偏"析"的一环,既要对监控数据做规则分析,又要为控制系统生成预警日志,起着承上启下的作用.监控平台 ...

  5. sphinx mysql存储引擎_基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计...

    Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级).Sphinx创建索引的速度为:创建100万条记录的索引只需3-4分钟,创建1000万条记录的索引可以在5 ...

  6. 病历智能处理引擎的架构设计、实现和应用

    作者简介: 吴大帅,新屿算法工程师,曾供职于宅米网.新达达,从事系统架构设计.算法设计等工作.  李智慧,<大型网站技术架构:核心原理与案例分析>作者,从事大型网站.分布式系统.大数据方面 ...

  7. Mesos容器引擎的架构设计和实现解析

    引言:提到容器,大家第一时间都会想到Docker,毕竟Docker是目前最为流行的容器开源项目,它实现了一个容器引擎(Docker engine),并且为容器的创建和管理.容器镜像的生成.分发和下载提 ...

  8. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  9. 规则引擎 drools_网易考拉规则引擎平台架构设计与实践

    背景 考拉安全部技术这块目前主要负责两块业务:一个是内审,主要是通过敏感日志管理平台搜集考拉所有后台系统的操作日志,数据导入到es后,结合storm进行实时计算,主要有行为查询.数据监控.事件追溯.风 ...

  10. UEBA架构设计之路3:复杂事件处理引擎

    上篇引言 UEBA通过机器学习对用户.实体进行分析,不管这种威胁是不是已知,也包括了实时和离线的检测方式,能得到一个直观的风险评级和证据分析,让安全人员能够响应异常和威胁. 到底是怎样的整体架构呢?我 ...

最新文章

  1. scheduled 一秒钟执行一次_spring boot的Scheduled帮你实现定时任务,spring boot实践(11)...
  2. timertask run函数未执行_函数的防抖和节流是个啥???
  3. 解决导入的maven聚合工程中子模块项目不显示
  4. SAP Cloud for Customer的employee创建会自动生成Business partner
  5. red hat 5.5 vncserver搭建
  6. 机器学习之方差与偏差(bias-variance)
  7. thrift java first demo
  8. 医院耗材管理系统开发_15
  9. python+opencv填充图像不规则区域:fillPoly和fillConvexPoly区别、半透明填充方法
  10. 男女偷情为了什么   文 / 自然人生
  11. python写情人节女朋友的EXCEL画像!
  12. BlazePose: On-device Real-time Body Pose tracking
  13. AWK----awk与shell交互
  14. word计算机桌面加密,如何给电脑的Word文件加密
  15. 台式计算机更改bios密码,台式机或笔记本忘记Bios密码解决方法
  16. bluetoothd源码剖析(一)启动流程
  17. geohash 模块安装及使用(Anaconda.Python 2)
  18. Go:日志滚动(rolling)记录器 lumberjack 简介
  19. VIVE™在MWC上海展示生态全景,虚拟现实行业新趋势初见端倪
  20. 引导滤波(guidedFilter)与边窗盒式滤波(sideWindowBoxFilter)的C++与OpenCV实现

热门文章

  1. IE 主页被恶意篡改的解决方法
  2. 为什么我们买了股票就不涨被套,股票割肉就飞了?
  3. jq 登陆界面 php,jquery实现用户登陆界面技术解答
  4. 云计算时代,你需要了解的OpenStack云操作系统
  5. 小样儿老师:我的嵌入式学习之路(一)
  6. 记一次解决eclipse复制粘贴不能用问题
  7. winhex万能恢复磁盘数据
  8. 2022茶艺师(初级)特种作业证考试题库及模拟考试
  9. appium自动注册完整脚本
  10. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记6——四大变换光照与材质