
DL/ML
文章平均质量分 94
SunnyZhou-1024
这个作者很懒,什么都没留下…
展开
-
看PyTorch源代码的心路历程
1. 起因曾经碰到过别人的模型prelu在内部的推理引擎算出的结果与其在原始框架PyTorch中不一致的情况,虽然理论上大家实现的都是一个算法,但是从参数上看,因为经过了模型转换,中间做了一些调整。为了确定究竟是初始参数传递就出了问题还是在后续传递过程中继续做了更改、亦或者是最终算法实现方面有着细微差别导致最终输出不同,就想着去看一看PyTorch一路下来是怎么做的。但是代码跟着跟着就跟丢了,才会发现,PyTorch真的是一个很复杂的项目,但就像舌尖里面说的,环境越是恶劣,回报越是丰厚。为了以后再想跟踪原创 2021-01-22 17:45:13 · 1678 阅读 · 0 评论 -
TensorFlow Lite源码解析之三(委托)
1. 前言所谓劳心者治人,劳力者治于人(所以“劳力士”又叫“打工人”?)。小农经济下自己什么都干,虽然饿不死,但是生产效率也肯定非常低下;只有让专业的人做专业的事,才能最大限度发挥每个人的价值。同理,对于一个推理引擎而言,完成一次计算,可以有多种选择,从头到尾都让CPU做运算理论上也不是什么问题。但是除了结果正确之外,还有另外一项关键指标:时间!密集计算确实非CPU所长,因此他该做的是协调资源,脏活累活让GPU、DSP这些替他干。一个精诚合作的团队力量是非常强大的。那么,TensorFlow Lite是怎原创 2020-12-12 13:00:19 · 2239 阅读 · 4 评论 -
TensorFlow Lite源码解析之二(内存管理)
相关阅读TensorFlow Lite源码解析之一1. 前言爱迪生说过,人工智能就是是百分之九十九的数据加上百分之一的算法。毕竟目前人工智能还没有达到T800这种以毁灭人类为己任的终结者级别,归根到底还是一个程序。这么一想,是不是觉得市面上说的AI要统治人类了根本就是危言耸听,对于弱人工智能,我治不住你,难道我的360强力卸载还治不住你?言归正传。很显然,想要了解一个程序,理解它是怎么管理用于存储数据的内存是一个绕不开的话题。想要了解TensorFlow Lite是如何工作的,我们首先要弄清楚它.原创 2020-12-03 14:14:27 · 1667 阅读 · 3 评论 -
TensorFlow Lite源码解析之一
每一个成功的人工智能背后,都有一个摸摸推理的引擎。想知道TFLite是怎么工作的么,戳我了解更多!原创 2020-11-30 11:20:32 · 1802 阅读 · 0 评论 -
PyTorch框架Tensor底层原理
PyTorch中数据全部保存在一个由`Storage`对象维护的一位数组中(更确切的说是一块连续的内存区域),而`Tensor`只不过是对这个一维数组的一个视角。`Tensor`通过`Size, storage offset, strides`这三个属性的值的不同组合,可以让同一个`Storage`一维数组看起来像多个不同的多维数组。原创 2020-04-17 20:15:02 · 3919 阅读 · 0 评论 -
ONNX Runtime 源码阅读:引擎运行过程总览
之前的文章中,我们一直从源码细节的角度去看某个功能的实现。总会有一种一叶障目不见泰山的感觉,对ONNX Runtime缺乏一个比较总体的认识。通过前面的几篇文章,在看细节源码的过程中,脑海渐渐浮现出了ONNX Runtime总体的轮廓,但是并不是很清晰。今天打算暂时跳出细节,站在高处,看看ONNX Runtime它的筋骨、它的脉络,也更能方便以后进行局部分析。原创 2020-03-28 11:28:48 · 3423 阅读 · 1 评论 -
ONNX Runtime 源码阅读:模型分区的实现
为了实现高效的推理,神经网络推理引擎应该尽可能将主机(Host)上能提供更高效计算的硬件设备(Device)利用上,ONNX Runtime当然不能例外。ONNX Runtime目前已经支持了多种不同设备,移动端的支持也在开发中。一台主机上很可能同时存在多种设备,ONNX Runtime是如何选择在那种设备上运行的呢(也就是怎么分区)?对于某些运行时不支持的操作怎么处理(回落)?不同硬件的运行时优先级怎么确定呢?这些就是本文探究的主要内容。原创 2020-03-13 21:34:06 · 3189 阅读 · 2 评论 -
ONNX一个沟通各大AI框架的桥梁
概述ONNX全称Open Neural Network Exchange,是微软设计的一个开放式深度学习神经网络模型的格式。旨在通过一个统一的模型格式标准,建立一个强大的人工智能生态。深度神经网络的实现是通过数据流图实现的,数据(张量等)从输入,流过一个个集选节点,最终在输出结点得到推理结果。不同的框架实现数据流图的的方式不尽相同,有的使用静态图,有的在运行的过程中动态创建。但是不管哪种方式,...原创 2020-02-27 22:03:30 · 1591 阅读 · 0 评论 -
ONNX Runtime 源码阅读:模型结点串行执行顺序的确定
概要ONNX模型中的结构是一个有向图,包含了很多节点。每个节点执行一个特定的操作,最终就得到了推理结果。ONNX模型格式标准并没有要求所有节点按照拓扑顺序来存储,进行模型解析的时候也基本不要求解析出来的节点一定要符合拓扑顺序排列。有些模型很简单,从输入到输出,可能只有一条通路;有些模型很复杂,不仅输入和输出节点间存在多条通路,还有可能存在多个输入和输出节点。ONNX Runtime 是如何确定模...原创 2020-01-17 17:22:27 · 3524 阅读 · 2 评论 -
ONNX Runtime 源码阅读:模型推理过程概览
简介ONNX Runtime是一个用于ONNX(Open Neural Network Exchange)模型推理的引擎。微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,顺路提供了一个专门用于ONNX模型推理的引擎,onnxruntime。目前ONNX Runtime 还只能跑在HOST端,不过官网也表示,对于移动端的适配工作也在进行中。一半处于工作需...原创 2020-01-14 18:15:01 · 13810 阅读 · 6 评论