全网最新版ChatGLM-6B开源模型环境详细部署及安装——如何在低显存单显卡上面安装私有ChatGPT GPT-4大语言模型

news2025/1/22 15:58:32

目录

  • 前言
    • 前期准备
      • 电脑要求
      • 安装anaconda
      • 安装相应版本的CUDA
      • 配置ChatGLM-6B Conda环境
      • 安装pytorch
  • ChatGLM-6B最新版模型环境部署及安装
    • 源码下载
    • 模型下载
    • 相关库安装
    • 运行web演示
    • 作为API部署
  • 参考资料
  • 其它资料下载

前言

ChatGPT的爆火让许多公司和个人都想要开发自己的大型语言模型,但是,由于算力和语言模型开发能力等诸多方面的限制,许多人最终都只能在开发的早期阶段止步不前。然而,近期清华大学知识工程和数据挖掘小组(Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University)发布了对话机器人ChatGLM-6B的开源版本,这一切都变得更加容易了。

这个中英文语言模型拥有千亿参数规模,并且对中文进行了优化。本次开源的版本是其60亿参数的小规模版本,仅需要6GB显存就可以在本地部署。这意味着,即使是在普通显卡的电脑上,也可以轻松部署一个类似于GPT的大型语言模型。这是一个令人振奋的时刻,让我们一起期待中国版ChatGPT更多的创新和突破!

在这里插入图片描述

量化等级最低 GPU 显存(推理)最低 GPU 显存(高效参数微调)
FP16(无量化)13 GB14 GB
INT88 GB9 GB
INT46 GB7 GB

前期准备

电脑要求

  • python版本要求:3.8
  • windows系统:Windows 7 or later (with C++ redistributable)
  • 显卡:6G以上GPU

安装anaconda

从anaconda官网,下载安装anaconda。具体教程详见官网教程。
在这里插入图片描述

安装相应版本的CUDA

首先在终端查看你的Nividian版本,命令如下:

nvidia-smi

在这里插入图片描述
查看到本机可装CUDA版本最高为12.0,版本向下兼容,意思就是CUDA 12.0及以下版本的都可以安装,但一般不建议使用最新版本的。因为可能后续其他安装包没有更新对应版本的可以下载。由于Pytorch(可以从pytorch官网)中可以看到,目前的CUDA版本一般是11.7和11.8,所以建议选择11.8版本以下的。博主这里选择了11.7进行安装。
在这里插入图片描述

安装完后,注意需要看下系统环境变量中地址有没有相应版本的cuda,比如我的电脑就是配置了下面几个环境变量
在这里插入图片描述
除上面两个之外 ,还可以加入以下环境变量,以保证不会出错。我没配置下面两个,也没出错,所以大家根据实际情况选择是否加入下面两个环境配置。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\CUPTI\lib64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include

不配置可能会报错,Could not load dynamic library ‘cudart64_110.dll’; dlerror: cudart64_110.dll not found

配置ChatGLM-6B Conda环境

首先以管理员方式启动windows命令窗口,在搜索中输入cmd即可打开,输入以下命令,新建一个名字为ChatGLM的环境,并安装tensorflow-gpu版本。新建环境过程中选择y,进入下一步

conda create --name ChatGLM python==3.8.10

接下来激活ChatGLM的环境

conda activate ChatGLM

安装pytorch

如果电脑配置了GPU,要注意需安装GPU版本的pytorch,具体可登录官网链接:

这里要注意选择你是什么系统,cuda是安装了什么版本(博主前面选择的是11.7),然后复制下面红框中的命令到终端就可以安装了。

在这里插入图片描述
在终端运行下面命令,即可安装成功pytorch-GPU版本:

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

在终端输入python,然后依次输入下面代码,验证torch-GPU版本是不是成功。

import torch
torch.cuda.is_available()  ## 输出应该是True

在这里插入图片描述

ChatGLM-6B最新版模型环境部署及安装

源码下载

登录github官方地址下载源码或者直接使用git命令clone:

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

接着在源码所在文件夹下,新建model文件夹

在这里插入图片描述

模型下载

