1. 背景
本qiang~这两天接了一个任务,部署几个开源的模型,并且将本地经过全量微调的模型与开源模型做一个效果对比。
部署的开源模型包括:星火13B,Baichuan2-13B, ChatGLM6B等
其他两个模型基于transformers架构封装,因此推理服务启动还是十分丝滑,但星火13B是基于Megatron-DeepSpeed框架实现,地址是:https://gitee.com/iflytekopensource/iFlytekSpark-13B,启动推理服务的过程中发现启动13B的显卡占用71G-78G,有些反直觉。
此文就是整理开源星火13B的显存及内存排查并优化的整理过程,至于哪家开源模型效果好,不在此文的讨论范围内。
2. 原因分析
直观上来说,13B的模型,数据类型为bf16,显卡占用大概在26G左右,但星火13B直接占用70G+,不可思议,怪不得网上关于星火开源模型的讨论少之又少,原因显而易见,这么大的显存占用只能用多卡或者A800等80G显卡才能适配。穷人家的孩子,哪有这么多余粮。
排查原因的过程中,少不了源码的调试与分析。在排查的过程中,启动推理服务的文件run_iFlytekSpark_text_generation.py中,model_provider方法是初始化模型并加载模型文件的方法。
def model_provider(pre_process=True, post_process=True):
"""Build the model."""
print_rank_0('building iFlytekSpark model ...')
args = get_args()
config = core_transformer_config_from_args(args)
### 初始化星火模型
model = iFlytekSparkModel(
config,
num_tokentypes=0,
parallel_output=False,
pre_process=pre_process,
post_process=post_process,
return_moe_loss=False
)
if args.from_pretrained is not None:
assert os.path.exists(args.from_pretrained)
ckpt_path = get_chec

最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



