Adlik深度学习模型编译器介绍

Adlik:Adlik:加速深度学习推理的工具包 阿德利克 Adlik [ædlik]是深度学习模型的端到端优化框架。 Adlik的目标是在云和嵌入式环境上加速深度学习推理过程。 借助Adlik框架,可以以非常灵活和轻松的方式将不同的深度学习模型部署到具有高性能的不同平台。 在云环境中,应将已编译的模型和Adlik Inference Engine构建为docker映像,并部署为容器。 在边缘环境中,应将Adlik Inference Engine部署为容器。 应将编译后的模型转移到边缘环境,并且Adlik Inference Engine应该自动更新和加载模型。 在设备环境中,Adlik Inference Engine和编译后的模型应编译成二进制文件( so或lib )。 想要在设备上运行模型推断的用户应将用户定义的AI函数和Adlik二进制文件链接到执行文件,然后直接运行。 我们使用简单的CNN模型(MNIST模型),ResNet50模型和具有不同服务引擎的InceptionV3,在同一CPU或GPU上测试Adlik的推理性能。 Adlik在不同模型上的测试性能数据如下: 内容 模型优化器专注于特定的硬件并在其上运行以 立即下载
★

将深度学习模型部署到生产环境实现应用是深度学习算法落地的重要一步。部署阶段的场景和目标设备多种多样,目前针对不同设备有不同的推理框架,如Tensorflow Serving、Tensorflow Lite、OpenVINO、TensorRT、MNN。然而这些推理框架互不兼容,用户根据业务需求使用不同推理框架时需要安装和测试多次。如何使训练得到的深度学习模型能够在不同于训练平台的目标设备上保持性能、高效执行?在同样的平台上,如何快速安装、测试不同推理引擎,保持同样的用户体验?业界有不同的项目针对此目标做出了努力,Adlik是其中一项。

”

1. Adlik简介

Adlik是一款端到端的深度学习模型推理加速工具链,主要包含三部分:模型优化,模型编译和服务引擎。Adlik模型编译器提供多条编译线路,可以把多种深度学习模型编译为不同目标设备所需的不同模型格式,并且支持Tensorflow Lite、TensorRT模型8-bit量化。在推理阶段,Adlik支持OpenVINO, TensorFlow Serving-CPU, TensorFlow Serving-GPU,TensorRT, TensorFlow Lite五种格式的推理运行时,提供benchmark自动测试、云原生镜像和业界典型网络推理测试结果。Adlik提供一套完整的优化、编译、推理平台,用户可根据其提供的benchmark和云原生镜像按需选择、直接使用,避免了多次安装、测试,能够极大的提高用户的使用体验和执行效率。

图1-1 Adlik推理加速工具链

2. Adlik模型编译器

深度学习广泛应用于图像识别、自然语言处理、推荐系统、视频分析等领域,对准确性和性能要求的提高也导致模型的复杂度和尺寸不断增大。模型编译器可促进训练和部署环境之间的过渡、并调整深度学习模型,以在目标设备上实现最优执行。我们训练得到的模型可以称为源模型,服务引擎能直接部署和用来进行推理的中间表示称为目标模型。不同的推理引擎接收模型格式不同,并且目前均是唯一对应的,深度学习训练得到的不同格式模型经过模型编译器转换为推理引擎接受的目标模型格式,从而能直接在线推理或集成到最终应用里进行部署。编译时可以通过图转换、层融合等操作使目标模型的操作节点少于原始模型,再结合模型优化,能够在不降低推理准确度的基础上压缩模型,方便模型部署,有效减少推理时间。Adlik模型编译器支持主流的深度学习框架包括:Tensorflow、Pytorch、Caffe,支持编译为Tensorflow Serving CPU、Tensorflow Serving GPU、TensorRT、Tensorflow Lite、OpenVINO等多种推理服务引擎所需模型格式,能够针对目标设备优化模型、提升推理速度。

