自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴建明wujianming_110117

吴建明专业博客wujianming_110117

  • 博客(50)
  • 问答 (8)
  • 收藏
  • 关注

原创 特征提取,转换和选择

特征提取,转换和选择Extracting, transforming and selecting featuresThis section covers algorithms for working with features, roughly divided into these groups:• Extraction: Extracting features from “raw” data• Transformation: Scaling, converting, or modifying fe

2021-03-31 06:17:53 1035

原创 聚类Clustering

聚类ClusteringThis page describes clustering algorithms in MLlib. The guide for clustering in the RDD-based API also has relevant information about these algorithms. 本文描述MLlib中的聚类算法。基于RDD-API中的聚类指南提供了有关这些算法的相关信息。Table of Contents• K-meanso Input Columns

2021-03-30 06:14:02 344

原创 降维-基于RDD的API

降维-基于RDD的API• Singular value decomposition (SVD)o Performanceo SVD Example• Principal component analysis (PCA)Dimensionality reduction is the process of reducing the number of variables under consideration. It can be used to extract latent features fr

2021-03-29 05:55:38 187

原创 GraphX编程指南

GraphX编程指南• 概述• 入门• 属性图o 属性图示例• 图算子o 算子摘要列表o 属性算子o 结构化算子o Join算子o 最近邻聚集 汇总消息(aggregateMessages) Map Reduce三元组转换指南(旧版) 计算度信息 收集邻域o 缓存和取消缓存• Pregel API• 图构建器• 顶点和边缘RDDo 顶点RDDo 边缘RDD• 优化表示• 图算法o Page页排名o 连接的组件o 三角计数• 例子• Overvie

2021-03-28 08:29:22 509

原创 GPU自动调度卷积层

GPU自动调度卷积层本文对GPU使用自动调度程序。与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板。用户只需要编写计算声明,无需任何调度命令或模板。自动调度程序可以自动生成一个较大的搜索空间,在该空间中找到良好的调度。本文以卷积层为例。本文无法在Windows或最新版本的macOS上运行。要使其运行,需要将本文的内容包装在一个if name == “main”:块中。import osimport numpy as npimport tvmfrom tvm

2021-03-28 07:16:09 237

原创 TVM部署预定义模型

TVM部署预定义模型本文通过深度学习框架量化的模型加载到TVM中。预量化的模型导入是在TVM中提供的量化支持之一。本文演示如何加载和运行由PyTorch,MXNet和TFLite量化的模型。加载后,可以在任何TVM支持的硬件上运行已编译的量化模型。首先,必要输入from PIL import Imageimport numpy as npimport torchfrom torchvision.models.quantization import mobilenet as qmobilenet

2021-03-27 06:26:41 979

原创 Relay外部库使用

Relay外部库使用本文介绍如何将cuDNN或cuBLAS等外部库与Relay一起使用。Relay内部使用TVM生成目标特定的代码。例如,使用cuda后端,TVM为用户提供的网络中的所有层生成cuda内核。有时将各种供应商开发的外部库合并到Relay中也很有帮助。幸运的是,TVM具有透明地调用这些库的机制。对于Relay用户,要做的只是适当地设置目标字符串。在可以使用Relay的外部库之前,TVM必须与要使用的库一起构建。例如,要使用cuDNN,需要启用cmake / config.cmake中的US

2021-03-27 06:06:17 383

原创 ARM CPU自动调度神经网络

ARM CPU自动调度神经网络对特定设备和工作负载进行自动调度,对于获得最佳性能至关重要。通过RPC使用自动调度器为ARM CPU调度整个神经网络。为了自动调度神经网络,将网络划分为小的子图,进行独立调度。每个子图被视为一个搜索任务。任务调度程序对时间进行分片,为这些任务动态分配时间资源。任务调度程序预测每个任务对端到端执行时间的影响,确定最大程度地减少执行时间的任务的优先级。对于每个子图,使用compute声明tvm/python/topi,获取张量表达式形式的计算DAG。使用自动调度器来构造此DA

