ORT:框架整体执行逻辑

作者&投稿:贡雍 (若有异议请与网页底部的电邮联系)
~

ORT,作为微软主导的开源推理框架,其内部执行逻辑复杂而高效。它由总计约491,189行代码(C++和Python等)构建,提供强大的自定义编译选项,其编译脚本build.sh生成的可执行文件位于build/Linux/Debug目录下。


Python与C++的交互是ORT执行的核心桥梁。从Python 1.9版本起,创建InferenceSession需指定providers参数。通过get_available_providers接口,可以获取到可用的执行提供商,这个接口在core/providers/get_execution_providers.cc中有定义,它返回一个ProviderInfo数组,每个provider的启用可通过编译宏控制,其中CPUProvider默认启用。InferenceSession类的实现见于onnxruntime_inference_collection.py,初始化时,它会根据get_available_providers获取并存储可用providers。


Session.run()方法是推理的核心,它调用C++中的get_available_providers获取列表,并配置到_inference_session对象。onnxruntime.InferenceSession是Python对C++ InferenceSession类的封装,其Python接口包括initialize_session和run。关键接口背后,如`CreateInferencePybindStateModule`,负责定义接口,如初始化和运行操作,通过`addObjectMethods`来实现。


InferenceSession类的关键方法包括:构造函数负责初始化,Load负责模型加载,Initialize进行执行提供者注册和Session初始化,Run则执行模型推理。构造函数会执行一系列初始化步骤,如设置线程池和日志管理器,而Load函数则通过`LoadModelHelper`线程安全地调用`Model::Load`,负责从文件描述符解析ONNX模型。


在Load函数中,重要的是反序列化模型并创建Model对象,这被存储在InferenceSession的model_成员中。Initialize函数涉及一系列步骤,如加载模型表示、存储session信息、注册kernel信息,以及一系列图转换和优化操作。


特别是,执行计划的关键步骤包括:SequentialPlanner::CreatePlan的拓扑排序,用于确定节点运行顺序;CreateKernels为节点操作创建kernel实例;以及在InferenceSession::Run中,执行提供者自定义的初始化和结束操作。ExecuteGraph内部的OnRunStartOnRunEnd触发provider的定制动作,SequentialExecutor则负责按顺序执行Compute函数。


尽管本文未详尽阐述ORT的底层细节,但已经给出了一个概览,展示了其执行逻辑的概要结构。更多深入的技术剖析,如模型优化、provider管理和执行计划,可以参考官方代码:https://github.com/microsoft/onnxruntime。




永澄:目标完不成的五大原因
最近,我搞定了全新的解释框架——耗能循环和赋能循环(详见: 《永澄:赋能循环使用方法》 ),那么,我...(关于动力和阻力的更多内容,详见我之前的文章《 永澄:执行力公式》 )和前两点一样,我们先谈谈带来...我们分析完了每个「局部」,最后再谈一下耗能循环这个「整体」。要知道: 只要进入了耗能循环的逻辑,...

行程安排 英
它涉及到解决排定问题(scheduling problem),如多层时间安排的复杂性,以及制定调度算法(scheduling algorithm)以优化生产或任务流程。生产调度(production scheduling)是工业管理中常见的实践,而调度程序系统(scheduling system)则提供了组织和执行任务的框架。在实际应用中,它展现出了高效性。例如,通过...

