个人学习笔记

各NN框架的MLIR

24 分钟阅读

ONNX MLIR ONNX MLIR 官网介绍:http://onnx.ai/onnx-mlir 论文:Compiling ONNX Neural Network Models Using MLIR github地址:onnx mlir docker下载:docker pull onnxmlirczar/onnx-mlir:amd64 转换工具 ## EmitONNXBasic 会生成.mlir文件(含文本形式的weight)和.tmp文件(不含weight) docker/onnx-mlir.py --EmitONNXBasic xxx.onnx

MLIR技术细节整理

58 分钟阅读

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[h_a, w_a] $ resize to $ B[h_b, w_b] $举例。

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(\frac{QK^T}{\sqrt{d_k}})V $ 描述:查询(Query)到键值(Key-Value)的映射

ONNX

5 分钟阅读

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

常见神经网络特征

2 分钟阅读

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

统计距离

5 分钟阅读

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

浮点型存储格式

1 分钟阅读

FP32 FP32 float共32bit:1bit符号位,8bit指数位,23bit底数位。如下表示: S E8 M23 浮点与二进制转换公式如下: $ Y = (-1)^{s} \times 2^{e} \times m,其中m = 1.M23,e = E8 - 127 $