大模型ChatGLM2-6B使用系列
` 第二章 大模型ChatGLM2-6B的本地化部署的参数配置
文章目录
前言
在上一篇文章《大模型ChatGLM2-6B的本地化部署》,详细介绍了ChatGLM2-6B的本地化部署的过程,本篇文章主要介绍本地化部署,如何对大模型ChatGLM2-6B根据机器的配置进行参数调整,以便更流畅的运行。
一、ChatGLM2-6B显存与内存占用配置
从GitHub上下载下来的ChatGLM2-6B源码文件中默认的是模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存,CPU运行模式下需要占用32GB内存,如果你的设备没有那么好的配置,即没有那么大的显存和内存的话,可以通过加载量化模型从而减少显存与内存的占用。
1.1 ChatGLM2-6B加载量化模型
加载量化模型运行,本质上就是通过降低大模型的性能来换取硬件配置需求的下降,量化模型的运行速度会低于全量模型。
但ChatGLM2-6B在4-bit量化下仍然具备一定自然流畅的性能效果。
有两种方式进行加载量化模型,分别为本地将全量模型转化为量化模型加载和直接下载对应的量化模型版本
1.1.1 本地将全量模型转化为量化模型加载
这个较为简单,只需要对ChatGLM2-6B源码文件夹中的web_demo.py、web_demo2.py、api.py、cli_demo.py等文件中的设计模型部分的代码,一般在文件的开头或者结尾部分(你需要那个文件就改哪个文件,不需要全改);以web_demo.py文件为例,如下图所示:
对于采用默认精度(FP16 精度)加载,运行上述代码大概需要13GB显存;对于采用INT4精度进行量化加载,大概需要占用5.5GB的显存;对于采用INT8精度进行量化加载,大概需要占用8GB的显存。
默认精度(FP16精度)模型多轮对话后,大概需要14-15GB的显存,INT8多轮对话后大概需要10GB的显存,INT4多轮对话后大概需要6-7GB的显存;
1.1.2 直接下载对应的量化模型版本进行加载
这个方式首先要从https://huggingface.co/网站上下载对应的量化模型的模型文件,以INT4量化精度chatglm2-6b-int4为例。
在浏览器地址栏中,输入https://huggingface.co/THUDM,然后在如下界面所示的区域中找到chatglm2-6b-int4模型:
然后点击进入该模型的界面,并切换到Files and versions区域,如下图所示:
并挨个将模型文件悉数下载到本地,并在ChatGLM2-6B源码文件夹的model文件夹中新建一个名为“chatglm2-6b-int4”的文件夹,并下载的模型文件拷贝到该新建的文件夹中,如下图所示:
然后再打开web_demo.py文件,修改如下图所示的代码:
1.2 模型量化后的资源占用情况
量化精度 | GPU显存占用 |
---|---|
FP16 | 13GB |
INT8 | 8GB |
INT4 | 5.5GB |
二、ChatGLM大模型的推理参数含义
1.Maximum length参数
通常是用于限制输入序列的最大长度,因为ChatGLM2-6B是8192长度推理的,一般这个保持默认就行,太大可能会导致性能下降
2.Top P参数
Top P参数是指在生成文本等任务中,选择可能性最高的前P个词的概率累加和。这个参数被称为Top P,也被称为Nucleus Sampling。
例如,如果将Top P参数设置为0.7,那么模型会选择可能性排名超过70%的词进行采样。这样可以保证生成的文本准确性较高,但可能会缺乏多样性。相反,如果将Top P参数设置为0.3,则会选择可能性超过30%的词进行采样,这可能会导致生成文本的准确性下降,但能够更好地增加多样性。
3.Temperature参数
Temperature参数通常用于调整softmax函数的输出,用于增加或减少模型对不同类别的置信度。
具体来说,softmax函数将模型对每个类别的预测转换为概率分布。Temperature参数可以看作是一个缩放因子,它可以增加或减少softmax函数输出中每个类别的置信度。
比如将 Temperature 设置为 0.05 和 0.95 的主要区别在于,T=0.05 会使得模型更加自信,更加倾向于选择概率最大的类别作为输出,而 T=0.95 会使得模型更加不确定,更加倾向于输出多个类别的概率值较大。
总结
上述对大模型ChatGLM2-6B的全量模型和量化模型加载的方法进行了详细的描述,同时也对各个量化精度所占用的显存和内存做了明确的对比,读者可根据自己设备的配置情况进行对应的选择。
文章同时也对大模型ChatGLM2-6B的各个推理参数的含义进行了解释。