markdown画图语法
Markdown工具和资料参考,包括时序图,流程图,类图,饼图,状态机等
常用linux命令
常用linux命令,如查看进程状态,进程执行路径
comfyui使用
安装
1git clone https://gitcode.com/comfyanonymous/ComfyUI.git
设置其中的torch==2.0.1
1pip install -r requirement.txt
启动
设置sd模型路径
12345# comfyui项目目录下cp extra_model_paths.yaml.example extra_model_paths.yaml# 编辑extra_model_paths.yaml,修改a111: base_path: /root/stable-diffusion-webui/
设置启动脚本
12345678netstat -nap|grep 8188|awk '{print $7}'|awk -F'/' '{print $1}'|xargs kill -9echo "kill comfyui finish!"conda init bashconda activate comfyuiecho " ...
transformer详解
transformer详解
一、transformer简介
Transformer最早由Ashish Vaswani等人在论文<>[1]中提出,是一个基于注意力机制的网络主干结构,如下图,左边是编码器,右边是解码器
Transformer的意义体现在它的长距离依赖关系处理和并行计算,而这两点都离不开其提出的自注意力机制。
首先,Transformer引入的自注意力机制能够有效捕捉序列信息中长距离依赖关系,相比于以往的RNNs,它在处理长序列时的表现更好。
而自注意力机制的另一个特点时允许模型并行计算,无需RNN一样t步骤的计算必须依赖t-1步骤的结果,因此Transformer结构让模型的计算效率更高,加速训练和推理速度。
二、什么是自注意力机制
传统的Attention机制在一般任务的Encoder-Decoder model中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素Query和Source中的所有元素之间。简单的讲就是At ...
跳表和B+树
跳表: 通过对链表抽出索引层,以实现二分查找,从而可以快速定位节点位置,提示查找效率:
当原始链表有n个结点,则索引的层数为log(n)-1,在每一层的访问次数是常量,因此查找结点的平均时间复杂度为O(logn)。
增加了索引层,空间开销变大,相当于是以空间换时间
一般来说B+树是由多个页组成的多级层级结构,每个页16Kb,对于主键索引来说,叶子节点存放用户完整行数据,非叶子节点存放索引信息(索引列和页号)。每个数据页内部,通过页目录实现二分查找
B+ tree也是利用了空间换时间的方式,同时利用索引层可以存放大量索引这一特点,使得B+ tree整体看上去更矮更胖,即定位记录需要的IO次数更少,每一层存放的数据量更多。
为什么Innodb选择B+ tree而不是跳表
B+ tree是多叉树结构,每个结点都是一个16k的数据页,能存放较多的索引信息,所以扇出很高。三层左右就可以存储2kw左右的数据。也就是说查询一次数据,如果这些数据页都在磁盘里,那么最多需要查询三次磁盘IO。
跳表是链表结构,一个结点存放一条数据,如果底层需要存储2kw数据,且每次查询都能达到二分效果,2kw大概需要2的 ...
sd webui instantid使用
instantid
视频教程
https://www.bilibili.com/video/BV1Rm41197SY/?vd_source=cc6538fc8ca9d598576026e002e98982
sdxl模型:
sd_xl_base_1.0
XXMix_9realisticSDXL: https://civitai.com/models/124421?modelVersionId=163192
提示词: girl, realistic,detailed
反向提示词: mustache
(worst quality, low quality, illustration, 3d, 2d, painting, cartoons, sketch), tooth, open mouth,bad hand,bad fingers
nsfw, paintings, sketches, (worst quality:2), (low quality:2),lowers, normal quality,monochrome, grayscale, logo, word, character
c ...
faiss使用
faiss总览
https://zhuanlan.zhihu.com/p/595249861
Faiss的全称是Facebook AI Similarity Search。这是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法
Faiss中的稠密向量各种索引都是基于 Index实现的,主要的索引方法包括: IndexFlatL2、IndexFlatIP、IndexHNSWFlat、IndexIVFFlat、IndexLSH、IndexScalarQuantizer、IndexPQ、IndexIVFScalarQuantizer、IndexIVFPQ、IndexIVFPQR等。
精确K近邻算法有KD-tree,更多地是近似最近邻ANN(Approximate Nearest Neighbor)算法,如各种KD-tree的变种、Hierarchical K-means Tree及其变种、局部敏感哈希LSH(Local Sensitive Hash)的各种具现(如Google提出的海量文本去重算法SimHash)。
faiss索引方法介绍
1.精确查找:IndexFlatL2 ...
hnswlib向量索引
hnswlib向量索引
nsw简介
六度分离理论,Stanley Milgram计算信函平均到达的节点为5个,也就是我们和一个陌生人建立连接只需要6步。
Stanley Milgram基于他的实验提出了著名的六度分离理论,这个理论指出:
现实世界中的短路径是普遍存在的。
人们可以有效地找到并且利用这些短路径。
在小世界网络中,可以把点与点之间的关系可以分为两种:
同质性:同质性也就是相似的点会聚集到一起,相互连接具有邻接边。
弱连接:弱连接是指从每一个节点上,会有一些随机的边随机连接到网络中的节点上,这些节点是随机均匀的。
在NSW算法中通过构建一个小世界网络,希望通过黑色相似的近邻边来检索最近邻节点, 通过红色长边(高速公路)来实现不同类节点之间的快速检索。
nsw图构建
基于NSW的原理,我们希望NSW的局部节点之间的在距离上具有同质性(也就是近邻节点能够相互连接)。从而使得当我们检索 到一个近邻节点时,其大部分近邻节点都是近邻节点。同时也希望保留一些随机边,能够在不同区域之间快速跳转
NSW节点的插入
构建图的时候,理论上来说我们对所有的点做Delaunay三角剖分, ...
互联网官话
好赌的爸 生病的妈 上学的弟弟 憔悴的她 我不照顾她 谁照顾她。
GPU优化
MNN优化
NC4HW4
现在有一条指令处理4组数据的能力, 比如x86结构的sse指令,arm的neon指令.以及GPGPU的OpenGL和OpenCL,单次处理RGBA四组数据. 如果继续使用nchw内存排布的话, 是这样的.
根据按行处理特点, 对于Feature和kernel的宽不是4倍数进行处理, 会出现错误. 图中的kernel很明显以已经到了第二行的值.
那么有没有方法在按行处理的思想上, 一次处理4个数,而不受影响.答案是有的, 即NC4HW4.即把前4个通道合并在一个通道上, 依次类推, 在通道数不够4的情况下进行补0.
进行NC4HW4重排后,可以充分利用cpu指令集的特性,实现对卷积等操作进行加速。同时可以较少cache miss.
单指令处理4组数据(SIMD)
NC4HW4数据排布: https://no5-aaron-wu.github.io/2021/11/14/AI-Algorithm-2-NC4HW4/
量化
将模型参数通过一个函数映射到0-255或者-127-128
使用int(2-8)再采用100条数据拟合一下
pytorch量化工作流程详解
...