从零开始的ChatGLM教程(三点一)
写在前面
本文中所有的内容仅供参考,本人并不对任何产生的后续问题负任何责任。
本篇文章是临时决定加进来的内容,原因是在上一篇文章下有人留言想要询问M40的具体效率,由于到写这篇文章为止,我还没有一个假期来真正地训练用于ChatGLM的Lora,因此我只能够先用推理速度以及第三方的数据来源来进行比较。等我有机会亲自训练后会补充上相关的内容。

由于要评估专业卡的性能,评估一张也是评估,评估一堆也是评估,因此我把我所知道的所有数据都整理出来写在下面。
我们先来看一位大佬对于M40,P40,3090的评估,在训练StyleGan类对抗生成模型,占用显存15G,核心100%满载,不使用混合精度加速的环境下。平均每训练1000次,3090耗时107秒,P40耗时245秒,M40耗时346秒。时间比为:RTX 3090 为 1X,P40 为 2.3X,M40 为 3.2X。(数据来源:https://huaweicloud.csdn.net/63803005dacf622b8df86653.html)
如果以上的数据不够直观,那么我说说我的使用感受:
在使用ChatGLM fp16无量化版本下,短对话可以事先在秒级内答复,但如果需要进行大量文字输出或者进行如编程等复杂逻辑运算则大概需要几十秒左右。整体速度虽然不快但能够保持在一个可以接受的水平下。P40的速度要更快一些,短对话几乎能实现即时问答,长对话的时间也相对于M40要更快。
在使用其他生成类AI的环境下,P40的速度也更加优于M40。但参考到目前P40小黄鱼1200左右的价格,在性价比方面还是请各位灵活选择。

除了运算速度之外,关于显存使用率
首先,你的电脑会有一个专用GPU内存,一个共享GPU内存,前者是你显卡自带的显存,后者是你的专用GPU内存加上可分配的内存用作显存的大小。例如我的GPU显存是24G,我的内存是16G,我的共享GPU内存为32G。虽然听起来很美好,但很可惜,共享GPU内存并不能被用于加载模型,至少目前不行。(顺便一提,有的游戏是可以的,据我所知星际公民这款游戏就允许使用共享GPU内存)
在启动模型的时候会需要消耗一部分的显存空间加载模型,fp16无量化下需要的显存空间为12G。在每次的对话过程中,均需要消耗0.2G到0.3G的显存空间。因此你的剩余显存容量会直接决定你的模型能够对话的回合数。关于这个问题的解决方法,我在此引用B站用户:“swindle的书包”在一键包视频下的评论:
在up给的项目文件里找到webui.py这个文件,打开并搜索model.chat,这个函数里的参数history保存着历史对话,这使ai能理解上下文,但也是显存不断增加的原因。我们可以通过让history只保存n次历史会话(n就是你在正常使用时能进行会话的最大次数),实现尽可能多的保留上下文能力的同时,不爆显存。
以上,就是我所知道的关于训练卡的显存与效率的内容,请各位在选择训练卡的时候自行斟酌,欢迎更多大佬在评论区留言自己的训练显卡与使用情况。

本文中如有错误或疏漏,欢迎私信我或在下方评论区留言,我会修正或补充
*补充了有关显存使用率的说明(2023.4.14)