2021-03-27 05:49:33 555

原创 TVM Pass IR如何使用

TVM Pass IR如何使用随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手。引入了一个基础结构来管理优化过程,并应用于TVM堆栈中IR的不同层。Relay / tir程序的优化可以以各种粒度应用,即分别使用tvm.relay.transform.FunctionPass/ tvm.tir.transform.PrimFuncPass和的功能级别和模块级别tvm.transform.ModulePass。或者,用户可以依靠在tvm.transform.Sequential

2021-03-26 06:07:19 533

原创 自定义pass编写

自定义pass编写TVM是一个框架,抽象了机器学习加速器的异质性。有时,用户可能需要自定义一些分析和IR转换,使TVM适应自己的专用硬件。本文可帮助用户在TVM中编写自定义pass。先决条件在阅读本文之前,假设读者已经熟悉以下主题:• 在TVM中编写算法并进行调度。否则,请参见示例教程,例如 如何在CPU上优化GEMM。• HalideIR的基本结构。否则,请参阅HalideIR/src/ir/IR.h以了解定义了IR节点的哪些属性。• 访客设计模式。否则,请检查 Python AST模块以查看

2021-03-26 05:48:07 414

原创 ARM CPU神经网络自动调度

ARM CPU神经网络自动调度对特定设备和工作负载进行自动调整对于获得最佳性能至关重要。这是一个有关如何通过RPC使用自动调度器为ARM CPU调整整个神经网络的教程。为了自动调整神经网络,将网络划分为小的子图,对其进行独立调整。每个子图被视为一个搜索任务。任务调度程序可以对时间进行分片,为这些任务动态分配时间资源。任务调度程序可以预测每个任务对端到端执行时间的影响,优先安排可以最大程度地减少执行时间的任务。对于每个子图,使用compute声明tvm/python/topi,获取张量表达式形式的计算D

2021-03-25 06:08:26 450

原创 编写可调模板并使用自动调谐器