图2-1 Adlik模型编译器编译路线图

2.1 Adlik模型编译器使用简介

  1. 拉取Adlik模型编译器镜像

    docker pull registry.cn-beijing.aliyuncs.com/adlik/model-compiler:7.0.0.11_10.0

备注:7.0.0.11代表tensorrt版本,10.0为cuda版本,用户可选择不同版本的tensorrt和cuda,注意保持两者适配


2)使用Adlik示例代码训练一个简单的keras深度学习模型

git clone https://github.com/Adlik/Adlik.git
cd Adlik/examples/keras_model
python3 train_model.py

3)运行Adlik模型编译器镜像

docker run -it --rm -v $PWD:/home/john/model registry.cn-beijing.aliyuncs.com/adlik/model-compiler:7.0.0.11_10.0 bash
  1. 编译模型:编译训练得到的keras模型到Tensorflow Serving需要的模型格式

cd /home/john/model/
python3 compile_model.py
  1. 在model_repos目录,查看编译成功得到的目标模型。###2.2 Adlik模型编译器编译原理 Adlik模型编译器集成了多种推理引擎模型优化、编译操作,包括Tensorflow Serving模型编译器、Tensorflow Lite转换器、OpenVINO模型优化器、TensorRT模型优化器,能够把深度学习模型优化转换为使用不同指令集架构的目标设备(如Intel CPU, Nvidia GPU,移动端Arm CPU, FPGA)支持的模型表示。####2.2.1 Adlik模型编译器之Tensorflow Serving TensorFlow Serving是一个服务系统,可以直接读取SavedModel格式的模型,帮助用户在实际生产环境中灵活、高性能地部署机器学习模型。SavedModel是tensorflow提供的一系列序列化标准格式的文件,可以部署到各种目标平台(例如服务器,移动设备,嵌入式设备,浏览器等)。SavedModel 格式是一个包含 protobuf 二进制文件和 Tensorflow 检查点(checkpoint)的目录。它不需要原本的模型代码就可以加载,所以很容易在 TFLite, TensorFlow.js, TensorFlow Serving, or TensorFlow Hub 上部署。

ls {saved_model_dir}
assets  saved_model.pb  variables

其中,saved_model.pb文件用于存储实际 TensorFlow 程序或模型,以及一组已命名的签名(每个签名标识一个接受tensor输入和产生tensor输出的函数)。SavedModel 可以包含模型的多个变体,多个v1.MetaGraphDefs,通过 saved_model_cli --tag_set 可以查看。

saved_model_cli show --dir {saved_model_dir} --tag_set serve

variables 目录包含一个标准训练检查点(checkpoint),检查点可以捕获模型使用的所有参数(tf.Variable 对象)的确切值。

ls {saved_model_dir}/variables
variables.data-00000-of-00001  variables.index

assets目录包含 TensorFlow 计算图使用的文件,例如,用于初始化词汇表的文本文件。SavedModel 可能有一个用于保存 TensorFlow 计算图未使用的任何文件的 assets.extra 目录,例如,为使用者提供的关于如何处理 SavedModel 的信息。####2.2.2 Adlik模型编译器之Tensorflow Lite Tensorflow Lite是TensorFlow的轻量级版本,专为移动和嵌入式设备而设计。它以较小的二进制大小实现了低延迟的推理,能够实现直接在设备上执行推理,从而无需在设备与服务器之间来回发送数据,达到缩短延迟、保护隐私、降低功耗的目的。Tensorflow Lite由两部分组成:TensorFlow Lite 转换器,它可将 TensorFlow 模型转换为方便解释器使用的格式,并可引入优化以减小二进制文件的大小和提高性能。TensorFlow Lite 解释器,它可在手机、嵌入式 Linux 设备和微控制器等很多不同类型的硬件上运行经过专门优化的模型。TensorFlow Lite 转换器可根据输入的 TensorFlow 模型生成 TensorFlow Lite 模型(一种优化的 FlatBuffer 格式,以 .tflite 为文件扩展名),可在不影响准确率的情况下减小模型的大小和提高其性能。FlatBuffers 是一个开源的高效的跨平台序列化库,常与 per-object 内存分配相结合,在直接访问数据时不需要再次解析包或者解压缩。相比于protocol buffers,FlatBuffers 的代码体积小很多。

