ChatGLM+闻达的安装部署(2023-07-07更新)

最后更新:202307051215

(一)注意路径

linux路径在config.yml文件中需要注意把路径改对,尤其是反斜杠的问题/////////////////////////////

(二)m3e-base模型库

这是知识索引模型的配置。推荐采用m3e系列模型。

这个模型库系列里有三种,分别是m3e-small、m3e-base、m3e-large最大的是m3e-large,显存大的考虑large,找个时间去试一下。

moka-ai/m3e-large · Hugging Face

moka-ai/m3e-base · Hugging Face

moka-ai/m3e-small · Hugging Face

同样注意第52行相对路径或绝对路径的写法。//////////////

config.yml第52行,注意斜杠


(三)指定大语言模型

使用glm6b模型,88行只是一个标签,也可以改成glm2-6b,但是下面第108行也要改成一样的glm2-6b。

大语言模型的路径最后用了绝对路径,这样chatglm2-6b可以独立运行。

闻达是建议放在wenda文件夹下的modle下,试过放在闻达里,发现运行不了,hf报错,说路径不对。

我这里使用系统镜像的初始路径,在根目录/root下。

config.yml第88行和110行,注意路径,我的是在根目录下



配置结束

(四)运行前准备1


生成知识库前前更新一下工具

pip install -U sentence-transformers

这个命令可以在安装后执行一次,可能需要更新

rtst模式调用知识库


闻达说明文档中关于使用rtst的部分

知识库索引建立

python wenda/plugins/gen_data_st.py

可以将wenda文件夹下的memory文件夹下的defult文件夹删除,重新构建。否则它是采用合并的方式,会越来越大。我猜,可能会出现重复的问题。

(五)接下来就是启动服务

python wenda.py

(六)最后连接服务

ssh指令来源

这是管理平台中复制下来的SSH指令:

ssh -p 端口号 用户名t@***.***.***.***

这是在本级中断输入的指令:

ssh -CNg -L 17860:127.0.0.1:17860 用户名@***.***.***.*** -p 端口号

使用隧道的方式建立端口映射

建立连接时要输入密码

密码从管理平台复制

端口号:

这里的前面的端口17860是跟闻达的config.yml里配置的一致,那是远端开放的端口


远端端口号

127.0.0.1后面的端口号是映射到本机的端口号,访问闻达的时候就需要使用这个端口号,而不是远端的端口号。我这一次输入成一样的了,是偷懒了。

本机端口通过ssh隧道映射远程访问

关于进入闻达后参数的理解

Temperature

从生成模型中抽样包含随机性,因此每次点击“生成”时,相同的提示可能会产生不同的输出。温度是用于调整随机程度的数字。

采样时如何选择温度

较低的温度意味着较少的随机性;温度为 0 将始终产生相同的输出。执行具有“正确”答案的任务(如问题回答或总结)时,较低的温度(小于 1)更合适。如果模型开始自我重复,则表明温度过低。

高温意味着更多的随机性,这可以帮助模型给出更有创意的输出。如果模型开始偏离主题或给出无意义的输出,则表明温度过高。

Adjusting the temperature setting

可以针对不同的问题调整温度,但大多数人会发现温度 1 是一个很好的起点。

随着序列变长,模型自然会对其预测更有信心,因此您可以在不偏离主题的情况下为长提示提高温度。相反,在短提示上使用高温会导致输出非常不稳定。


从top tokens中挑选:top-k

另一种常用的策略是从前 3 个tokens的候选名单中抽样。这种方法允许其他高分tokens有机会被选中。这种采样引入的随机性有助于在很多情况下生成的质量。

Adding some randomness helps make output text more natural. In top-3 decoding, we first shortlist three tokens then sample one of them considering their likelihood scores.

更广泛地说,选择前三个tokens意味着将 top-k 参数设置为 3。更改 top-k 参数设置模型在输出每个token时从中抽样的候选列表的大小。将 top-k 设置为 1 可以进行贪心解码。


Adjusting to the top-k setting.

从概率加起来为15%的top tokens中挑选:top-p

选择最佳 top-k 值的困难为流行的解码策略打开了大门,该策略动态设置tokens候选列表的大小。这种称为Nucleus Sampling 的方法将可能性之和不超过特定值的top tokens列入候选名单。top-p 值为 0.15 的示例可能如下所示:

n top-p, the size of the shortlist is dynamically selected based on the sum of likelihood scores reaching some threshold.

Top-p 通常设置为较高的值(如 0.75),目的是限制可能被采样的低概率 token 的长尾。我们可以同时使用 top-k 和 top-p。如果 k 和 p 都启用,则 p 在 k 之后起作用。

更加深入的学习Chatglm+Langchain的学习

【ChatGLM-6B+LangChain与训练及模型微调教程(人工智能、深度学习)】

video/BV1Mo4y1J7xd/?share_source=copy_web&vd_source=13b72e2fd59f3761ee4223b11fe50f2f

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容