编写可调模板并使用自动调谐器这是TVM中自动调整模块的入门资料。自动调整有两个步骤。第一步是定义搜索空间。第二步是运行搜索算法来探索这个空间。在本文中,可以学习如何在TVM中执行这两个步骤。整个工作流程由矩阵乘法示例说明。注意,本文无法在Windows或最新版本的macOS上运行。要使其运行,需要将本文的内容包装在一个if name == “main”:块中。安装依赖项要在TVM中使用autotvm软件包,需要安装一些额外的依赖项。可以跳过此步骤(安装xgboost),不需要XGBoost(如果使

2021-03-24 05:54:40 303

原创 Boosted Trees原理简介

Boosted Trees原理简介XGBoost代表“极端梯度增强”,其中术语“梯度增强”源自Friedman撰写的论文《贪婪函数近似:梯度增强机》。该梯度gradient boosted trees已经有一段时间了,而且有很多关于该主题的材料。本文将使用监督学习的元素,以自成体系和有原则的方式解释增强树。这种解释更加简洁,正式,并激发了XGBoost中使用的模型公式。监督学习的要素XGBoost用于有监督的学习问题,在其中使用训练数据(具有多个功能) xi 预测目标变量 yi。在具体学习trees

2021-03-23 06:31:01 738

原创 XGBoost4J-Spark基本原理

XGBoost4J-Spark基本原理XGBoost4J-Spark是一个项目,旨在通过使XGBoost适应Apache Spark的MLLIB框架,无缝集成XGBoost和Apache Spark。通过集成,用户不仅可以使用XGBoost的高性能算法实现,还可以利用Spark强大的数据处理引擎实现以下功能:• 特征工程:特征提取,变换,降维和选择等。• 管道:构造,评估和调整ML管道• 持久性:持久化并加载机器学习模型,甚至整个管道本文将介绍使用XGBoost4J-Spark构建机器学习管道的端

2021-03-22 06:04:19 1200 1

原创 MLIR: Infrastructure架构

MLIR: Infrastructure

2021-03-21 15:19:11 248

原创 MLIR(Multi-Level Intermediate Representation Compiler)架构 Infrastructure

MLIR(Multi-Level Intermediate Representation Compiler)架构 InfrastructureOverview• Context• About MLIR• A few users of MLIR• Provocative (?) proposal for Clang and LLVM• ConclusionWhat is wrong with existing compilers?

2021-03-21 07:01:42 292

原创 MLIR Python绑定

MLIR Python绑定当前状态:正在开发中,默认情况下未启用build前提条件• 相对较新的Python3安装• pybind11 必须已安装,可被CMake定位(如果通过进行安装,则会自动检测到 python -m pip install pybind11)。注意:所需的最低版本::2.6.0。CMake的变量• MLIR_BINDINGS_PYTHON_ENABLED:BOOL启用构建Python绑定的功能。默认为OFF。• Python3_EXECUTABLE:STRING指定

2021-03-20 06:30:54 663

原创 Rust和C / C ++的跨语言链接时间优化LTO

Rust和C / C ++的跨语言链接时间优化LTO链接时间优化(LTO)是LLVM实施整个程序优化的方法。跨语言LTO是Rust编译器中的一项新功能,使LLVM的链接时间优化可以在混合的C / C ++ / Rust代码库中执行。也是一项功能,完美结合了Rust编程语言和LLVM编译器平台的两个优点:• Rust缺乏语言运行时和底层访问能力,几乎具有与现有C / C ++代码库无缝集成的独特能力,并且• 作为语言不可知的基础,LLVM提供了一个通用基础,在该基础上不再需要编写特定代码的源语言。那么

2021-03-19 06:26:18 769

原创 阿里中台业务架构

阿里中台业务架构很多企业都将促进业务与科技的深度融合作为发展战略,也都想学学阿里的中台战略,其实,除了中台战略之外,基于企业级业务架构设计来实现组件化开发也是企业数字化转型的优选路径,是弥合业务与技术之间“数字鸿沟”的有效手段。未来,业务不再仅仅是业务,技术也不再仅仅是技术,谁先实现思维方式的改进,谁能更好地联动整个企业,谁就能赢得竞争的先手,而业务架构能力可以在这方面发挥关键作用,而且是超越中台之上的作用。阿里中台阿里的中台是个累积的过程,从 2009 年建立共享事业部开始,几经曲折,但是一直在积累

2021-03-19 05:38:21 485

原创 Dockerfile构建实践

Dockerfile构建实践本文介绍了用于构建有效图像的推荐最佳实践和方法。Docker通过从一个Dockerfile文本文件中读取指令来自动构建映像,该文本文件按顺序包含构建给定映像所需的所有命令。ADockerfile遵循特定的格式和指令集,可以在Dockerfile参考中找到该指令。Docker映像由只读层组成,每个只读层代表一个Dockerfile指令。这些层是堆叠的,每个层都是与上一层相比变化的增量。考虑一下Dockerfile:FROM ubuntu:18.04COPY . /app

2021-03-18 06:17:57 1376

原创 Docker基本原理概述

Docker基本原理概述Docker是一个用于开发,交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付,测试和部署代码的方法,可以显着减少编写代码和在生产环境中运行代码之间的延迟。Docker平台Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。隔离和安全性可以在给定主机上同时运行多个容器。容器是轻量级的,包含运行该应用程序所需的所有内容,因

2021-03-18 05:52:26 530

原创 台积电5nm光刻技术

台积电5nm光刻技术在IEEE IEDM会议上,台积电发表了一篇论文,概述了其5nm工艺的初步成果。对于目前使用N7或N7P工艺的客户来说,下一步将会采用此工艺,因为这两种工艺共享了一些设计规则。新的5nm制程使用了台积电的第五代FinFET技术,在7纳米基础上提供一个完整的工艺节点,并使用EUV极紫外光刻技术扩展到10多个光刻层,与7纳米相比减少了生产总步骤。关键数字如果只是来了解关键数字的,那答案就在这里。台积电表示,5nm EUV工艺使得晶体管密度增加到大致1.84倍,能效提升15%,功耗减少

2021-03-17 06:02:00 1229

原创 Halide应用开发

Halide应用开发基本原理1.1、介绍随着人工智能的普及,深度学习网络的不断涌现,为了让各硬件(CPU, GPU, NPU,…)能够支持深度学习应用,各硬件芯片需要软件库去支持高性能的深度学习张量运算。目前,这些高性能计算库主要由资深HPC工程师(高性能计算优化工程师)进行开发,为了加快开发进程,缩短深度学习应用落地周期,自动化算子优化是一个趋势。AutoKernel是由OPEN AI LAB提出的高性能算子自动优化工具,可以自动优化调度策略、生成底层优化代码,大幅减少各硬件芯片算子开发成本

2021-03-16 06:11:56 361

原创 Octave Convolution卷积

Octave Convolution卷积MXNet implementation 实现for:Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave ConvolutionImageNetAblation• Loss: Softmax• Learning rate: Cosine (warm-up: 5 epochs, lr: 0.4)• MXNet API: Symbol

2021-03-15 06:08:42 378

原创 Deformable 可变形的DETR

Deformable 可变形的DETRThis repository is an official implementation of the paper Deformable DETR: Deformable Transformers for End-to-End Object Detection.该存储库是论文《可变形DETR:用于端到端对象检测的可变形变压器》的正式实现。https://github.com/fundamentalvision/deformable-detrIntroducti

2021-03-15 05:56:29 1747

原创 NVIDIA GPU自动调度神经网络

NVIDIA GPU自动调度神经网络对特定设备和工作负载进行自动调整对于获得最佳性能至关重要。这是有关如何使用自动调度器为NVIDIA GPU调整整个神经网络。为了自动调整神经网络,将网络划分为小的子图,并对其进行独立调整。每个子图被视为一个搜索任务。任务调度程序可以对时间进行分片,并为这些任务动态分配时间资源。任务调度程序可以预测每个任务对端到端执行时间的影响,确定可以最大程度地减少执行时间的任务的优先级。对于每个子图,使用compute声明tvm/python/topi获取张量表达式形式的计算DA

2021-03-14 20:50:53 344

原创 如何使用TVM Pass Relay

如何使用TVM Pass红外线随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手。引入了一个基础结构来管理优化过程,将其应用于TVM堆栈中IR的不同层。Relay / tir程序的优化可以以各种粒度应用,分别使用tvm.relay.transform.FunctionPass/ tvm.tir.transform.PrimFuncPass和的功能级别和模块级别tvm.transform.ModulePass 。用户可以依靠在tvm.transform.Sequential r

2021-03-14 14:59:20 351

原创 VTA硬件

VTA硬件提供了VTA硬件设计的自上而下的概述。本硬件设计涵盖两个级别的VTA硬件:• VTA设计及其ISA硬件-软件接口的体系结构概述。• VTA硬件模块的微体系结构概述以及计算核心的微代码规范。VTA概述VTA是为快速,高效的密集线性代数而构建的通用深度学习加速器。VTA集成了一个简单的类似RISC的处理器,可以对1或2级张量寄存器执行密集的线性代数运算。另外,该设计采用解耦访问执行以隐藏内存访问延迟。在更广泛的范围内,VTA可以用作模板的深度学习加速器设计,以进行完整的堆栈优化,从而将通用

2021-03-14 14:17:51 679

原创 TensorFlow Frontend前端

TensorFlow Frontend前端TensorFlow前端有助于将TensorFlow模型导入TVM。Supported versions:• 1.12 and belowTested models:• Inception (V1/V2/V3/V4)• Resnet (All)• Mobilenet (V1/V2 All)• Vgg (16/19)• BERT (Base/3-layer)Preparing a Model for Inference准备推理模型Remove U

2021-03-14 13:45:22 291

原创 向Relay添加算子

向Relay添加算子为了在Relay IR中使用TVM算子,需要在Relay中注册算子,以确保将其集成到Relay的类型系统中。注册算子需要三个步骤:• 使用RELAY_REGISTER_OPC ++中的宏注册算子的Arity和类型信息• 定义一个C ++函数为算子生成一个调用节点,并为该函数注册一个Python API挂钩• 将上述Python API挂钩包装在更整洁的界面中该文件src/relay/op/tensor/binary.cc提供了前两个步骤的python/tvm/relay/op

2021-03-14 08:28:39 360

原创 TVM自定义数据类型

TVM自定义数据类型本文将介绍“自定义数据类型”框架,该框架可在TVM中使用自定义数据类型。介绍在设计加速器时,关键是如何近似地表示硬件中的实数。这个问题具有长期的行业标准解决方案:IEEE 754浮点标准。然而,当试图通过构建高度专业化的设计来最大限度地利用硬件时,使用通用IEEE 754浮点数是否有意义?知道工作负载的数字要求,是否可以构建更小,更快或更省电的数据类型?答案是肯定的!研究人员已经开始在学术和工业加速器设计中尝试新的数据类型。例如,Google的Tensor处理单元(TPU)使用bf

2021-03-14 07:45:17 237

原创 TinyML-TVM如何驯服TinyML

TinyML-TVM如何驯服TinyML低成本,以人工智能为动力的消费类设备的激增,导致机器学习研究人员和从业人员对“裸机”(低功耗,通常没有操作系统)设备产生了广泛的兴趣。尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化模型的挑战非常艰巨,通常需要手动优化设备特定的库。对于那些没有Linux支持的平台,不存在用于部署模型的可扩展解决方案。因此,为了定位新设备,开发人员必须实现一次性的定制软件堆栈,以管理系统资源和调度模型执行。机器学习软件的手动优化不是裸机设备领域独有的。实际上,对于

2021-03-13 06:21:00 381

原创 TVM自动调度器

TVM自动调度器随着模型大小,算子多样性和硬件异构性的不断增长,优化深度神经网络的执行速度非常困难。从计算的角度来看,深度神经网络只是张量计算的一层又一层。这些张量计算(例如matmul和conv2d)可以通过数学表达式轻松描述。在现代硬件上为其提供高性能的实现可能会非常具有挑战性。必须应用各种低级优化,利用特殊的硬件内在函数来实现高性能。建立线性代数和神经网络加速库(如CuBLAS,CuDNN,oneMKL和oneDNN)需要大量的工程工作。如果可以编写数学表达式,将其神奇地转化为有效的代码实现,那么

2021-03-12 06:15:46 598

原创 将代码生成器带入TVM

将代码生成器带入TVM为了使数据科学家不必担心开发新模型时的性能,硬件后端提供程序(例如Intel,NVIDIA,ARM等)可以提供诸如cuBLAS或cuDNN之类的内核库以及许多常用的深度学习内核,或者提供诸如此类的框架。例如带有图形引擎的DNNL或TensorRT,使用户以某种方式描述其模型以实现高性能。此外,新兴的深度学习加速器还具有自己的编译器,内核库或运行时runtime框架。当用户尝试在新的内核库或设备上工作时,必须学习新的编程接口。结果,对统一编程接口的需求变得越来越重要,使所有用户和硬件

2021-03-11 06:18:13 461

原创 CUDA上的量化深度学习模型的自动化优化

CUDA上的量化深度学习模型的自动化优化深度学习已成功应用于各种任务。在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要。网络量化是加速深度学习模型的有效方法。在量化模型中,数据和模型参数都用诸如int8和的低精度数据类型表示float16。降低的数据带宽减少了推理时间和存储器/存储需求,以及功耗。同时,在适当的量化方案下,可以最小化量化模型的精度下降。量化模型特别适合研究人员和开发人员,使大型模型适合在各种设备(例如GPU,CPU和移动设备)上部署。以前,通常通过手工微内核针对不同的工作量

2021-03-10 06:04:07 619

原创 硬件平台上深度学习自动内核优化

硬件平台上深度学习自动内核优化对于AI开发人员来说,在各种硬件平台上优化深度神经网络的性能仍然是一个难题。在系统支持方面,在这里面临着许多问题:将训练有素的模型从多个前端(例如Tensorflow,ONNX,MXNet)部署到多个硬件平台(例如CPU,GPU,加速器)。此问题最关键的性能部分,为不断增长的模型体系结构和硬件平台获得高性能的内核实现。为了应对这一挑战,TVM采用了全栈编译器方法。TVM结合了代码生成和自动程序优化功能,以生成可与经过大量手动优化的库相媲美的内核,从而在包括ARM CPU,I

2021-03-09 06:18:45 330

原创 DLPack构建跨框架的深度学习编译器

DLPack构建跨框架的深度学习编译器Tensorflow,PyTorch和ApacheMxNet等深度学习框架提供了一个功能强大的工具包,可用于快速进行原型设计和部署深度学习模型。易用性通常是以碎片为代价的:孤立地使用每个框架是很容易的。垂直集成已使常见用例的开发流程简化了,但是冒险走过的路可能很棘手。一个支持不佳的方案是将张量直接从一个框架传递到内存中的另一个框架,而没有任何数据重复或复制。支持这种用例使用户能够将管道串联在一起,其中某些算子在一个框架中得到比在另一个框架中得到更好的支持(或更快速)

2021-03-09 05:49:46 356

原创 TensorFlow+TVM优化NMT神经机器翻译

TensorFlow+TVM优化NMT神经机器翻译背景神经机器翻译(NMT)是一种自动化的端到端方法,具有克服传统基于短语的翻译系统中的弱点的潜力。本文为全球电子商务部署NMT服务。目前,将Transformer用作NMT系统的主要骨干,对基于经典RNN / LSTM模型的同等(甚至更高)精度进行高效的离线训练更为友好。尽管Transformer在离线训练阶段很友好,打破了跨时间步长的依赖性,但在线推理效率不高。在生产环境中,已经发现,初始版本的Transformer的推理速度约为1.5倍至2倍比LS

2021-03-08 06:25:10 816

原创 TVM在ARM GPU上优化移动深度学习

TVM在ARM GPU上优化移动深度学习随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长。与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率。但是,大多数现有的深度学习框架都不能很好地支持移动GPU。困难在于移动GPU架构和台式机GPU架构之间的差异。这意味着在移动GPU上进行优化需要付出特殊的努力。繁琐的额外工作最终导致大多数深度学习框架中对移动GPU的支持不佳。TVM通过引入统一的IR堆栈解决了部署不同硬件的困难,通过该IR堆栈可以轻松完成针对不同硬件

2021-03-07 08:24:48 709

原创 TVM将深度学习模型编译为WebGL

TVM将深度学习模型编译为WebGLTVM带有全新的OpenGL / WebGL后端!OpenGL / WebGL后端TVM已经瞄准了涵盖各种平台的大量后端:CPU,GPU,移动设备等。这次,添加了另一个后端:OpenGL / WebGL。OpenGL / WebGL使能够在未安装CUDA的环境中利用GPU。在浏览器中使用GPU的方法。后端允许以3种不同的方式使用OpenGL / WebGL:• 本地OpenGL:可以将深度学习模型编译为OpenGL,完全使用Python在本地计算机上直接运行。

2021-03-07 07:04:49 252

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除