从hugging face下载所有文件下来,放到model文件夹内。

其中模型文件(大于 1G 的)如果下载速度慢,可以在国内清华云源中单独下载这几个模型文件(其他这个源没有的文件还是需要在 huggingface 上下载):https://cloud.tsinghua.edu.cn/d/fb9f16d6dc8f482596c2/

最后model文件夹内应该如下显示:

在这里插入图片描述

相关库安装

在终端下打开ChatGLM-6B安装的目录,然后运行下面命令,安装相关库:

pip3 insta11 -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simp1e

在这里插入图片描述

运行web演示

在运行之前,需要先修改web_demo.py文件中的模型地址,具体为第5行与第6行,具体如下:
在这里插入图片描述

tokenizer = AutoTokenizer.from_pretrained("model", trust_remote_code=True)
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().cuda()

温馨提示,根据实际显卡显存,可以更改第6行关于model运行方式:

# 6G 显存可以 4 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(4).cuda()

# 10G 显存可以 8 bit 量化
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().quantize(8).cuda()

# 14G 以上显存可以直接不量化,博主显存为16G选择的就是这个
model = AutoModel.from_pretrained("model", trust_remote_code=True).half().cuda()

在终端输入命令,注意不要用python3,因为可能会使用到其它环境下的python。

python web_demo.py

刚开始运行,需要等到1-2分钟加载本地模型:

在这里插入图片描述
接着在浏览器打开:http://127.0.0.1:7861,就可以开始体验ChatGLM-6B了。博主体验了下,生成速度还是很快。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

作为API部署

首先需要安装额外的依赖

pip install fastapi uvicorn

然后运行仓库中的 api.py:

python api.py

默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'

得到的返回值为