图2-2 Tensorflow Lite模型转换器(图片来自Tensorflow官方网站)

TensorFlow Lite 转换器可以通过Python API和命令行的方式使用。在Adlik模型编译器中,使用Python API的方式进行转换。主要使用的API为:

tf.lite.TFLiteConverter.from_saved_model()
tf.lite.TFLiteConverter.from_keras_model()
2.2.3 Adlik模型编译器之OpenVINO

OpenVINO是英特尔推出的针对英特尔硬件的一套深度学习推理加速工具链,包括模型优化、推理引擎等一系列与深度学习模型部署相关的工具。OpenVINO工具包的核心组件之一是模型优化器,它是一种跨平台的命令行工具,可以将经过训练的神经网络从其源框架转换为与nGraph兼容的中间表示(IR),以在英特尔CPU和GPU上进行更加高效的推理操作。

图2-3 OpenVINO模型优化器(图片来自OpenVINO官方网站)

OpenVINO模型优化器支持多种深度学习训练框架和模型格式,将训练得到的模型转换的中间表示(IR),可以使用推理引擎对其进行读取、加载和推理。中间表示是一对描述模型的文件:

.xml-描述网络拓扑
.bin-包含优化后的网络参数和变量

OpenVINO模型优化器在转换模型格式的同时,对模型进行了优化,无需重新训练模型,即可实现推理加速。Adlik中OpenVINO模型优化器执行优化实施的主要操作包括:线性运算融合和分组卷积融合。1)线性运算融合 许多卷积神经网络包括BatchNormalization和ScaleShift层(例如,Resnet *,Inception *),可以将它们表示为一系列线性运算:加法和乘法。例如,ScaleShift层可以表示为Mul → Add序列,这些层可以融合到先前的Convolution层或FullyConnected层中。具体的操作可以分为三步:第一步,将BatchNormalization和ScaleShift层分别分解。将BatchNormalization层分解为Mul → Add → Mul → Add序列,将ScaleShift层分解为 Mul → Add序列。第二步,线性运算合并。在此阶段,我们将Mul和Add运算的序列合并到单个Mul→Add实例中。例如,我们的网络结构图中有BatchNormalization和ScaleShift层,在第一步,将其分别替换为Mul → Add 序列后,在本步中,如果我们没有可用的Convolution层或FullyConnected层可以融合,则使用ScaleShift层替换模型计算图中BatchNormalization层和ScaleShift层的后者。第三步,线性运算融合。在此阶段,模型优化器将Mul和Add运算融合到Convolution或FullyConnected层。需要注意的是,它在模型图中向后和向前搜索Convolution层和FullyConnected层进行融合(除了Add操作,该操作不能沿向前方向融合到卷积层)。下面以Caffe * Resnet269拓扑结构图进行示例,其中BatchNorm和ScaleShift层将融合到Convolution层。

图2-4 OpenVINO模型优化-线性操作融合(图片来自OpenVINO官方网站)

2)分组卷积融合 分组卷积融合是适用于TensorFlow *拓扑的特定优化。此优化的主要思想是合并Split输出的卷积结果,然后使用Concat操作以从Split中分离出来的顺序重新组合它们。

图2-5 openvino模型优化-分组卷积融合(图片来自OpenVINO官方网站)

2.2.4 Adlik模型编译器之TensorRT

