自然语言处理
未读KTransformers
KTransformers KTransformers 是一个灵活的、以 Python
为中心的框架,旨在通过高级内核优化和放置/并行策略增强 transformers
KTransformers的Github链接
DeepSeek
V2的Github链接 DeepSeek
V2的论文链接
1. 介绍
KTransformers 的核心是一个用户友好的、基于模板的注入框架。
KTransformers 架构
2. 优化技术
KTransformers采用了多种优化技术,将需要两块80GB显存GPU的 DeepSeek-V2
Q4_k_m 模型运行在21GB显存和136GB内存的台式计算机上。
2.1 MLA 注意力机制
DeepSeek V2 的 MLA
官方开源明确地解压了MLA的压缩表示,并缓存了解压后的键值对。针对此,KTransformers
对DeepSeek V2 的MLA按照原文进行了实现,将解压缩矩阵直接吸收到 q_proj 和
out_proj 权重中,减少了 KV
缓存大小并增加了该算子的算力强度,从而大大优化了 GPU
计算能力的 ...
自然语言处理
未读MInference
通过动态稀疏注意力加速长上下文llm的预填充 原文链接:MInference 1.0: Accelerating
Pre-filling for Long-Context LLMs via Dynamic Sparse Attention
1. 简介
MInference是一种利用空间聚集模式的动态稀疏注意力来加速长序列预填充阶段的方法。
将注意力头分为三种可以用于gpu上的高效稀疏计算类型: A-shape,
Vertical-Slash, Block-Sparse。
采用核感知的最优稀疏模式搜索方法,离线确定每个注意力头的最优模式。
在推理过程中利用快速逼近方法为不同的输入构建动态稀疏掩码,然后应用这些掩码进行稀疏注意力计算。
即只计算注意权值中最重要的部分
局限性
上下文长度较小时,构建动态索引所需的时间会因为注意力计算时间的减小而增大。
当使用较高的稀疏率时,模型性能可能会明显下降。
2. 原理
2.1 稀疏注意力头类型
如图1和2所示,将注意力头分为三种类型。
A-shape:
该模式的注意权重集中在初始令牌和局部窗口,表现出相对较高的稳定性。 ...
自然语言处理
未读Mistral AI
Mistral-7B
采用了分组查询注意力(GQA),显著加快了推理速度,还减少了解码期间的内存需求,允许更高的批处理大小,从而提高吞吐量
结合滑动窗口注意力(SWA)以有效处理任意长度的序列
每个token最多可以关注来自上一层的W个token(注,滑动窗口之外的token仍然影响下一个单词预测)
固定的注意力长度意味着可以使用滚动缓存来限制的缓存大小
Mixtral-8x7B
Mistral-8x7B
FFN从一组 8 个不同的参数组中进行选择
在每一层,对于每个token,路由器网络选择其中的两个组(“专家”)来处理token并通过组合相加得到它们的输出
在各个层中仅有experts部分(FFN)是独立存在的,其余的部分(Attention等)则是各个expert均有共享的
路由(Gating/Router)本质是一个线性层,输入维度为隐层维度hidden_dim、输出维度为expert数num_experts。
自然语言处理
未读T-MAC
CPU上通过查找表进行低比特量化大模型部署 原文链接:CPU Renaissance via Table Lookup
for Low-Bit LLM Deployment on Edge GitHub链接:T-MAC
问题提出
权重量化对于减少 LLM 在设备上的内存占用至关重要。然而,低位 LLM
需要在推理过程中进行低精度权重和高精度激活的混合精度矩阵乘法
(mpGEMM)。现有系统缺乏对 mpGEMM
的原生支持,只能通过去量化权重来实现高精度计算。这种间接的方式可能会导致显着的推理开销。
解决方案
T-MAC Overview
T-MAC简介
一种基于查找表 (LUT)
的方法,将传统的以数据类型为中心的乘法转换为按位表查找,专为
CPU 上的高效低位 LLM(即权重量化 LLM)推理而设计。
直接支持 mpGEMM,无需反量化,简化为查表+加法操作
T-MAC vs general practice for
mpGEMM
两个数的乘法可以转化为一个数乘以另一个数的每一位,然后移位并相加部分积。激活矩阵和权重矩阵之间的
mpGEMM 被分解为激活矩阵和 ...
自然语言处理
未读PowerInfer
PowerInfer
PowerInfer 1.0
PowerInfer 是一款在配备单个消费级 GPU 的个人计算机 (PC)
上运行的高速大型语言模型 (LLM) 推理引擎。PowerInfer 设计的关键在于利用
LLM 推理固有的高局部性 ,其特点是神经元激活呈现幂律分布。
这种分布表明,一小部分神经元(称为热神经元)在输入过程中始终处于激活状态,而大多数神经元(冷神经元)则根据特定输入而变化。PowerInfer
利用这种洞察力设计了 GPU-CPU 混合推理引擎:热激活神经元预加载到 GPU
上以便快速访问,而冷激活神经元则在 CPU 上计算,从而显著减少 GPU
内存需求和 CPU-GPU 数据传输。PowerInfer
进一步集成了自适应预测器和神经元感知稀疏运算符,优化了神经元激活和计算稀疏性的效率。
以局部为中心的设计:利用稀疏激活和“热”/“冷”神经元概念进行高效的 LLM
推理,确保在较低的资源需求下实现较高的速度。
混合 CPU/GPU 利用率:无缝集成 CPU 和 GPU
的内存/计算能力,实现工作负载平衡和处理速度更快。
P ...
自然语言处理
未读PowerInfer
在消费级 GPU 上的快速大语言模型推理 原文链接:PowerInfer: Fast Large Language
Model Serving with a Consumer-grade GPU
1 简介
利用LLM推理中固有的高局部性特性:
一个小子集的神经元(称为热神经元)在各种输入下始终被激活,而大多数神经元(称为冷神经元)则根据特定输入而变化。
PowerInfer利用这一见解设计了一个GPU-CPU混合推理引擎:
将热激活神经元预加载到GPU中以便快速访问,而冷激活神经元则在CPU上进行计算,从而显著减少了GPU内存需求和CPU-GPU数据传输。
集成自适应预测器和神经元感知稀疏算子,优化了神经元激活和计算稀疏性的效率。
自适应:
在DejaVu的基础上自适应两层MLP预测器(X-H-O)中隐藏层H的维度
神经元感知:
预测出激活的神经元,得到要算出这个神经元需要哪一行/列的权重,然后只计算这一行/列的权重
模型越大,优势越明显:
即主要针对的是模型比显存大时不能完全offload到GPU的情况。
1.1 核心
将少数的热神经元分配给GPU,而多 ...
自然语言处理
未读PowerInfer-2
在智能手机上的快速大语言模型推理 原文链接:PowerInfer-2: Fast Large
Language Model Inference on a Smartphone
1 简介
PowerInfer-2是一个为智能手机上大型语言模型(LLM)高速推理而设计的框架,特别适用于大小超过设备内存容量的模型。
1.1 性能提升
PowerInfer-2 是第一个为 TurboSparse-Mixral-47B
模型提供服务的系统,智能手机每秒生成 11.68
个tokens。对于完全在内存中拟合的模型,PowerInfer-2 在保持与 llama.cpp 和
MLC-LLM 相当的推理速度的同时,可以减少大约 40% 的内存使用。
低推理延迟:最大限度地减少预填充阶段(TTFT)和解码阶段(TBT)的推理延迟;
低内存占用:减少推理过程中的内存使用,即使模型大小超过设备内存限制,也能实现LLM的低延迟推理;
灵活性:确保设计能够无缝适应具有不同计算、内存和存储容量的智能手机。
2 概述
2.1 核心
PowerInfer-2 的核心是将 LLM
推理中典 ...
自然语言处理
未读Turbo Sparse
通过最少的激活参数实现 LLM 的最先进性能 原文链接:Turbo Sparse: Achieving LLM SOTA
Performance with Minimal Activated Parameters
1. 简介
提出了一种新的基于drelu的稀疏化方法,在保持性能的同时,将模型稀疏性提高到90%,在推理中实现了2-5倍的加速。
1.1 性能提升
通过将我们的神经元稀疏化方法应用于Mistral和Mixtral模型,每次推理迭代分别只有25亿个和43亿个参数被激活,同时实现了更强大的模型性能。
评估结果表明,这种稀疏性实现了2-5倍的解码加速。在手机上,我们的TurboSparse-Mixtral-47B实现了11
tokens/s的推理速度。
2 概述
2.1 背景
为了解决现有密集模型固有的效率问题,条件计算已经成为一种关键方法,它指的是激活网络中的部分神经元。
混合专家(MoE):
通过在训练前手动设置模型架构上的约束来引入条件计算,例如确定要激活的专家数量。这种技术通过一个称为专家路由的过程,选择性地激活模型的特定部分,以响应特定的输入, ...
A100 vs V100
特性
A100
V100
架构
Ampere (GA100)
Volta (GV100)
CUDA核心数量
6,912
5,120
SM数量
108
80
张量核心数量
640
640
张量核心精度支持
FP64, TF32, FP16, BF16, INT8, INT4
FP32, FP16
张量核心性能
显存容量
40GB / 80GB HBM2e
16GB / 32GB HBM2
显存带宽
1555 GB/s
900 GB/s
NVLink带宽
600 GB/s
300 GB/s
PCIe支持
PCIe 4.0
PCIe 3.0
功耗 (TDP)
400W
300W
多实例GPU (MIG)
支持
不支持
稀疏性加速
支持(\(\approx
2 \times V100\))
不支持
架构
A100引入了TensorFloat-32 (TF32) Tensor
Core以及结构化稀疏功能:
运行速度比 V100 FP32 FMA 操作快 10 倍(稀疏性快 20 倍)
F ...
IDE缓存清理
Visual Studio
缓存类型
路径
清理方法
NuGet包缓存
%UserProfile%\.nuget
执行dotnet nuget locals all --clear命令
Visual Studio Code
缓存类型
路径
清理方法
扩展缓存
%UserProfile%\.vscode\extensions
删除.vscode\extensions文件夹
Android Studio
缓存类型
路径
清理方法
Gradle缓存
%UserProfile%\.gradle
删除.gradle文件夹
Android SDK缓存
%UserProfile%\.android
删除.android文件夹



