chatGLM 本地部署(windows+linux)

chatGLM算是个相对友好的模型,支持中英文双语的对话交流,清华出的
我的教程无需特别的网络设置,不过部分情况因为国内网络速度慢,需要反复重复

chatGLM github地址

一、硬件需求

N卡8G显存以上,最好16G以上,我用的是RTX4090做的测试,生成语言时很流畅,和正常人语速差不多,占用显卡资源不高,大概15%,没优化显存的情况下大概14G。
对内存需求不高,16G内存的设备就能运行。

二、基础环境

我才用conda的方式进行安装,需要首先安装下面的基础环境(这些环境通常已经有了)
windows和linux的安装方法基本一致。

1.conda安装

anaconda安装(win+linux)

2.cuda安装

我用的是11.8的cuda。
如果没有安装,按照我的这个教程:
cuda安装(linux)
cuda安装(windows)

3.pytorch

在下面具体的conda环境中配置

三、安装

没有具体说明的就是windows和linux通用的部分,linux如果权限不够自行提root,windows下的命令默认在cmd中运行,下面不在复述。windows下我放到C分区目录下,linux我放到/usr/local下

1.创建conda环境

conda create -n chatglm python=3.10.8
conda activate chatglm

2.安装pytorch

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

3.下载源码或者用git

如果是用git下载
windows下

cd C:/
git clone https://github.com/THUDM/ChatGLM-6B.git

linux下

cd /usr/local
git clone https://github.com/THUDM/ChatGLM-6B.git

在这里插入图片描述
如果下载的是zip文件,记得改名,下载下来的包后面又main字样去掉,要不后面的命令都是错的

4.安装pytorch

直接下载速度会较慢,需要重复尝试,建议解决网络问题更方便。

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

5.安装源码

windows进入下面的目录,自行改名

cd C:\ChatGLM-6B

linux进入下面的目录

cd /usr/local/ChatGLM-6B

安装官方的列表内容

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

5.安装其它依赖

有些依赖官方没有写上,但是实际是需要的。

pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install streamlit-chat -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install chardet -i https://pypi.tuna.tsinghua.edu.cn/simple

6.启动执行

streamlit run web_demo2.py

7.进入web界面

访问ip:8501/
在对话框中输入问题
请添加图片描述

8.自动下载模型

首次提问后,先会去下载模型(可以在后台看到,耐心等待)

下载模型很快的,默认的网络速度很快,下载完成后就会回答你的问题。

四、其它

1.商用

官方写的是可以免费商用,需要申请,通过后给证书

2.作为api

如果要用api调用,官方也有说明

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

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

相关文章

SuperMap GIS基础产品桌面GIS FAQ集锦(5)

SuperMap GIS基础产品桌面GIS FAQ集锦(5) 【iDesktop】【iDesktopX】态势推演怎么使用? 【解决办法】 1、要先新建一个CAD数据集,然后将标绘加到CAD数据集中。 2、再使用态势推演管理器,右键新建分组。 3、选中场景中的…

【算法|数组】手撕经典二分法

算法|数组——二分查找 文章目录 算法|数组——二分查找引言二分查找左闭右闭写法左闭右开写法 总结 引言 首先学习这个算法之前需要了解数组知识:数组。 大概介绍以下: 数组是存储在连续内存空间上的相同类型数据的集合。数组下标都是从0开始。数组在…

数学建模—多元线性回归分析(+lasso回归的操作)

第一部分:回归分析的介绍 定义:回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的人数就是,通过研究自变量X和因变量Y的相关关系,尝试去解释…

webshell链接工具-Godzilla(哥斯拉)

项目地址 https://github.com/BeichenDream/Godzilla

势不可挡!新能源车型L2搭载率破50%,TOP20品牌数据出炉

中国乘用车市场正在走出去年的阴霾。 机构公开数据显示,2023年上半年中国乘用车市场产量1100.77万辆,同比增长7.5%;终端销量959.08万辆,同比增长4.7%;乘用车出口152.36万辆,同比增长87.6%。 在实际交付量…

