Open tianmala opened 1 year ago
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.
Could you tell me if fastertransformer support for chatglm or glm model? If not, do you have plan to support glm model?