Bloom学习
背景
Bloom模型是2022年6月,由一个"BigScience"的国际合作项目推出的。
Bloom模型是第一个大规模多语言模型,拥有 1760 亿个参数,并由数百名研究人员完成,其中大部分是学者,包括哲学家、法律学家和伦理学家,也有一些来自 Facebook、谷歌等公司、以个人身份参与工作的员工。该模型的计算训练工作得到了价值 700 万美元的公共资助,从规模来看可与 OpenAI、谷歌等公司开发的语言模型相媲美,但它将是开源的。[3]
训练优化
ColossalAI中的显存优化:[2]
- Flash Attention:对于长序列 attention,使用 Flatten 来减少 GPU 高带宽内存(HBM)之间的内存读 / 写次数,实现加速。
- ZeRO + Gemini:使用零冗余优化器 (ZeRO) 的方法来消除内存冗余;使用异构内存空间管理器 Gemini 支持将优化器状态从 GPU 卸载到 CPU,以节省 GPU 内存占用。
推理优化
1760亿(176B)参数的BLOOM模型,在生成文本时,如何达到较快的词吞吐值(per token throughput)。
在使用 bf16 (bfloat16)权重时,模型大小为352GB,单卡显存无法全部加载。于是有两个思路:
- 多卡显示加载:8 * 80GB的A100,或者2 * 8 * 40GB的A100,或者2 * 8 * 48GB的A6000,或者 24 * 32GB的V100。
- CPU卸载(CPU offload)或者NVMe卸载(NVMe offlad),在更小的GPU上进行推理,耗时会更长。
- 8比特量化:将显存需求减少一半[1-2]。