更高效的推理 基于 Multi-Query Attention 技术,ChatGLM2-6B有更高效的推理速度和更低的显存占用. MMLU C-Eval GSM8K BBH 推理性能 ChatGLM2-6B使用 Multi-Query Attention,提高了生成速度。 生成2000个字符的平均速度对比如下: Multi-Query Attention同时也降低了生成过程中KV Cache的显存占用。
idea其实就这么简单,但具体实现上,我们其实遇到了两个主要的问题,在paper里,我们把它们总结为:multi-task learning和multi-query localization。 对于multi-query localization,主要是说对于DETR,decoder其实有100个object query,这100个object query其实是100个网络隐式学到的空间位置偏好的 我们从最简单的single-query开始介绍,把它拓展到了支持multi-query的预训练。 对于multi-query,我们认为有两个要满足的条件,第一个是 query之间框的预测是独立的,所以我们提出了一个放在decoder上的attention mask,保证query之间彼此不可见。
加了当前步长的Value张量,形状为[b, h, m+1, v] 维度表示如下: M:先前执行的步骤数 B:批量大小 D:输入和输出的尺寸 H:注意力头数 k:Q,K张量的另一个维度 v: v张量的另一个维度 Multi-Query MQA的方法是保持Q的初始头数,但K和V只有一个头,这意味着所有Q个头共享相同的K和V,因此称为Multi-Query,如下图所示: 从论文的解释中可以看到,MQA 让所有的头之间 共享 同一份 Key self.out_proj(context), attn_weights, past_key_value class MultiQueryAttention(nn.Module): """Multi-Query self.head_dim = d_model // n_heads self.Wqkv = nn.Linear( # Multi-Query
那同样实际测测看 红色是加了Early Dropout,可以看到随着训练,优势越来越明显 四、Multi-Query Attention 在Palm模型中,使用multi-query attention 但在multi-query attention,K、V仅生成一次(不是针对每个头),只有每个注意力头的Q不同。详细解释参见。
Group-Query Attention GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints 如上图: 左边是transformer原始的Multi-head Attention,它有H个query,key,value,即每个query单独配一个key和value 右边是其他研究者提出的Multi-query Open Foundation and Fine-Tuned Chat Models 大模型技术实践(二)|关于Llama 2你需要知道的那些事儿 GQA: Training Generalized Multi-Query
为了解决这个问题,该论文提出了一个名为DMQR-RAG(Diverse Multi-Query Rewriting for Retrieval-Augmented Generation)的框架,旨在通过多样化的多查询重写来改善文档检索和最终响应的性能 核心内容 论文通过提出**DMQR-RAG(Diverse Multi-Query Rewriting for Retrieval-Augmented Generation)**框架来解决上述问题,具体解决方案包括以下几个关键点 多查询重写策略(Multi-Query Rewriting Strategies) 论文提出了四种基于信息量的重写策略,以确保重写的查询具有多样性,并提供独特的信息,从而增加检索到真正相关文档的可能性:
(Bug #33100586)server端的审计插件总是记录整个multi-query, 而不是记录特定部分. 设置查询长度即可 (Bug #107390, Bug #34207811)
更高效的推理:ChatGLM2-6B引入了Multi-Query Attention技术,在更低的显存资源下以更快的速度进行推理,相比第一代提升了42%2。 资源占用低:使用了Multi-Query Attention和INT4量化等技术,降低了显存占用和推理时间,提高了效率和便捷性。
Multi-query则是生成多个改写版本,从不同角度去检索。 product、version、date、author等) 检索阶段: 混合检索(vector + BM25)→ 相似度阈值过滤 → cross-encoder重排序 Query处理: 对模糊问题用HyDE + multi-query 后面再根据实际问题针对性地补充HyDE/multi-query(解决query不清晰)、metadata filter(限定范围)、compression(降噪)、adaptive k(提升置信度)。
大语言模型的细节 1.0 transformer 与 LLM 1.1 模型结构 1.2 训练目标 1.3 tokenizer 1.4 位置编码 1.5 层归一化 1.6 激活函数 1.7 Multi-query
因为speculative-sampling没有改变transformer的结构,所以可以和其他方法结合使用 ,例如量化,multi-query attention。
Multi-Query Attention:每个头共享键/值的映射,即“key”和“value”被投影到 [1, h],但“query”仍被投影到形状 [k, h],这种操作对模型质量和训练速度没有影响
高效推理速度与低显存消耗:使用 Multi-query Attention 技术实现更快速、内存消耗更小 THUDM/ChatGLM2-6B[2] Stars: 3.9k License: NOASSERTION 更高效的推理:采用 Multi-Query Attention 技术,提高生成速度和降低显存占用。 此外,ChatGLM2-6B 还具有完全开放权重、商业使用授权等诸多优点。
更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G
激活函数,采用 RoPE,共享 input, output embedding,所有 layer 不用 biases,更改 Transformer Block 中 Layernorm 的并行方式,使用 multi-query
12、Multi-Query Attention:OpenAI 和其他机构一样,也在使用 Multi-Query Attention(MQA)。
4.2 减少复杂性的Multi-Query 由于输出维度比较大可能会带来比较大的计算复杂度,因此作者还设计了Multi-query Lambda Layer以减少复杂度,进而降低推理时间。 output = reshape(content output + position output, [b, n, d]) return output 虽然这类似于multi-head或multi-query
self.fused_attn_ff_proj(x).split(self.fused_dims, dim=-1) # split heads # they use multi-query out = rearrange(out, "b h n d -> b n (h d)") return self.attn_out(out) + self.ff_out(ff) (3)Multi-Query
Model: A dense, decoder-only, full-attention Transformer model 使用 SwiGLU Activation,Parallel Layers,Multi-Query
基准测试有许多场景(也称为测试类型),此次评测多了一个综合评分选项,把拥有完整测试覆盖的框架现在将具有综合分数,这反映了测试项目类型的总体性能得分:JSON serialization, Single-query, Multi-query