ChatGPT - 基于 ChatGLM-6B 搭建私有 ChatGPT 在线聊天服务

编程入门 行业动态 更新时间:2024-10-15 18:25:37

欢迎关注我的CSDN:https://spike.blog.csdn/
本文地址:https://blog.csdn/caroline_wendy/article/details/131104546

Paper:GLM: General Language Model Pretraining with Autoregressive Blank Infilling

一篇于2022年发表在ACL会议上的论文,作者来自清华大学、MIT、BAAI等机构。该论文提出了一种通用的预训练语言模型(GLM),基于自回归的空格填充(Autoregressive Blank Infilling)来进行文本生成和理解。空格填充是一种将文本中的一些片段(span)替换为特殊的空格符号(blank)的方法,然后让模型根据上下文来预测这些空格中应该填充的内容。空格填充可以看作是一种结合了自回归和自编码两种模式的预训练目标,既能够利用双向的上下文信息,又能够生成连贯和多样的文本。

GLM在空格填充的基础上进行了一些改进,主要有以下几点:

  • 引入了二维位置编码(2D positional encoding),使得模型能够区分不同的空格和不同的单词,并且能够处理不同长度和数量的空格。
  • 允许模型以任意顺序来预测空格中的内容,而不是固定地从左到右或从右到左,这样可以增加模型的灵活性和鲁棒性。
  • 根据不同类型的下游任务,调整空格的数量和长度,从而实现不同的预训练目标,例如完形填空、摘要生成、对话生成等。

GLM在多个NLU和NLG任务上进行了实验,包括GLUE、SQuAD、CNN/Daily Mail、Gigaword、CoQA、PersonaChat等,结果显示GLM在相同的模型大小和数据量下,均优于BERT、T5和GPT等基线模型,并且在一个单一的预训练模型上达到了最佳性能。这证明了GLM具有很强的通用性和适应性。

1. 配置工程

GitHub 工程:GitHub - THUDM/ChatGLM-6B

Hugging Face 网页:https://huggingface.co/THUDM/chatglm-6b

下载 Hugging Face 工程:

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b

下载参数,用于下载清华云的参数:

git clone https://github/chenyifanthu/THU-Cloud-Downloader

参数地址:https://cloud.tsinghua.edu/d/fb9f16d6dc8f482596c2/

cd THU-Cloud-Downloader
python main.py --link https://cloud.tsinghua.edu/d/fb9f16d6dc8f482596c2/ --save ../chatglm-6b/

等待11个模型文件,下载完成,预计15分钟左右。

下载源代码:

git clone git@github:THUDM/ChatGLM-6B.git ChatGLM-6B-official

使用 git 下载,需要预先设置 id_rsa ,如下载过慢,可直接下载zip文件,上传之后再解压。

安装 Python 包:

pip install -r requirements.txt

验证 PyTorch 是否安装成功:

python

import torch
print(torch.__version__)  # 2.0.1+cu117
print(torch.cuda.is_available())  # True

2. 服务端测试

cli_demo.py 源码中的模型,修改为已下载的路径:

...
tokenizer = AutoTokenizer.from_pretrained("../chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("../chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
...

即可运行:

python3 cli_demo.py

对话如下:

欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序

用户:蒙特卡洛方法是什么呢?

ChatGLM-6B:蒙特卡洛方法是一种随机模拟方法,常用于研究随机现象和不确定性原理。在蒙特卡洛方法中,研究者使用随机数生成器生成一组随机样本,然后根据这些样本计算出一些物理量或数学模型的结果。

具体来说,蒙特卡洛方法的基本思想是通过模拟随机过程来估计估计物理量或数学模型的参数。在模拟过程中,研究者随机选择一个物理量或数学模型的参数,然后计算出一组模拟结果。这些模拟结果可以用于估计真实的物理量或数学模型的结果,并给出相应的误差。

蒙特卡洛方法的优点在于可以处理不确定性原理,例如在研究量子物理、化学反应、金融市场等领域中,由于存在大量随机因素,不确定性原理会导致结果的不准确性。而蒙特卡洛方法可以通过模拟大量的随机样本来消除不确定性,提高结果的准确性。

用户:

3. 网页端调用

修改 web_demo.py 源码中的模型,修改为已下载的路径:

...
tokenizer = AutoTokenizer.from_pretrained("../chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("../chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()
...

修改 gradio 插件的服务器ip和端口号,进行端口透传:

...
demo.queue().launch(share=False, server_name='[Your Server IP]', server_port=[Your Server Port], inbrowser=True)
...

参考:基于Gradio可视化部署机器学习应用

即可运行:

python3 web_demo.py

访问地址如下:http://[Your Server IP]:[Your Server Port]

Bugfix

1. TCP connection reset by peer

当下载 HuggingFace 项目时,遇到错误:

fatal: unable to access 'https://huggingface.co/THUDM/chatglm-6b/': TCP connection reset by peer

原因是 git 版本较低,升级即可:

git --version
git version 1.8.3.1
# 升级之后
git --version
git version 2.25.1

参考:git clone错误: TCP connection reset by peer

2. Permissions 0644 for id_rsa are too open

修改 .id_rsa 的权限即可:

chmod 400 ~/.ssh/id_rsa

参考:Stackoverflow - SSH Key: “Permissions 0644 for ‘id_rsa.pub’ are too open.” on mac

3. 修改 Docker 环境的 pip 安装源

默认 pip 源的优先级,如下:

# This file has been autogenerated or modified by NVIDIA PyIndex.
# In case you need to modify your PIP configuration, please be aware that
# some configuration files may have a priority order. Here are the following 
# files that may exists in your machine by order of priority:
#
# [Priority 1] Site level configuration files
#       1. `/opt/conda/pip.conf`
#
# [Priority 2] User level configuration files
#       1. `/root/.config/pip/pip.conf`
#       2. `/root/.pip/pip.conf`
#
# [Priority 3] Global level configuration files
#       1. `/etc/pip.conf`
#       2. `/etc/xdg/pip/pip.conf`

全部删除:

rm /opt/conda/pip.conf
rm /root/.config/pip/pip.conf
rm /etc/pip.conf
rm /etc/xdg/pip/pip.conf

修改默认源:

vim ~/.pop/pip.conf

[global]
no-cache-dir = true
index-url = https://pypi.tuna.tsinghua.edu/simple/
extra-index-url = https://pypi.ngc.nvidia
trusted-host = pypi.tuna.tsinghua.edu pypi.ngc.nvidia

更多推荐

ChatGPT - 基于 ChatGLM-6B 搭建私有 ChatGPT 在线聊天服务

本文发布于:2023-06-13 11:50:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1381899.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:在线   ChatGPT   ChatGLM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!