TensorRT是英伟达推出的用于深度学习推理的SDK。它基于CUDA和cuDNN提供API和解析器,支持从所有主流的深度学习框架中训练的模型进行推理。TensorRT以一个C++库为核心,能够在英伟达的GPU上进行模型推理性能的优化,通过强大的优化,降低的精度使用和实现有效的内存利用,帮助用户以低延迟处理大量数据。对于Tensorflow模型,TensorRT可以直接解析他们的网络模型;对于Caffe2,Pytorch,等框架则需要先将模型转为 ONNX 通用深度学习模型格式,然后对ONNX模型做解析。Adlik TensorRT模型优化器目前支持ONNX格式模型优化转换,支持FP16或INT8量化,尚不支持TF-TRT(TensorFlow与TensorRT的集成),将在下个版本中引入。TensortRT优化推理流程图如图2-6所示,为了优化推理模型,TensorRT采用用户提供的已完成训练的网络,执行包括平台特定优化在内的模型优化,并生成一个.plan序列化格式文件。

图2-6 TensorRT模型优化图(图片来自TensorRT官方网站)

Adlik中TensorRT在编译时对模型计算图进行的优化主要有:1)层与张量融合。TensorRT将convolution、bias和ReLU运算进行纵向融合,融合为一层(CBR)。之后进行横向融合,整合拥有相同源张量和使用完全相似参数的层。通过层与张量的融合,减少对cuDNN API的调用次数,能有效优化GPU显存和带宽的使用。2)消除推理时不使用的层和等同于无操作的层。3)合并concatenation层。TensorRT将层的输出直接定向到正确的最终需要输入的位置,减少一次传输吞吐。4)支持FP16和INT8量化。TnsorRT提供完全自动化的精度校准,能够在有效地保持模型性能的基础上,降低存储带宽,提升推理速度。

图2-7:(a)具有多个卷积和激活层的TensorRT优化示例GoogLeNet Inception卷积神经网络。(b)TensorRT采用纵向和横向层融合以及层消除优化功能简化了的GoogLeNet Inception模块图。

Adlik Github:https://github.com/Adlik

基于Android Studio的校园智能点餐系统开发实战(附完整源码与部署指南) 本文详细介绍了基于Android Studio开发校园智能点餐系统的完整流程,包括需求分析、环境搭建、数据库设计、客户端与后台功能实现。系统采用SSM框架和MySQL数据库,解决了校园食堂高峰期排队问题,提供高效的点餐体验。附完整源码与部署指南,助力开发者快速构建类似应用。 阅读详情

相关推荐

【Rcode】生存分析: KM & COX回归& 随机森林& nomogram

本文使用了R——survival包下的lung数据进行方法测试: 1)KM 2) Cox回归:多因素 3)随机森林因子(根据cox回归结果) 4)nomogram ( 根据cox回归结果,建立了中位生存时间,1年5年生存率的概率计算) -------------------????????‍♀️本文只有干货,非常干!????----------------------------- 一、数据加载 #生存分析 library("survival") library("survminer") data("

weixin_43172152的博客 9274

​Adlik 云原生介绍

Pivotal作为云原生(Cloud Native)应用架构中先驱者和探路者,于2015年提出了云原生应用。

csdndevpress0035的博客 357

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2601

Adlik在深度学习异构计算上的实践

Adlik首先在架构上支持多类异构硬件和计算引擎,也在FPGA异构计算上完成了一些技术实践,后续将继续进行特定硬件上的计算优化技术的研究,来加速推动AI模型的工程应用。...

csdndevpress0035的博客 359

Visual Studio调试时遇到ntdll.dll的PDB文件缺失?别慌,这3个方法帮你搞定(附详细步骤)

本文详细解析了Visual Studio调试时ntdll.dll的PDB文件缺失问题,提供了3种实用解决方案:调整调试设置、配置符号服务器与缓存目录、手动下载管理符号文件。通过分步指导和高级技巧,帮助开发者快速恢复完整的调试功能,特别适用于Windows平台下的C++项目开发。

weixin_42537919的博客 513

数字摄影与摄像中的图像信号处理器(ISP):流程与经典算法详解