linux调度算法的核心思想是什么?
每个任务调度算法的实现在Linux四种调度参数,它们是rt_priority优先政策(尼斯),计数器。调度进程调度的基础上,这四个参数。SCHED_OTHER调度策略,调度程序总是会选择优先级+计数器的值进程调度的执行。从逻辑分析存在SCHED_OTHER调度策略调度处理来执行,其特征在于,所述优先级是一个固定的调度周期(...

BOB和RT是什么意思?
bob beijing olympic broadcasting 北京奥林匹克运动会转播公司 是奥委会和中国CCTV的合资公司

RT-LAB的主要特征
在大量市场需求的推动下, 用户可以从快速进步的技术中受益, 使用相对较低的花费。 RT-LAB使用标准以太网和火线(IEEE1394)进行通讯,还包括PCIe, ISA,PCI,PXI 以及 PCMCIA 在内的大量数字的和模拟的 I\/O板卡。共享内存、无限带宽协议(DolphinSCI)、火线、信号线或者 UDP\/IP进程间通讯。在执行...

求进程调度算法
可见SCHED_OTHER调度策略本质上是一种比例共享的调度策略,它的这种设计方法能够保证进程调度时的公平性--一个低优先级的进程在每一个epoch中也会得到自己应得的那些CPU执行时间,另外它也提供了不同进程的优先级区分,具有高priority值的进程能够获得更多的执行时间。 对于实时进程来说,它们使用的是基于实时优先级rt_...

电脑键盘打印机按哪个键
3、Ctrl+C__nsert拷贝Copy(在dos或cmd中为取消执行)4、Ctrl+D_痔甯袷_ecorate5、Ctrl+E_又卸云_ncenter6、Ctrl+F_檎_ind7、Ctrl+G_ㄎ_etaddress8、Ctrl+H_婊_uan9、Ctrl+I_碧_talic10、Ctrl+J_蕉硕云_ustify11、Ctrl+K_读唇_ingLink12、Ctrl+L_蠖云_eftAlign13、Ctrl+M_笏踅_14、Ctrl+...

求助高手:框架结构的房屋和砖混结构的房屋,在施工图上会区别体现在哪里...
从图纸上判断砖混结构还是框架结构是看承重墙和承重梁柱子所占的比例。砖混中也有承重梁柱,框架中也有承重墙。1.建筑图:先看底层平面图,要是开间比较大,大厅大开间房间比较多,就是属于底框结构或框架结构。2.看房屋类型,要是公共服务建筑,比如超市,商场等就是框架居多,要是住宅就看层数或是否...

框架 建筑 加建,结构 如何处理?
框架建筑加建的结构处理方法:1、根据原有结构型式,进行结构计算,在柱头植筋等做法,施工混凝土柱墩;2、混凝土柱墩通过植筋与原有结构连接,里面正常配筋,顶部预埋螺栓,或者预埋钢板(利用锚爪深入混凝土保证锚固);3、钢结构柱子的柱脚利用螺栓,或者预埋钢板连接上来。至于钢构件尺寸,要结构计算确定...

SpringBoot使用线程池
线程池是一种线程使用模式。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证...

安陆市18572273897: c程序的基本结构中错误的是:A选择结构 B总体结构 C循环结构 D顺序结构 -
众缪先辰: 选择 循环 顺序 分支 这些是基本结构. 总体结构,C里面没有这个说法. 选B

安陆市18572273897: 详述一下整体的struts框架工作机制
众缪先辰: 它的核心部分还是sevlet Struts运行原理:分别为 model-view-crotr 1.首先由用户提交请求到*.do 2.如果有必要则用actionForm封装数据 3.然后交给Servlet,由Servlet读取相应actionForm和action类分别为 model-view-crotr 4.如果有必要,则先由...

安陆市18572273897: 如何选择最为合适的Web开发框架 -
众缪先辰: 如何选择Web开发框架开发框架的选择,始终是个仁者见仁、智者见智的事情.尤其是Web层的开发框架,数量非常多,而且各有特色,如:Struts、WebWork、Spring MVC、Tapestry、JSF、WebPage3.0……等等.下面先来看看为什么要...

安陆市18572273897: matlab中命令窗口都是写一条执行一条的,我要输一个选择结构或循环结构是一个整体编好在执行怎么办? -
众缪先辰: 想在命令窗口边调试边生成m文件,可以在调试前加这样一句 diary fname.m%fname is the name you want 调试成功后,加这样一句 diary off 而后这样打开 open name.m 将其中的错误改掉后就可以反复执行了.希望对你有用.

安陆市18572273897: COSO报告具体指什么?
众缪先辰: COSO报告主要分四部分:第一部分是概括;第二部分是定义框架,完整定义了内部控制,详细描述了内部控制的组成部分,为公司管理层、董事会和其他人员提供评价内部控制系统的有关规则;第三部分是对外部团体的报告;第四部分是评价...

安陆市18572273897: 软件架构模式基本概念及三者区别 -
众缪先辰: 在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式:架构模式(Architectural Pattern)、设计模式(Design Pattern)、代码模式(Coding Pattern). 架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质...

安陆市18572273897: 什么是软件架构? -
众缪先辰: 当你去了解一个东东的时候,第一步要做的,就应该去知道这个东东的定义,对于软件架构也是如此,经过网上查询和书籍的帮助,我大概理清了一个轮廓. 软件行业是一个热衷于制造'名词'的行业,如果退回15年,估计没几个人知道'软...

安陆市18572273897: 在revit中画一个框架楼的施工图总体思路是什么啊 -
众缪先辰: revit绘制框架结构的施工图的思路如下:1、按照专业分工协作,分为建筑、结构、给排水、电气、暖通、消防等BIM专业小组,制定统一的BIM标准,比如命名标准等.2、每个专业按照楼层划分绘制的流程.先绘制标准层,复制标准层到其他...

安陆市18572273897: 高中英语笔试培训
众缪先辰: 如何在考场上少扣分?为了让同学们今年高考考出最好的成绩,我们整理了高中英语... 3、推理判断题:考生需要掌握文章的整体框架,重点关注主题关键词,或表现作者...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网