opencl-tips 为什么从 CPU 上拷贝到 Image 里使用的是【CPU -> Buffer -> Image】而不是【CPU -> Image】?因为 Image 一般都是用 RGBA 格式,需要填充为 4 通道,以及长宽 4 对齐等需求。如果在 CPU 上做,需要对内存进行补边再拷贝到 Image 里;不如【CPU -> Buffer -> Image】 的兼容性更好。前者不用 2024-11-21
将 ViT 的第一个卷积层转为 MatMul,要求步长和卷积核相等 ViT 卷积层为了将输入的图片转为 patch,然后送入到 Transformer 中,ViT 第一个卷积的步长和卷积核大小是相等的,都是 16。如下图所示, 某些框架可能不支持这么大的 Conv 步长,导致无法转换相应模型。 MatMul卷积可以使用 im2col 加 matmul 来实现,但是由于 im2col 可能效率不高,所以一般不使用这个方式。 不过我们注意到 ViT 第一个卷积层里的 2024-11-20
llama.cpp Q 量化方式总结 llama.cpp Q 量化方式总结TheBloke 里有许多不同量化方式的模型,如下: 123456789CapybaraHermes-2.5-Mistral-7B-GGUF | - capybarahemers-2.5-mistral-7b.Q2_K.gguf | - capybarahemers-2.5-mistral-7b.Q3_K_L.gguf | - capybarahemers 2024-10-29 #llama.cpp #LLM
llama2 LLaMa2Transformer IntroductionArchitecturetransformer 最主要的结构就是这张图: 在纯 Encoder 或者纯 Decoder 的架构中,会变成只有左边的 transformer block 的结构,但是区别在于 Multi-Head Attention 是否存在 mask。Encoder-only 架构为了获取每一个 token 的完整上下 2024-10-29 #Transformer #LLaMa2
MNN 自定义算子,以 AnyNet 为例 1. 介绍本文主要介绍如何在 MNN 中添加自定义算子,以 AnyNet 为例。AnyNet 添加了一个自定义算子,虽然可以用 pytorch 表达,并且导出 ONNX 和 MNN,但是节点过多,可视化工具无法很好的展示,因此本文尝试将 AnyNet 中的自定义算子添加到 MNN 中。 自定义 MNN 算子需要先将 pytorch 计算逻辑导出成 ONNX 节点,并且由 MNN 来解释。这需要首先 2024-05-21 #MNN #AnyNet
Cosplay 视频转图片 Cosplay 视频转图片1. 介绍有很多时候 Cosplay 视频里的 Cosplayer 只有几个相同的画面,但是他们还是发出了一个短视频用于展示。我们想要把相同的画面剔除,对每个不同的画面保留一张图片。从信息论的角度来看,大部分 Cosplay 短视频的信息熵很低,只有几张图片是有意义的。这个项目就是为了尝试提取这些有意义的图片。 调研之后发现这是一个类似视频总结(Video Summa 2024-05-17 #cosplay #video summarization #clip
powershell-autocomplete Powershell 自动补全TODO: 编写 ADB 自动补全脚本,能够识别 ADB 设备并补全,类似 zsh 的补全体验 SSH 和 SCP 自动补全远程路径 从 Powershell Gallery 上使用 Install-Module 安装脚本之后,还需要使用 Import-Module 导入模块才能使用,如果希望自动加载,可以添加到 $PROFILE 中。 2024-03-28
opencl-alloc-error OpenCL Image 申请失败问题描述在使用 MNN 部署 ViT 的过程中,出现了这个报错: 1Alloc Image 3 x 49152 error, code:-40 解决方案这个问题是因为这个图像的尺寸超过了本设备 OpenCL 支持的最大尺寸,Adreno 630 的最大尺寸是 16384x16384,所以这个图像的尺寸 3x49152 超过了这个限制。这个尺寸出现的地方在 ViT 2024-03-27 #opencl
Effective STL - 06 - Programming by STL Programming by STL条款43:尽量用算法调用代替手写循环 如果你要做的是算法已经提供了的,或者非常接近于它提供的,调用泛型算法更清晰。 如果循环里要做的事非常简单,但调用算法时却需要使用绑定和适配器或者需要独立的仿函数类,你恐怕还是写循环比较好。 最后,如果你在循环里做的事相当长或相当复杂,天平再次倾向于算法。 条款44:尽量用成员函数代替同名的算法关联容器提供了count、fi 2024-03-17 Effective STL #C++ #STL
Effective STL - 05 - Functor Functor条款38:把仿函数类设计为用于值传递C 中的 qsort 使用的 函数指针 就是指针的拷贝,因此是一个默认的值传递。 因为函数对象以值传递和返回,你的任务就是确保当那么传递(也就是拷贝)时你的函数对象行为良好。这暗示了两个东西。第一,你的函数对象应该很小。否则它们的拷贝会很昂贵。第二,你的函数对象必须单态(也就是,非多态)——它们不能用虚函数。 不是所有的仿函数都是小的、单态的。 2024-03-17 Effective STL #C++ #STL #Functor