Skip to content

Latest commit

 

History

History
139 lines (97 loc) · 5.33 KB

README-ZH.md

File metadata and controls

139 lines (97 loc) · 5.33 KB

BMInf

大模型高效推理工具包

总览安装快速上手English

doc github version

最新动态

  • 2022/07/31 (BMInf 2.0.0) BMInf现在支持任意transformer类型的模型了。
  • 2021/12/21 (BMInf 1.0.0) 现在工具包不再依赖cupy,新增了对于PyTorch反向传播的支持。
  • 2021/10/18 更新了generate接口并且增加了一个CPM 2.1的新demo。
  • 2021/09/24 BMInf于2021年中关村论坛-人工智能与多学科协同论坛正式发布了!

总览

BMInf (Big Model Inference) 是一个用于大规模预训练语言模型(pretrained language models, PLM)推理阶段的低资源工具包。

BMInf最低支持在NVIDIA GTX 1060单卡运行百亿大模型。在此基础上,使用更好的gpu运行会有更好的性能。在显存支持进行大模型推理的情况下(如V100或A100显卡),BMInf的实现较现有PyTorch版本仍有较大性能提升。

安装

  • 用pip安装:pip install bminf

  • 从源代码安装: 下载工具包并在目录中运行 python setup.py install

硬件要求

在下表中我们列出了运行BMInf的最低配置与推荐配置:

最低配置 推荐配置
内存 16GB 24GB
GPU NVIDIA GeForce GTX 1060 6GB NVIDIA Tesla V100 16GB
PCI-E PCI-E 3.0 x16 PCI-E 3.0 x16

BMInf支持计算能力6.1或更高的GPU,查看对照表来明确你的GPU是否被支持。

软件要求

BMInf需要安装CUDA 10.1及以上版本,所有的依赖包都会在安装过程中自动被安装。

  • python >= 3.6
  • torch >= 1.7.1
  • cpm_kernels >= 1.0.9

快速上手

使用bminf.wrapper来自动的转换你的模型。

import bminf

# 在CPU上初始化你的模型
model = MyModel()

# 加载模型参数
model.load_state_dict(model_checkpoint)

# 使用bminf.wrapper
with torch.cuda.device(CUDA_DEVICE_INDEX):
    model = bminf.wrapper(model)

如果bminf.wrapper不能很好的适配你的模型,你可以用以下的方法来进行手动适配。

  • torch.nn.ModuleList 替换为 bminf.TransformerBlockList.
module_list = bminf.TransformerBlockList([
	# ...
], [CUDA_DEVICE_INDEX])
  • torch.nn.Linear 替换为 bminf.QuantizedLinear.
linear = bminf.QuantizedLinear(torch.nn.Linear(...))

运行性能

下表汇报了我们在不同平台上运行CPM2编码器和解码器的速度。用户可以在本机运行benchmark/cpm2/encoder.pybenchmark/cpm2/decoder.py来测试本机运行速度。

实现 GPU 编码速度 (tokens/s) 解码速度 (tokens/s)
BMInf NVIDIA GeForce GTX 1060 718 4.4
BMInf NVIDIA GeForce GTX 1080Ti 1200 12
BMInf NVIDIA GeForce GTX 2080Ti 2275 19
BMInf NVIDIA Tesla V100 2966 20
BMInf NVIDIA Tesla A100 4365 26
PyTorch NVIDIA Tesla V100 - 3
PyTorch NVIDIA Tesla A100 - 7

开源社区

欢迎贡献者参照我们的贡献指南贡献相关代码。

您也可以在其他平台与我们沟通交流:

开源许可

该工具包使用Apache 2.0开源许可证。

参考文献

  1. CPM-2: Large-scale Cost-efficient Pre-trained Language Models. Zhengyan Zhang, Yuxian Gu, Xu Han, Shengqi Chen, Chaojun Xiao, Zhenbo Sun, Yuan Yao, Fanchao Qi, Jian Guan, Pei Ke, Yanzheng Cai, Guoyang Zeng, Zhixing Tan, Zhiyuan Liu, Minlie Huang, Wentao Han, Yang Liu, Xiaoyan Zhu, Maosong Sun.
  2. CPM: A Large-scale Generative Chinese Pre-trained Language Model. Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun.
  3. EVA: An Open-Domain Chinese Dialogue System with Large-Scale Generative Pre-Training. Hao Zhou, Pei Ke, Zheng Zhang, Yuxian Gu, Yinhe Zheng, Chujie Zheng, Yida Wang, Chen Henry Wu, Hao Sun, Xiaocong Yang, Bosi Wen, Xiaoyan Zhu, Minlie Huang, Jie Tang.
  4. Language Models are Unsupervised Multitask Learners. Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever.