个人学习笔记

MLIR技术细节整理

59 分钟阅读

MLIR 编译方法 MLIR MLIR: Multi-Level Intermediate Representation,主要设计者来自Google的Chris Lattner 论文MLIR: A Compiler Infrastructure for the End of Moore’s Law 官网介绍:https://mlir.llvm.org 编译方法 git clone https://github.com/llvm/llvm-project.git mkdir llvm-project/build cd llvm-project/build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS=mlir \ -DLLVM_BUILD_EXAMPLES=ON \ -DLLVM_TARGETS_TO_BUILD="X86;NVPTX;AMDGPU" \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ # -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_LLD=ON cmake --build . --target check-mlir

LLVM积累

10 分钟阅读

RTTI 官网介绍:llvm github源码:llvm-project RTTI 阅读:How to set up LLVM-style RTTI for your class hierarchy llvm有这些RTTI接口可以使用isa<>、dyn_cast<>、cast<>等等。 使用这些接口,父类和子列有这些要求: 父类:定义Kind枚举,且构造函数用Kind做入参 子列:构造函数指定kind,且定义classof接口 使用时如果入参可能是空指针,则需要调用dyn_cast_or_null<>转换。

Pytorch

3 分钟阅读

概述 概述 帮助文档 pip install torch, pip install torchvision, pip install onnx, pip install onnxruntime

Resize

5 分钟阅读

概述 概述 ONNX操作描述:Resize 参考代码:resize.py 坐标转换模式: half_pixel、align_corners、asymmetric、pytorch_half_pixel、tf_crop_and_resize 插值模式: linear、nearest、cubic 本文以 A[ha,wa] resize to B[hb,wb]举例。

YOLO网络

5 分钟阅读

概述 概述 官网:YOLO: Real-Time Object Detection 论文地址:YOLO v1 2016 、YOLO v2 2017、YOLO v3 2018、YOLO v4 2020、YOLO v5 待更新

BERT

3 分钟阅读

概述 概述 BERT: Bidirectional Encoder Representation from Transformers 论文地址[2019]:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 对应github代码:github-bert BERT分为 两个阶段: Pre-training:利用无标记语料预训练模型 Fine-tuning: 使用预训练的模型,对已经标记的语料根据实际的任务进行训练

Transformer

4 分钟阅读

概述 概述 论文地址[2017]:Attention Is All You Need 核心运算:Attention(Q,K,V)=softmax(QKTdk)V 描述:查询(Query)到键值(Key-Value)的映射

ONNX

5 分钟阅读

概述 概述 ONNX,Open Neural Network Exchange。由于神经网络架构很多,如caffe、tensorflow、pytorch、mxnet等等,模型结构各式各样,onnx旨在将模型结构统一起来。 官方代码:ONNX 算子操作:Operators 环境要求:pip install onnx onnxruntime onnx-simplifier netron

常见神经网络特征

2 分钟阅读

VGG16 VGG16 13层卷积+3层全连接,穿插pooling和relu 其中卷积的kernel均采用3x3

统计距离

5 分钟阅读

熵 信息量 信息熵 熵 Entropy, [ˈentrəpi], 熵,无序状态 信息量 信息不确定性越大,信息量越大。 假定X是随机事件集合,其中 p(x0) 表示事件x0的概率,那么事件x0的信息量定义为 h(x0)=log2p(x0)。 信息熵 [H(X) = -\sum^{n}_{i=1}{p(x_i)log_2p(x_i)}] 信息熵用来衡量事物的不确定性,信息熵越大,事物越具有不确定性。

浮点型存储格式

2 分钟阅读

FP32 FP32 float共32bit:1bit符号位,8bit指数位,23bit底数位。如下表示: S E8 M23 浮点与二进制转换公式如下: Y=(1)s×2e×mm=1.M23e=E8127

RNN/LSTM/GRU

10 分钟阅读

RNN RNN RNN:Recurrent Neural Networks,循环神经网络,能够应用于空间或时间先后相关的场景,比如文字解析、语音识别。 RNN模型结构简单描述,如下图: 其中X0、X1、……、Xt,可以理解成多个输入,或者对单个输入拆分成的多个输入,比如一张图片的多个字符拆分、语音的拆分等等;h0、h1、…、ht可以理解成多个输出,通常也可能最终被concat到一起,做为一个输入。 上图是单向的,也就是h1会受h0的影响,h2会受h1、h0的影响,…,但反过来不会。RNN网络也会有双向的情况,使前后互相影响。