从FasterTransformer源码解读开始了解大模型(2.1)代码通读02

从FasterTransformer源码解读开始了解大模型(2.0)代码解读02-初始化和forward

写在前面的话

本篇的内容主要是介绍ParallelGpt.cc中的代码内容,首先介绍一些初始化和工具函数,然后会从forward主函数开始介绍一部分。

零、初始化initialize和allocateBuffer

打开src/fastertransformer/models/multi_gpu_gpt/ParallelGpt.cc文件,这里是GPT的真正的处理推理请求的功能函数。在这个文件的fastertransformer namespace中,第一个函数是用于做一些初始化的函数initialize,从31到87行,主要是创建了三个对象,gpt_context_decoder是用于做ContextDecoder或者说Encoder部分的,gpt_decoder是用于做Decoder的,而进行采样和结果生成的是DynamicDecodeLayer部分。这三个部分我们会在后续的代码解读中展开说明。

第95行到202行是allocateBuffer函数,在每次处理一个推理请求时,都会使用allocateBuffer进行显存的分配和内存的分配。这里挑出几个比较有特点的buffer进行简单讲解。

在109行,计算了一个变量为self_cache_size,大小是*(num_layer / pipeline_para_.world_size) * batchxbeam * memory_len * hidden_units_ / tensor_para.world_size_,这个实际上就是计算KV Cache的大小。而134和135行就用该数值的大小进行了KV Cache的分配。

const size_t self_cache_size =
        (num_layer_ / pipeline_para_.world_size_) * batchxbeam * memory_len * hidden_units_ / tensor_para_.world_size_;

llm小知识-KV Cache:我们知道,在Attention注意力得分的计算过程中,对于当前的token i,需要先计算出查询结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值