从0开始搭建清华ChatGLM3 6b大模型(Windows RTX4090版)

目录

1、硬件及软件说明

2、安装Anaconda

3、安装Git版本控制

​4、安装pytorch驱动

5、安装ChatGLM3


1、硬件及软件说明

硬件:主要是GPU卡内存要足够,本次搭建使用的RTX4090卡一张,单卡内存24G,为什么选择4090?主要是4090在推理方面,可以媲美A100,尽管在训练方面一般,但是推理真的是性价比非常高的,管制之后,一张4090的卡行情在1.6W-2.2W元,RTX4090原本是在游戏领域。NVIDIA发布的RTX 40系列移动版显卡,并首次给笔记本带来了RTX 4090级别的型号,是一款性能非常好的显卡。

软件:操作系统windows10,内存32G,64位。

2、安装Anaconda

     我现在假定,你的主机是什么软件都没有安装(但cuda驱动先自己安装上,没有安装的也可以看前面的博文),从一个空白的主机开始搭建,一步一步搭建清华ChatGLM3 6B。所以首先是安装Anaconda,Anaconda是开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,用起来非常方便。

    1)下载Anaconda:Free Download | Anaconda
      我直接下载的是它的最新版本,对应的python版本为3.11

      下载好之后一路next就可以
     安装详细参考文档可以参考这个:Anaconda详细安装及使用教程(带图文) - 知乎
     测试是否安装好conda的命令,进入到dos命令行窗口,输入:conda --version
         

(1)创建虚拟环境:conda create -n py27 python=2.7
  (2)激活虚拟环境:conda activate env_name(环境名称)
  (3)  退出虚拟环境: deactivate env_name(环境名称)
(4)删除虚拟环境:conda remove -n env_name(环境名称) --all
(5)查看已创建的虚拟环境:conda env list  或 conda info -e  或  conda info --env
    在此,我们利用conda创建glm3的python虚拟环境

     命令:conda create -n glm3 python=3.10

     进入glm3环境,效果如下:activate glm3
   

3、安装Git版本控制

    因为要从阿里的魔塔社区通过git方式拉去相关镜像和代码,因此需要安装一下git版本控制软件git是世界上最先进的分布式版本控制系统,包括github,git以及阿里魔塔等都是基于git开发出来的代码版本管理平台,所以我们先安装git.
   下载地址:https://git-scm.com/download/win

   下载之后也是一路next安装就可以

    git软件安装参考:Windows下的详细Git安装_windows git安装-CSDN博客

    最后安装成功验证:git --version


4、安装pytorch驱动

      为了让python能够识别和使用gpu,我们需要一个包来识别出gpu,正好有那么一款机器学习的库有这个功能,它就是pytorch,PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。pytorch的版本非常重要,和cuda的版本,以及python的版本都很有关系,具体使用哪个版本,可以到pytorch官网查看(怎么安装pytorch也可以看我之前的文章【AI】Windows配置GPU Cuda驱动和Pytorch框架_配置了cuda驱动-CSDN博客)

      最关键的步骤之一,就是确定torch和torchVsion的版本,如果版本没有配套,就很容易出现各种妖孽的问题,确定地址是pytorch的官网:Start Locally | PyTorch

根据实际从官网生成了适合我们的pytorch安装命令

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

这个torch版本很重要,一定要适配,否则会出现诸如找不到cuda或者算法精度跑不出来的之类的要求问题。

前面已经完成了Cuda驱动、pytorch和torchVsion的安装,现在我们要测试一下是否能使用GPU环境。测试在python_gpu环境种,执行如下代码:

import torch

print(torch.cuda.is_available())

显示为True表示配置成功,可以成功调用cuda

当然也可以参考这里面的代码,测试一下gpu是否正常运行

#coding=gbk
# This is a sample Python script.
import torch
# Press Ctrl+空格 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.def test_gpu():import timeimport torch# 测试gpu计算耗时A = torch.ones(5000, 5000).to('cuda')B = torch.ones(5000, 5000).to('cuda')startTime2 = time.time()for i in range(100):C = torch.matmul(A, B)endTime2 = time.time()print('gpu计算总时长:', round((endTime2 - startTime2) * 1000, 2), 'ms')# 测试cpu计算耗时A = torch.ones(5000, 5000)B = torch.ones(5000, 5000)startTime1 = time.time()for i in range(100):C = torch.matmul(A, B)endTime1 = time.time()print('cpu计算总时长:', round((endTime1 - startTime1) * 1000, 2), 'ms')# Press the green button in the gutter to run the script.
if __name__ == '__main__':print(torch.cuda.is_available())test_gpu()

