LLM - ChatGLM-6B (General Language Model) 的工程配置

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

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

ChatGLM是通用的预训练语言模型(General Language Pretraining Model),基于自回归空格填充(Autoregressive Blank Infilling)的方法,可以兼容三种主流的预训练框架:自回归模型(如GPT)、自编码模型(如BERT)和编码器-解码器模型(如T5)。GLM 通过添加二维位置编码和允许任意顺序预测文本片段,提高了空格填充预训练的效果。同时,GLM可以通过调整空格的数量和长度,来适应不同类型的任务,包括自然语言理解、有条件和无条件的文本生成。GLM在多个任务上都超越了BERT、T5和GPT,展示了其通用性和强大性。

Paper

ChatGLM 已经升级到2.0版本 ChatGLM2-6B,相关文章:

  • ChatGLM v1.0: ChatGLM-6B (General Language Model) 的工程配置
  • ChatGLM v2.0: 第2版 ChatGLM2-6B (General Language Model) 的工程配置

1. 配置工程

  • GitHub 工程:GitHub - THUDM/ChatGLM-6B
  • HuggingFace 网页:https://huggingface.co/THUDM/chatglm-6b

下载 HuggingFace 工程 chatglm-6b,其中 git-lfs 相关的大文件并未下载,命令如下:

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

下载参数工程 THU-Cloud-Downloader,用于快速下载清华云的模型参数,命令如下:

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

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

将模型参数直接保存至 chatglm-6b 替换已有文件,命令如下:

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

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

下载服务工程:

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

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

配置 conda 环境,安装相关的 Python 包,命令如下:

conda create -n chatglm python=3.8
conda activate chatglm
cd ChatGLM-6B-officialpip install -r requirements.txt

验证 PyTorch 是否安装成功:

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

2. 服务端测试

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

...
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 源码中的模型,修改为已下载的 chatglm-6b 路径:

...
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 地址 (server_name) 和端口号 (server_port),进行端口透传:

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

IP 可以设置为 0.0.0.0,端口设置为可用端口即可。

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

即可运行:

CUDA_VISIBLE_DEVICES="1" nohup python3 web_demo.py > nohup.out &

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

ChatGLM

Bugfix

1. TCP connection reset by peer

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

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

可能是网络原因或Git版本较低,建议使用 ssh + git 路径下载,避免访问异常。

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`

全部删除,仅保留 /root/.pip/pip.conf,即可:

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

修改 pip.conf,添加清华的pip源,与Nvidia的pip源共用,即:

vim ~/.pop/pip.conf[global]
no-cache-dir = true
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url = https://pypi.ngc.nvidia.com
trusted-host = pypi.tuna.tsinghua.edu.cn pypi.ngc.nvidia.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/6060.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基础一

网络发展 独立模式:计算机之间相互独立。 网络互联:多台计算机连接在一起,完成数据共享。 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起; 广域网WAN:将远隔千里的计算机都连在…

机器学习15:神经网络-Neural Networks

神经网络是特征交叉的更复杂版本。本质上,神经网络会学习适当的特征组合。本文主要介绍神经网络的结构、隐藏层、激活函数等内容。 目录 1.神经网络:结构 2.隐藏层 3.激活函数 3.1 常用激活函数 3.2 小结 4.神经网络小练习 4.1 第一个神经网络 …

【spring源码系列-05】refresh中prepareRefresh方法的执行流程

Spring源码系列整体栏目 内容链接地址【一】spring源码整体概述https://blog.csdn.net/zhenghuishengq/article/details/130940885【二】通过refresh方法剖析IOC的整体流程https://blog.csdn.net/zhenghuishengq/article/details/131003428【三】xml配置文件启动spring时refres…

【嘉立创EDA】层次原理图功能使用,或放置复用图块方法

文章路标👉 文章解决问题主题内容小结文章解决问题 1️⃣ 在一些较为复杂的原理图绘制时,常需要使用到复用图块。何为复用图块,笔者摘取ST MB1136设计原理图纸可以较好表述这个功能,如下图所示: [本图摘取自NUCLEO-F103RB设计图纸 sheet 2 of 5] 图中左上角绿色图块为…

AI 绘画 - 建筑绘图辅助设计之 Controlnet SEG Depth

前情提要 2023-06-17 周六 杭州 雨转阴 小记: 周末的午休感觉还是没有尽兴,说是要乖乖休息却只是躺下闭目养神。 任务清单: a. Sketchup 安装和学习; b. Sketchup 建模学习; c. Controlnet SEG 语义分割基础; d. Controlnet Depth; 简介 应用实践 …

git 的基本操作

1. git建立本地仓库 在想要建立的目录下输入命令 git init 我们可以看一下 .git目录下有什么 2. 配置git本地仓库 配置用户的 name 和 email 命令:git config [...] 配置完后,我们像查看一下 刚才的配置 2.1 查看配置命令 git config -l 2.2 删除…

PyTorch的ONNX结合MNIST手写数字数据集的应用(.pth和.onnx的转换与onnx运行时)

在PyTorch以前的模型都是.pth格式,后面Meta跟微软一起做了一个.onnx的通用格式。这里对这两种格式文件,分别做一个介绍,依然使用MNIST数据集来做示例 1、CUDA下的pth文件 那pth文件里面是什么结构呢?其实在以前的文章就有介绍过…

HTML 超链接标签、图片标签

超链接标签 超链接描述 HTML使用标签<a>来设置超文本链接 超链接可以是一个字&#xff0c;一个词&#xff0c;或者一组词&#xff0c;也可以是一幅图像&#xff0c;您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。 <a href"url">链接文…

图片加载失败捕获上报及处理

图片加载失败捕获上报及处理 前端页面中加载最多的静态资源之一就是图片了&#xff0c;当出现图片加载失败时&#xff0c;非常影响用户体验。这时候我们就需要对图片是否成功加载进行判断&#xff0c;并对图片加载失败进行处理。 图片加载监听 单个捕获 HTML中的img标签可以…

微信小程序浏览docx,pdf等文件在线预览使用wx.openDocument

wx.downloadFile({ url: fileUrl,//pdf链接success(res) {wx.openDocument({ //打开文档filePath: res.tempFilePath,fileType: "pdf",//文档类型showMenu: true,success: function (res) {wx.showToast({title: 打开文档成功,})},fail: function (res) {wx.showToas…

springboot整合xxl-job

文章目录 前言一、xxl-job是什么&#xff1f;二、使用步骤1.下载源码,并部署好2.模仿xxl-job-executor-sample-springboot 自己建立一个服务1 引入xxl-job核心依赖2 创建服务,配置yml3 创建一个配置类,用于读取上述配置,并配置好handel信息4 创建一个执行器的任务类,用于执行真…

阵列模式综合第三部分:深度学习(附源码)

一、前言 这个例子展示了如何设计和训练卷积神经网络&#xff08;CNN&#xff09;来计算产生所需模式的元素权重。 二、介绍 模式合成是阵列处理中的一个重要课题。阵列权重有助于塑造传感器阵列的波束图案&#xff0c;以匹配所需图案。传统上&#xff0c;由于空间信号处理和频…