Llama中模块参数大小

LLama2中,流程中数据大小的变换如下

Transformer模块

第一次输入,进行prefill,输入x维度为1, 8, 4096

  1. 构建wq,wk,wv,wo,尺寸均为4096,4096, 与x点乘,得到xq, xk, xv

  2. 构建KV cache, 尺寸为 batch size, max_seq_len, local_kv_heads, head_dim,对应 1, 8, 32, 128

3.基于kv cache构造 keys, alues,对应的尺寸还是1,8,32,128

  1. 在最后两个维度对于xq和key进行点乘,得到scores,维度变成【1, 32, 8, 8】

  2. 将mask与scores相加

  3. 对于scores进行softmax

  4. 将scores 1, 32, 8, 8与values 1, 32, 8, 128进行乘法

  5. 得到output 1, 8, 4096

  6. 将output再与wo进行乘法1, 8, 4096

  7. 接下来对于输出进行 ffn_norm的操作

Feedforward模块

11.然后进行feed_forward.得到当前transformer模块的输出 1, 8, 4096

feed_forward的操作如下,虽然代码很小,但是计算量却很大。

复制代码
    def forward(self, x):
        return self.w2(F.silu(self.w1(x)) * self.w3(x))

其中,w1的维度为11008, 4096, w2的维度为4096, 11008, w3的维度为11008, 4096

kv cache的表达如下

python 复制代码
        self.cache_k = torch.zeros(
            (
                args.max_batch_size,
                args.max_seq_len,
                self.n_local_kv_heads,
                self.head_dim,
            )
        ).cuda()
        self.cache_v = torch.zeros(
            (
                args.max_batch_size,
                args.max_seq_len,
                self.n_local_kv_heads,
                self.head_dim,
            )

关于kv cache的细节讨论

llama2设定 local_kv_heads为32,head_dim为128。所以,kv cache的尺寸为 1, 512,32, 128 * 2

对于一个batch的数据来说哦,因为llama2 7B 包含32个transformer,所以,当使用FP32表达时, 对应一个batch的kv cache的大小为128 * 32 * 128 *2 * 32 * 4byte= 0.5GB.

这里,也可以看到几个变量:

* 当batch变大时,kv cache线性增长

* 当batch 的最大长度增大时, Kv cache线性增长。

参考链接:

https://arxiv.org/pdf/1911.02150

相关推荐
李青菜7 分钟前
一个人 + AI,用 Tauri 2 和 Rust 写了个开源的 Windows 效率工具:提醒 + 笔记 + 启动器
人工智能
泯泷12 分钟前
做 AI 产品,路线图该数“实验”,而不是数“功能”
人工智能·llm·产品
百度Geek说24 分钟前
AI 内容核查怎么做:智能内容 AI 核查系统实践
人工智能
武子康1 小时前
Qwen-Drive 到底是什么:4B 级 VLM 如何成为驾驶策略底座
人工智能·算法·机器学习
落798.1 小时前
《启元 PrimeSim 如何用生成视频评估机器人策略》
人工智能·机器人·启元·具身应用
老纪的技术唠嗑局1 小时前
token 暴降75%!减少长程 Agent 任务中的重复开销,PowerContext v1.5.0 发布
人工智能
智塑未来1 小时前
明源云AI走播机器人,打造智能直播新体验
人工智能·机器人
brave10252 小时前
LLMGuide 大模型面试指南
人工智能·ai·面试·ai编程
机 _ 长2 小时前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
用户4356782936373 小时前
五线并行认知架构:从算力内卷到思考秩序的底层革命
人工智能