图像信号处理器(Image Signal Processor, ISP)是现代数字成像系统(如智能手机、数码相机、网络摄像头等)中的核心组件,扮演着将图像传感器(如CMOS或CCD)捕获的原始光电信号转换为高质量、可供观看或进一步处理的数字图像的关键角色。在数字摄影和摄像的整个链路中,光线首先通过镜头(Lens)聚焦到图像传感器上,传感器将光信号转换为模拟电信号,随后经过模数转换(A/D转换)变为原始的数字图像信号。

qq_44682523的博客 3727

Adlik 支持基于云燧i20的 AI推理服务部署,共建AI生态链

近日,中兴通讯开源的Adlik深度学习推理工具链新增对人工智能推理加速卡云燧i20的支持,可实现基于云燧i20的高效AI模型部署,提供高性能的云端推理服务。Adlik是由中兴通讯在Linux基金会人工智能&数据基金会(LF AI & Data)发起的开源项目,旨在提升深度学习、机器学习等模型在各种硬件平台下的推理效率,助力人工智能在云、边、端等多种场景快速落地。对异构硬件的推理支持...

LF_AI的博客 510

【芯片驱动】2. CMT2300A配合硬件测试(灵敏度和发射功率)的软件实现

前言 在开发一款无线射频产品的时候,软件是一部分,硬件也是一部分。而决定无线收发性能的,首先是硬件的匹配电路,然后才到软件部分的优化。 一款无线射频产品,首先需要先决定是在那个频率范围内(当然是国家允许的范围内),然后硬件则需要在基于这个频点范围进行硬件的参数匹配,具体又分为发送功率匹配、天线匹配、和接收灵敏度的匹配。 现在我们使用2300a这款无线芯片来说,除非自己的团队是射频专家,则可以自己进行无线外围电路的设计外,另外一种更加快捷的方式,就是寻找原厂技术支持,他们会给...

sishuihuahua的博客 7055

Adlik新版本发布,增加一种芯片支持

12月20日,深度学习推理工具链Adlik Release 1.0 已经发布啦!除了常规的升级外,本次版本最大的亮点是增加了对于燧原科技人工智能推理加速卡云燧i20的支持, 使得Adlik云端推理方案有了更多的选择。欢迎各位小伙伴速来体验、拍砖。Compiler:支持ONNX模型到燧原芯片模型格式的编译路径支持OpenVINO升级到2022.3.0版本支持TensorFlow升级到2.10.1版本...

LF_AI的博客 381

面试问题总结——关于OpenCV(一)

整理了一下网上和我面试中遇到的关于OpenCV相关的问题。 其中因为我的简历中有个项目用到了特征点检测相关的知识,所以整理了SIFT/SURF和FLANN。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 关于OpenCV的内容 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题   深拷贝:分配新内存的同时拷贝数据,当被赋值的容器被修改时,原始容器数据不会改变。   浅拷贝:仅拷贝数据,当被赋值容器修改时,原始容器数据也会做同样改变。 OpenCV的Mat时,有几种赋值方式分别为:   深.

boss-dog 1万+

关于在线excel插件Univer笔记教程

univer在线excel插件确实是够强大,但也存在不少bug,用户用起来是真的很爽,和本地的wps差不多,但真正的开发起来是真的费劲。由于文档提供的信息不足,我们很多功能只能去看他们插件里的源代码,然后一点点测试,一点点尝试研究。此文章可省去五天的研究成本

guiplan 5827

介绍adlik代码项目

其价值在于整合了分散的优化技术(量化、剪枝、多引擎支持),为开发者提供“一站式”解决方案。它旨在为工业界和开发者提供高效、灵活的深度学习推理工具链,支持从模型优化到部署的全流程。- 运行时优化:针对不同硬件(CPU/GPU/TPU)自动选择最优后端(如 TensorRT、OpenVINO)。- 集成多种推理引擎(TensorRT、TFLite、ONNX Runtime),动态选择最优后端。- 统一接口:通过适配层支持 TensorFlow、PyTorch、ONNX 等框架的模型部署。