{
  "response":"你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。",
  "history":[["你好","你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]],
  "status":200,
  "time":"2023-03-23 21:38:40"
}

参考资料

ChatGLM-6B 博客
ChatGLM-6B 官方github地址

其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

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

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

相关文章

多模态之clip

论文:Learning Transferable Visual Models From Natural Language Supervision Github:https://github.com/OpenAI/CLIP OpenAI出品 论文通过网络爬取4亿(image, text)对,使用对比学习的方法训练得到clip(Contrastive Languag…

golang 输出固定位数的整数

需求:将0输出为000,99输出为099 c# Console.WriteLine(0.ToString("000")); Console.WriteLine(99.ToString("000"));go fmt.Printf("%03d", 0) fmt.Printf("%03d", 99)运行效果:

深入浅出Java中参数传递的原理

前言 今天,想和大家聊聊关于java中的参数传递的原理,参数的传递有两种,值传递和引用传递。 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参…

windows系统 vmware17安装ubuntu server 22.04.2

vmware17 创建虚拟机 新建虚拟机 选择镜像文件:我这个镜像文件是需要联网才能安装的 设置虚拟机名称,设置存储路径 根据用户实际使用情况设置合适的大小:比如我是用来安装wvp平台的,20g太小,导致安装出现问题。 最…

scratch猫猫的儿童节 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年3月

目录 scratch猫猫的儿童节 一、题目要求 1、准备工作 2、功能实现 二、案例分析

如何使用java编写差分进化算法

差分进化算法属于一种进化算法,以全局最优性、收敛速度快等特点,得到很多学者的关注,并将其扩展到参数优化、数值优化、工程优化、路径优化、机器学习等一系列研究中。 而差分进化算法的原理即过程又是什么呢? 一、什么是差分进化算法 差分进化算法的原理属于内部寻优机…

假期出行小程序+chatgpt旅游攻略

马上五一了,如果想出去旅游,需要提取规划好路线图,我们可以借助chatgpt的路线规划功能帮我们生成一份攻略,按照攻略我们就可以愉快的出去玩耍了。 本文结合chatgpt,利用低代码工具帮我们制作一份旅行导览小程序&#…

揭秘!我用AI写了一部精彩小说;搭建AI视频创作工作流;一键生成摘要工具清单;大模型创业生死5问 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『大型语言模型 (LLM) 进化树』追踪近年来语言模型的发展 作者团队梳理了自2018年以来大语言模型的发展历程,并可视化成了…

Windows Vscode 远程连接Ubuntu, vscode检测到#include错误请更新includePath的解决方法

(闭坑)首先,我们要明白一点,就是我们在windows用vscode 远程连接了Ubuntu后,我们的Vscode的环境就是Ubuntu,不再是window了,所以出现问题,应该想到的是Ubuntu上的环境问题,而不是win…

Android逆向实战(一)腾讯新闻去开屏广告

上次反编译一个工具类app失败,原因是使用了360加固,回编译后无法启动。一般来讲,大厂的app考虑到性能、兼容性、包体积等,通常不用加固。因此,本次我们选一个大一些的app-腾讯新闻。写在前面:本篇博客仅用来…

优秀简历的HR视角:怎样打造一份称心如意的简历?

简历的排版应该简洁工整,注重细节。需要注意对齐和标点符号的使用,因为在排版上的细节需要下很大功夫。除此之外,下面重点讲述几点简历内容需要注意的地方。 要点1:不相关的不要写。 尤其是与应聘岗位毫不相关的实习经历&#x…

记一次峰回路转的注入

0X01 背景 自己之前写过一篇记录,当时是由于之前是一位校友刚做开发,叫我友情帮忙测试一波,由于是开发的新手,漏洞比较多,所以直接从注入开始讲起,但是到getshell的过程也算是一场峰回路转再跌跌撞撞的路程…

浏览器内核,chrominum = blink = webkit+

借鉴:浏览器内核有几种?深度解析浏览器内核工作原理和版本区别 1.什么是浏览器内核 广义上:浏览器内核 js引擎 渲染引擎。但是,由于js引擎越来越独立(比如chrome的V8)。所以,目前 浏览器内核 渲染引擎。 2、市面上…

hibernate多对多关系表的搭建和‘增删改查’

hibernate框架——数据库的多对多关系! 众所周知,数据库有三种数据模型,一对一,一对多,多对多,在前面的文章中主要介绍了一对一和一对多的表关系搭建和使用sql语句进行增删改查。 使用hibernate框架主要分…

web集群第二次作业

文章目录 1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 CentOS 7 构建 LVS-DR 群集。1、环境准备2、安装httpd准备两个web页面3、配置LVS负载均衡服务4、手工在RS端绑定VIP,添加本机访问VIP的路由信息5、手工在RS端抑制AR…

Turtle海龟画图

介绍 简单的一个窗口绘图工具。 提供一个小海龟,可以看做一个机器人,能够听得懂有限的命令。 三种命令 运动命令 forward(d) 向前移动D长度 backward(d) 向后移动D长度 right(d) 向右转动多少度 left(d) 向左转动多少度 goto(x,y) …

我让AI帮忙生成算法,Auto-GPT对比ChatGPT、文心一言,结果出人意料...

🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝 我让AI帮忙生成算法,Auto-GPT对比ChatGPT、文心一言,结果出人意料… 文章目录 &#x…

如何在 Python 中获取字典交集

本文将讨论在 Python 中对两个或多个字典执行交集的不同方法。 文章目录 Python字典在 Python 中使用字典推导来交叉两个字典使用按位 & 运算符在 Python 中对两个字典进行交集使用 Set intersection() 方法在 Python 中将两个字典相交在 Python 中用于交叉多个字典的方法总…

C-预处理

文章目录 预处理宏定义数值宏常量字符串宏常量使用宏充当注释去注释和宏替换谁先进行 用define宏定义表达式在if判断语句之后多条语句没有{}导致出错 定义不能带空格 #undef 条件编译#ifdef ifndef:判定的是宏是否被定义#if-#endif:宏定义是否为真宏定义进行多条件筛选#ifdef &…

听好程序员一句劝!零基础这样学Java才是正确的方式!

有一说一,Java还是现在很多新手入门学习的首选之一,新手学Java入门从哪里开始学?很多入门的小伙伴都会疑惑,今天好程序员给大家分享一下,超适合菜鸟入门的 Java学习路线 第一步,JavaSE,这是Java…