5、安装ChatGLM3

  从魔塔社区下载chatGLM3的源代码
  命令:git clone https://github.com/THUDM/ChatGLM3

    这里面requirements.txt记录了安装要以来的各种包

     进入到glm3 python虚拟环境执行安装,预计要等到好几个小时
     命令:conda activate glm3

      升级一下pip版本,这样下载更快点
     命令:pip install --upgrade pip

      执行依赖安装
      命令:pip install -r requirements.txt 

要等个把小时,安装完了以后,建议再执行下,确保torch版本ok:     

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

下载预训练模型
命令:git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

  6b的有7个2个g大小左右的大文件7个,但是下载速度还是非常快的

进入到basic_demo修改:cli_demo.py,把模型修改为自己下载的模型路径

再进入到glm3 python环境执行该脚本:python cli_demo.py

这就部署好了推理版本了,可以输入问题,进行问答,答案不咋地,但是也算答了

 启动页面版本:python  web_demo_streamlit.py,这样执行会报错

应是这个命令:streamlit run web_demo_streamlit.py

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

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

相关文章

如何在ArcGIS Pro中指定坐标系

在进行制图的时候,为了实现某些特定的效果,需要指定特定的坐标系,但是现有的数据可能不是所需要的坐标系,这时候就需要对现有的数据坐标系进行处理,这里为大家介绍一下ArcGIS Pro中指定坐标系的方法,希望能…

ECMAScript和JavaScript:深入理解它们的关系与区别

ECMAScript和JavaScript:深入理解它们的关系与区别 在讨论ECMAScript和JavaScript之间的关系及其区别时,我们首先需要澄清一些常见的误解。很多人会将这两个术语混为一谈,但实际上,它们指代的是不同的概念。今天,我们…

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M

STM32存储左右互搏 SPI总线读写FRAM MB85RS2M 在中低容量存储领域,除了FLASH的使用,,还有铁电存储器FRAM的使用,相对于FLASH,FRAM写操作时不需要预擦除,所以执行写操作时可以达到更高的速度,其…

蓝牙物联网漏洞攻击的几种方式?

在物联网日益普及的今天,蓝牙技术的广泛应用为我们的生活带来了诸多便利。然而,正如一枚硬币有两面,蓝牙技术的普及也带来了新的安全挑战。近日,一项关于蓝牙物联网漏洞攻击的研究引起了广泛关注。这项研究揭示了蓝牙物联网所面临…

机器视觉在食品安全检测领域的应用与展望

​随着人们生活水平的提高,对食品安全的要求也越来越高。在这种背景下,机器视觉技术作为一种高效、准确的自动化检测手段,在食品安全检测领域扮演着越来越重要的角色。机器视觉系统通过模拟人眼的视觉功能,借助相机和计算机视觉算…

魅族手机怎么录屏?高清视频,轻松录制!

“有人知道魅族手机怎么录屏吗,新买的魅族手机,用了几天感觉挺流畅的,功能也很齐全,最近因为工作原因,需要用到录屏功能,但是我不知道怎么打开,就想问问大家,魅族手机怎么录屏呀。”…

【qt】保存debug到log里

新建一个log.h #ifndef LOG_H #define LOG_H#include <QFile> #include <QTextStream> #include <QDateTime> #include <QMutex> #include <QDir>//选择屏幕打印还是输出到文件可以根据这个宏控制或者控制函数调用位置都可以 //#define _DEBUG …

ARM CCA机密计算架构软件栈简介

本博客描述了Arm机密计算架构(Arm CCA)的固件和软件组件。 在这篇博客中,您将学到如何: 列出组成Arm CCA软件栈的组件集了解Arm CCA引入新软件组件的原因了解监视器和领域管理监视器(RMM)的角色了解如何创建和管理领域1.1 开始之前 我们假设您熟悉AArch64异常模型、AAr…

2024 年 8 款值得收藏的免费 Android 数据恢复软件

如果你发现手机数据全部被删除&#xff0c;先别慌&#xff0c;今天这个视频就来教你如何恢复。 随着市场上数据恢复软件的可用性不断增加&#xff0c;很难选择哪一款是最好的。今天&#xff0c;我们精心挑选了8个最佳免费Android数据恢复软件。他们肯定会帮助你决定最适合你需…

JAVA对象、List、Map和JSON之间的相互转换

JAVA对象、List、Map和JSON之间的相互转换 1.Java中对象和json互转2.Java中list和json互转3.Java中map和json互转 1.Java中对象和json互转 Object obj new Object(); String objJson JSONObject.toJSONString(obj);//java对象转json Object newObj JSONObject.parseObject(…

ECMAScript和JavaScript的区别

ECMAScript 和 JavaScript 之间的区别在于它们各自的定义和用途&#xff1a; ECMAScript 定义&#xff1a; ECMAScript 是 JavaScript 语言的规范。 它是由 Ecma 国际组织的 TC39 委员会开发的标准化脚本语言规范。 作用&#xff1a; ECMAScript 定义了脚本语言的语法、类型、…

引导过程的解析以及教程za

bios加电自检------mbr--------grub-------加载内核文件------启动第一个进程 bios的主要作用&#xff1a;检测硬件是否正常&#xff0c;然后根据bios中的启动项设置&#xff0c;去找内核文件 boot开机启动项顺序&#xff0c;你可以把内核文件放在何处&#xff1f; 1.硬盘 …

Python分支语句

if 语句 if用来根据一个条件判断是否要执行某段逻辑代码&#xff0c;语法是&#xff1a; if 条件:pass这里的条件指的是通过条件运算符和逻辑运算符组成的一个条件表达式&#xff0c;或者就是一个布尔值。有些特殊的使用场景下&#xff0c;也可以直接跟变量名&#xff0c;遵循…

CMake入门教程【基础篇】条件语句(if)

文章目录 if语句语法比较运算符字符串比较文件和目录判断变量判断布尔表达式正则表达式匹配函数和宏判断 示例应用比较运算符示例字符串比较示例文件和目录判断示例变量判断示例布尔表达式示例正则表达式匹配示例函数和宏判断示例 结论 #mermaid-svg-LGW4z5n9jNvtC9OT {font-fa…

ChatGPT 进行 SEO的使用技巧

搜索引擎优化 (SEO) 是使网站对搜索引擎友好的一种不断发展的实践。 自搜索引擎和新兴技术的发展以来&#xff0c;它从未保持不变。 最近发布的 ChatGPT 是一种人工智能对话工具&#xff0c;似乎在搜索引擎优化方面有很好的应用。 从创建吸引人的标题到只需一个简短的提示就可…

QML 中自定义虚拟键盘

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 我们知道 Qt 中虚拟键盘模块遵循的是 GPL 协议&#xff0c;是不可用于商业发布的。如果项目中使用了 Qt 自带的虚拟键盘&#xff…

解决java接口使用spring-validation验证入参类型为List校验不生效的问题

由于 List 是接口,无法直接用于参数验证,但可以通过实现类重写 List 接口,把此实现类作为校验dto即可 dto标记: 一、直接使用 List 入参类型,不生效示例: @ApiOperation(value = "公共测试接口")@PostMapping("/testPublicApi")public CommonResult&…

vue +elementui 项目登录通过不同账号切换侧边栏菜单的颜色

前景提要&#xff1a;要求不同权限账号登录侧边栏颜色不一样。分为 theme&#xff1a;1代表默认样式&#xff0c;theme:2代表深色主题样式。 1.首先定义一个主题文件 theme.js&#xff0c;定义两个主题样式 // 主要是切换菜单栏和菜单头部主题的设计&#xff0c;整体主题样式切…

【7z压缩包】7z压缩包没密码怎么办

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…

牙科废水处理设备详细介绍

诸城市鑫淼环保小编带大家了解一下牙科废水处理设备详细介绍 原理&#xff1a; 牙科废水处理设备通常采用物理、化学和生物处理技术&#xff0c;结合多个步骤进行处理&#xff0c;以将废水中的污染物去除或转化为较为安全的形式。 1.物理处理&#xff1a;包括初级过滤&#xff…