查看原文
其他

突破显存墙,BMInf现已支持GLM-130B

OpenBMB开源社区 OpenBMB开源社区 2023-01-04


8 月 4 日,清华大学联合智谱 AI 发布了千亿双语大模型 GLM-130B,其在 LAMBADA 数据集上性能超越了 GPT3、OPT、BLOOM 等千亿大模型,在零样本场景上性能超越了 ERNIE TITAN 3.0,受到国内外广泛关注。

千亿大模型 GLM-130B 参数量达到 260GB,如不进行相关优化,其推理仍需运行在一台拥有 8 卡 A100 的服务器上(总显存 320GB),具有较小显存显卡的服务器(如 8 卡 32G V100,总显存为 256GB)无法直接支持运行。总的来看,主流显卡设计显存较小  成为了大模型应用过程中最关键的问题。

针对这一问题,OpenBMB的 BMInf 提供了参数内存/显存换入换出的高效计算技术,能够突破显存墙支持将GLM-130B全参数运行在显存较小的主流显卡与服务器上。目前BMInf已在8卡32G V100服务器上验证了对GLM-130B的支持,BMInf理论上也支持GLM-130B运行在8卡1080Ti等较低显存GPU服务器。





GLM-130B 简介



GLM-130B  是一个开源开放的双语(中文和英文)双向稠密模型,拥有 1300 亿参数,模型架构采用通用语言模型(General Language Model, GLM)。能够支持在一台 A100(40G * 8)上对千亿规模参数的模型进行推理。截至 2022 年 7 月 3 日,GLM-130B 已完成  4000 亿个文本标识符(中文和英文各 2000 亿)的训练。






BMInf 适配



GLM-130B 模型参数量达 260G,想要对 GLM-130B 进行推理,最低需要 260G 的 GPU 显存。如果拥有一台配置了 8 块 A100 40G 显卡的服务器(共计 320G 显存),可以方便地进行 GLM-130B 推理。

然而,这样一台 8 卡 A100 服务器终究是价格高昂(且近日显卡厂商对 A100 这样的高端显卡增加了销售限制)。为此,大模型 运行时的显存需求与主流显卡设计显存较小 之间的矛盾成为了关键的挑战与问题。

BMInf 便是为这样的需求而生。通过高效的显存/内存换入换出,用户可以突破大模型运行时的显存限制,从显存较小的显卡上进行大模型推理

图-BMInf参数调度示意


BMInf 的技术原理比较简单。相对于较小的显存,内存往往容量更大而且价格也更加便宜。对于大模型所基于的 Transformer 架构来说,每个大模型是由多层核心计算单元 Transfomer Block 堆叠而成(对于 GLM-130B 来说是 70 层)。


在推理的计算过程中,我们可以把显存能够容纳的部分层参数加载到显卡进行计算,得到结果后将这部分参数换出到内存中,再将之后几层的参数换入到显存中进行计算,如此一来,便可以不再局限于将大模型全部参数放入显存。虽然会带来一定的计算时间延长,但理论上 BMInf 能够将 GLM-130B 运行在各类显存较小的显卡上。


除参数内存/显存换入换出技术外,BMInf也支持对于INT8量化模型的推理,相较于FP16精度的原模型来说,INT8量化后的模型参数将会缩小为原来的1/2,模型推理速度会得到进一步提升,显存的需求也将进一步减少。





   

使用方式



我们在 8 卡 V100 的服务器上进行了测试并提供了使用配置文件,使用方式如下:

▶  01 首先需要通过命令 “pip install bminf” 在您的环境中安装 BMInf。
▶  02 之后参考 GLM-130B 文档,在运行 scripts 文件夹中具体的脚本前需要将文件中的:

source "${main_dir}/configs/model_glm_130b.sh"

替换为:
source "${main_dir}/configs/model_glm_130b_v100.sh"


之后便可以运行脚本进行相应操作。


这里的默认配置为 V100 服务器,您可以通过修改配置文件中的 --bminf-memory-limit 字段将其适配到您的服务器显卡上,如显存为 24G,可以将其设置为低于 24G 的数值。

我们在 CoLA 数据集上进行了 性能测试,这里 Micro Batch Size 设置为 30,--bminf-memory-limit 设置为 25GB,性能如下表所示。


显存峰值时间
A100-SAT40.3G74.6s
V100-SAT内存不足内存不足
V100-SAT-BMInf32.3G196.0s


综上所述,BMInf 已支持将 GLM-130B 运行在 8 卡 V100 服务器未来我们也希望测试 BMInf 与 GLM 130B 在其他服务器配置上的性能,欢迎感兴趣的研究人员与开发者加入 OpenBMB 开源社群,一起体验千亿大模型的魅力,共同探讨大模型的落地与普及之路。



 ▾ 传送门   GitHub 链接  


🔗  BMInf: https://github.com/OpenBMB/BMInf

🔗  GLM-130B: https://github.com/THUDM/GLM-130B






官方网站

https://www.openbmb.org


技术文章

高效训练工具 BMTrain BMTrain 技术原理

CPM-Live 邀请函 CPM-Live 训练启动

OpenBMB 社区介绍 | 大模型课程

大模型榜单 BMList


长期开放招聘含实习

开发岗  |  研发岗  |  运营岗


交流QQ群735930538
本期内容编辑|谭欣佩欢迎转载
商务合作请联系openbmb@gmail.com
👏期待您的关注与加入👏


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存