mrzyun0811的博客 373

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2050

大麦抢票自动化实战:从环境自检到自动下单的全流程拆解

大麦自动抢票系统(ticket-purchase)是一个基于 Python + Selenium + Appium 的开源抢票工具,把"选城市、选场次、选票价、选观演人、提交订单"这一串手速敏感的操作交给脚本完成,覆盖 Web 端(Selenium 驱动 Chrome)和移动端(Appium 驱动 Android 大麦 APP)两条路线。适合想在开售瞬间比手动点击更快一步的用户,本文按"跑起来 →

gitblog_00513的博客 944

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

如何利用Adlik深度学习推理加速框架实现工业级实时图像识别

Adlik是一个专业的深度学习推理加速工具包,专门为工业场景中的实时图像识别任务提供高性能解决方案。在前100个字内,Adlik框架通过优化模型编译和推理引擎,能够显著提升深度学习模型在边缘计算和云端部署中的执行效率,特别适合需要低延迟、高吞吐量的工业视觉应用场景。😊 ## 为什么工业场景需要Adlik深度学习推理加速? 在智能制造、质量检测、安防监控等工业领域,实时图像识别面临着三大挑战:

gitblog_00540的博客 696

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Adlik开发者教程:如何为自定义模型添加推理支持

Adlik是一个强大的深度学习推理加速工具包,它能够帮助开发者将训练好的模型高效地部署到各种环境中。本文将详细介绍如何为自定义模型添加推理支持,让你的模型在Adlik框架下发挥最佳性能。 ## Adlik推理框架概述 Adlik的核心是其灵活的推理引擎,它支持多种深度学习框架和硬件平台。Adlik的推理引擎架构如图所示: [![Adlik推理引擎架构](https://raw.gitcode

gitblog_00849的博客 417

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Adlik多平台部署指南:从CPU到GPU的完整迁移方案

Adlik是一个专业的深度学习推理加速框架,专门为多平台部署而设计。这个强大的工具包让开发者能够轻松实现从CPU到GPU的无缝迁移,显著提升深度学习模型的推理性能。无论您是在云端、边缘设备还是嵌入式环境中部署AI模型,Adlik都提供了完整的解决方案。 ## 🚀 Adlik架构概览:一站式深度学习推理平台 Adlik采用模块化设计,包含三个核心组件:模型优化器、模型编译器和推理服务引擎。这种

gitblog_00574的博客 519

Adlik模型量化指南:在保持精度的同时提升推理性能

Adlik是一个强大的深度学习推理加速工具包,专为优化模型部署而设计。对于AI开发者来说,模型量化是提升推理性能的关键技术,而Adlik提供了完整的量化解决方案,帮助您在保持模型精度的同时大幅提升推理速度。本文将为您详细介绍如何使用Adlik进行模型量化,实现高效的深度学习推理加速。 ## 📊 为什么需要模型量化? 在深度学习部署中,模型量化通过减少模型权重和激活值的精度来压缩模型大小并加速

gitblog_00823的博客 1040

Adlik发布v0.1.0(Antelope羚羊)版本,赋能深度学习模型产业化

6月15日,深度学习推理加速工具链项目Adlik发布了v0.1.0版本,代号Antelope 羚羊。这是中兴通讯将该项目在Linux基金会旗下AI基金会(LF AI)开源以来发布的第一个正...

LF_AI的博客 582

Adlik架构深度剖析:理解深度学习推理加速的核心原理

Adlik是一款强大的深度学习推理加速工具包,旨在显著提升模型部署效率与性能。无论是云端大规模部署还是边缘设备实时推理,Adlik都能通过其优化的架构设计,帮助开发者轻松实现深度学习模型的高效落地。 ## 一、Adlik整体架构概览 Adlik的架构设计围绕"高效推理"核心目标展开,采用模块化设计理念,实现了从模型优化到多环境部署的全流程支持。其整体架构可分为模型优化与编译、推理引擎两大核心部

gitblog_00897的博客 983

Adlik深度学习推理加速工具包:从入门到精通的完整指南

Adlik是一款强大的深度学习推理加速工具包,旨在帮助开发者优化和部署机器学习模型,实现高效推理。无论是在云端、边缘设备还是终端设备上,Adlik都能提供卓越的性能和灵活性,让AI应用部署变得简单高效。 ## 🚀 Adlik核心功能解析 Adlik作为深度学习推理加速工具包,主要包含两大核心组件:模型编译器(Model Compiler)和推理引擎(Inference Engine)。这两个

gitblog_00687的博客 1002

Adlik核心功能解析:支持多框架推理加速的终极解决方案

在深度学习模型部署领域,Adlik作为一款强大的推理加速工具包,为开发者提供了完整的端到端解决方案。无论您是处理TensorFlow、PyTorch还是其他主流框架的模型,Adlik都能帮助您实现高效、稳定的生产级部署。🚀 ## 什么是Adlik?深度学习的推理加速利器 Adlik是一个专门为深度学习模型推理加速设计的完整工具包,它通过统一的接口和优化的编译流程,解决了多框架模型部署的复杂性

gitblog_00843的博客 419

Adlik vs 传统推理框架:为什么它是AI部署的终极选择?

在人工智能应用快速发展的今天,深度学习模型的部署效率直接影响着AI产品的用户体验和商业价值。Adlik作为一款专注于加速深度学习推理的完整工具包,正在改变传统AI部署的游戏规则。本文将深入探讨Adlik与传统推理框架的关键差异,揭示为什么Adlik成为AI部署的最佳选择。🚀 ## 📊 Adlik与传统推理框架的核心差异 ### 端到端优化架构 传统推理框架往往只关注模型执行的某个环节,而

gitblog_00025的博客 496

Adlik性能优化实战:提升深度学习推理速度的10个技巧

Adlik是一款强大的深度学习推理加速工具包,能够显著提升模型部署效率。本文将分享10个实用技巧,帮助你充分发挥Adlik的性能优势,实现更快的推理速度和更低的延迟。 ## 1. 选择合适的推理引擎 Adlik提供了多种推理引擎支持,包括TensorFlow、OpenVINO和TensorRT等。不同引擎在不同硬件平台上表现各异,选择最适合你硬件环境的引擎是性能优化的第一步。 [![Adli

gitblog_00509的博客 319

Adlik最新特性解析:v0.5.0版本带来了哪些革命性改进?

Adlik作为一款深度学习推理加速工具包,一直致力于为开发者提供高效、灵活的模型部署解决方案。v0.5.0版本的发布,更是在性能优化、多框架支持和部署灵活性等方面带来了诸多突破性改进,让深度学习模型的推理部署变得前所未有的简单高效。 ## 全新架构设计:三大部署环境无缝支持 🚀 Adlik v0.5.0采用了全新的架构设计,能够完美支持云、边缘和设备端三大部署环境,满足不同场景下的推理需求。

gitblog_00928的博客 428

Adlik如何实现与燧原芯片的对接?

引言Adlik 1.0 版本,加入了与燧原科技合作的成果,增加了对燧原 i20 芯片的支持,该芯片是燧原科技发布的基于邃思 2.5 芯片打造的面向数据中心的第二代人工智能推理加速卡,具有高性能高能效、模型覆盖面广、易部署易运维等特点,可广泛应用于计算机视觉、语音识别与合成、自然语言处理、搜索与推荐等推理场景。该芯片使用推理引擎TopsInference为深度学习应用提供低延迟、高吞吐率的推理部署。...

LF_AI的博客 545
上一篇: Tiramisu:一种基于Polyheral的深度学习模型编译器
下一篇: 神经网络模型量化综述(上)
Linux基金会AI&Data基金会
博客等级 码龄6年 103粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值