FasterTransformer
FasterTransformer copied to clipboard
Support for chatglm-6B/GLM models?
Could you tell me if fastertransformer support for chatglm or glm model? If not, do you have plan to support glm model?
Same request.
Same request.
Same request
same request
mark
Same request
Same request
mark
mark
https://huggingface.co/TMElyralab/lyraChatGLM
This chatglm6b model may be optimized based on FasterTransformer
我们基于 FasterTransformer,对 ChatGLM-6B 做了较多的定制化优化,主要有:
- 特有算子:ChatGLM-6B 有大量的特有计算,如 2D-RotaryEmbedding、AlphaResidual、Mask 和 PositionIds 的计算等,我们分析了所有的特定计算操作,以 CUDA 为基础重写了这一系列 Kernel。
- 算子融合:对于模型计算中,大量的可融合操作,我们进行了融合以减少 kernel 启动的开销和显存的换入换出,如 QKV 变换。注意力计算后的 bias 添加,alpha 因子的残差和 LayerNorm 三个操作可混合为一个。
- KV-Cache:AutoRegression 的 LLM 中,注意力计算都是单向的,token 一个一个的生成过程中,我们不必把前面计算过的每个样本在每层 transformer 的 tokens 的 key 和 value 重新计算,只需缓存起来。对于当前步的生成,只需用做一个长度为 1 的注意力计算,注意力计算过程中复用前面缓存的 key 和 value. 虽然会带来显存上的额外消耗,但计算得到更多收益。
- 并行技术:对于过大的 tensor 直接的计算,我们可以通过 tensor 并行,将其切分到不同的机器上进行并行计算。
- 显存复用:Transformer 结构模型的每一层的输出的尺寸是一致的,对于推理,我们不需要考虑梯度和中间值,因此我们可以对每一层的输入输出复用一块显存空间,以降低显存的开销和加速数据的 IO。
在以上优化技术上,我们实现了 ChatGLM-6B 的优化,为便捷化使用,提供了 Python 的调用方式,和 Huggingface model 的 generate 接口高度保持一致。
https://huggingface.co/TMElyralab/lyraChatGLM
This chatglm6b model may be optimized based on FasterTransformer
我们基于 FasterTransformer,对 ChatGLM-6B 做了较多的定制化优化,主要有:
- 特有算子:ChatGLM-6B 有大量的特有计算,如 2D-RotaryEmbedding、AlphaResidual、Mask 和 PositionIds 的计算等,我们分析了所有的特定计算操作,以 CUDA 为基础重写了这一系列 Kernel。
- 算子融合:对于模型计算中,大量的可融合操作,我们进行了融合以减少 kernel 启动的开销和显存的换入换出,如 QKV 变换。注意力计算后的 bias 添加,alpha 因子的残差和 LayerNorm 三个操作可混合为一个。
- KV-Cache:AutoRegression 的 LLM 中,注意力计算都是单向的,token 一个一个的生成过程中,我们不必把前面计算过的每个样本在每层 transformer 的 tokens 的 key 和 value 重新计算,只需缓存起来。对于当前步的生成,只需用做一个长度为 1 的注意力计算,注意力计算过程中复用前面缓存的 key 和 value. 虽然会带来显存上的额外消耗,但计算得到更多收益。
- 并行技术:对于过大的 tensor 直接的计算,我们可以通过 tensor 并行,将其切分到不同的机器上进行并行计算。
- 显存复用:Transformer 结构模型的每一层的输出的尺寸是一致的,对于推理,我们不需要考虑梯度和中间值,因此我们可以对每一层的输入输出复用一块显存空间,以降低显存的开销和加速数据的 IO。
在以上优化技术上,我们实现了 ChatGLM-6B 的优化,为便捷化使用,提供了 Python 的调用方式,和 Huggingface model 的 generate 接口高度保持一致。
这个不开源权重转换工具,没法用自己的模型权重
torch.classes.FasterTransformer.GlmOp
Same request.
mark
Same request.
FasterTransformer development has transitioned to TensorRT-LLM.
chatglm-6B and chatglm-v2-6B are supported in TensorRT-LLM. Please take a try.
