从FasterTransformer源码解读开始了解大模型(1.0)了解FasterTransformer

从FasterTransformer源码解读开始了解大模型(1.0)了解FasterTransformer

写在前面的话

最近的一年时间真是令人感慨,换了个工作方向,学了些深度算子开发相关知识,工作也转到对LLM的学习和开发了。入行不算深,还需要对整个LLM大模型进行更精细的了解。

如果从模型结构层去学习去看的话,HuggingFace的transformers仓库源码包含了多种多样的大模型结构源码,很方便去进行学习,每个model都有自己的modeling模型文件,适合去了解学习。不过从性能、算子结构以及作为一个大模型推理引擎的角度来看的话,NV的FasterTransformer作为一个推理引擎虽然已经并不是很跟得上时代了,不过从结构和算子的角度来看仍有可取之处。

之所以没有跟ffmpeg系列一样在前面写上"学龄前",是因为有些cuda的基础知识确实不是学龄前的水平,先掌握一点cuda技术栈的基础知识会更适合学习大模型工程代码,硬要说的话应该算是一二年级吧(大概),在代码解读中也会适当添加一些llm小知识,在添加小知识的过程中也可以得到学习

初步的源码学习计划

从FasterTransformer的现有源码开始进行分析,以GPT2或者Bloom结构(二者在结构上基本是近似的)为例来学习一些decoder only的模型,分析整个LLM的模型结构,之后再基于FasterTransform框架,将现在比较流行的类Llama结构的模型Llama2进行适配(原生的FasterTransformer目前是不支持Llama的)。

为什么是GPT2(BLOOM)? 在fastertransformer的multi_gpu_gpt代码中, 能够看到很多比较成熟的大模型框架的结构特点,如PP/TP划分,moe(混合专家)处理以及卡间通行等等,所以可以用来作为进行整体架构分析学习的不错的材料。更重要的一个原因是FasterTransformer里没有Llama,不然就讲llama了(悲)。不过没关系,等熟悉了源码之后,我们可以将llama集成到这个框架中,这样能够学习的更加深刻

零、什么是FasterTransformer

如果用简单的一句话来概括,FasterTransformer(下文简称FT或者ft)是一个用于大语言模型的推理引擎。目前ft的源代码里集成了bart,bert,gpt2(代码中叫multi_gpu_gpt)、t5等模型,如果有一定开发能力,还可以自己在ft里集成llama、chatglm等模型。

ft可以作为Triton(https://developer.nvidia.cn/triton-inference-server)的一个推理后端(backend)来提供推理服务,同时也可以自己编译自己的,直接进行离线推理,而ft的推理性能上是优于一些使用python的推理框架的(可以将ft的推理看做是一个巨大的cuda和C++的融合算子)。ft的代码是基于CUDA、cuBLAS的C++代码,卡间通信则是会使用到NCCL,如果能够较好的掌握ft的代码,除了能够了解一个基础的LLM推理引擎的基本架构是怎样的,也能够给自己的cuda相关知识以及c++基础知识带来一定好处。(虽然ft的代码写的并不是非常的优美,而且也存在一定资源调度等等的问题,但并不妨碍初学者从其中学到一些值得借鉴的东西)

ft仓库:https://github.com/NVIDIA/FasterTransformer

一、初看代码结构

如果要从结构上了解ft,那么直接从ft的源代码上开始看比较好。将ft的代码直接clone下来,其中主要的源代码在FasterTransformer/src文件夹中,其中可以看见多个子文件夹,从中可以看见ft的功能层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值