JMeter启动时常见的错误

很多小伙伴在学工具这一块时,安装也是很吃力的一个问题,之前记得有说过怎么安装jmeter这个工具。那么你要启动jmeter的时候,一些粉丝就会碰到如下几个问题。 1.解压下载好的jmeter安装,Windows 平台,双击 jmeter/bin …

中间件RabbitMQ消息队列介绍

1. MQ的相关概念 1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息…

protobuf 2定义string常量

背景 protobuf 2中定义的enum枚举值必须为数字类型,故不支持string类型,但有些业务场景又确实需要定义string常量。 目标 在protobuf 2中定义string常量。 方案 思路:通optional default实现string常量。 细节: 1、protobu…

Flink CEP(三)pattern动态更新

线上运行的CEP中肯定经常遇到规则变更的情况,如果每次变更时都将任务重启、重新发布是非常不优雅的。尤其在营销或者风控这种对实时性要求比较高的场景,如果规则窗口过长(一两个星期),状态过大,就会导致重启…

【云原生】Docker-Compose全方面学习

目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可…

Acwing.883 高斯消元解线性方程组

题目 输入一个包含n个方程n个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含m个方程n个未知数的线性方程组示例: 输入格式 第一行包含整数n。 接下来n行,每行包含n1个实数,表示一个方程的n个系数以及等号右侧的常数。 …

《向量数据库指南》——Rockset 为实时数据库添加向量嵌入支持(一)

同样,Venkataramani——除了是 Rockset 的联合创始人外,还担任首席执行官——表示,增加对向量嵌入的支持的关键方面是供应商现在使用户能够在一个位置管理和探索所有类型的数据。 “一个单一的数据库现在可以存储你的结构化数据、半结构化数据和你的向量嵌入来构建丰富的…

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件的原因及解决方法

今天我在用node.js的时候,结果出现如下错误: C:\Users\xiesj> vue -v vue不是内部或外部命令,也不是可运行的程序或批处理文件。 原因: 1、确定npm是否已正确安装? 2、确定vue以及vue-cli已正确安装?…

记录线上一次mysql只能查询,不能插入或更新的bug

错误复现 突然有一天产品通知xx服务不可用,想着最近也没有服务更新,就先排查一下服务日志 使用postman测试的时候请求明显超时,查看日志显示是一个锁的问题 使用工具连接到mysql,查看information_schema.INNODB_TRX,发现有一个事…

【C++】做一个飞机空战小游戏(五)——getch()控制两个飞机图标移动(控制光标位置)

[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

二、 MySQL 内部技术架构

二、 MySQL 内部技术架构 047 Mysql内部支持缓存查询吗? 当MySQL接收到客户端的查询SQL之后,仅仅只需要对其进行相应的权限验证之后,就会通过Query Cache来查找结果,甚至都不需要经过Optimizer模块进行执行计划的分析优化&…

杀手锏SwissTable

杀手锏SwissTable 0.导语 最近在研究HashJoin的性能,发现SwissTable的性能真牛逼,对于原生的哈希表采用STL的unordered_multimap,其性能一般,为了加速这个查找,Arrow提供了SwissJoin,其实现原理为SwissTabl…

Java GUI——网页浏览器开发

Java GUI——网页浏览器开发 前言:为了做java课设,学了一手Java GUI。感觉蛮有意思的,写写文章,做个视频记录一下。欢迎大家友善指出我的不足 网页浏览器开发录制视频,从头敲到尾 任务需求 界面需求 菜单栏 文件 【…

接口测试之文件上传

在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式…

vue3中使用vue-simple-uploader

vue-simple-uploader本身是基于vue2的,直接npm i vue-simple-uploader -S下载下来版本的是0.7.6。在vue3中无法使用会报错。 解决:使用next安装接下来要发布的版本就会下载1.0.1版本,即可使用vue3 npm i vue-simple-uploadernext -S 注意&…