【一次成功】清华大学和智谱AI公司的ChatGLM-4-9B-Chat-1M大模型本地化部署教程

【一次成功】清华大学和智谱AI公司的ChatGLM-4-9B-Chat-1M大模型本地化部署教程

  • 一、环境准备
  • 二、ChatGLM-4-9B-Chat-1M简介
  • 三、模型下载
    • 2.1 安装Git LFS
    • 2.2 初始化仓库
    • 2.3 同步Git文件
    • 2.4 拉取文件
    • 2.5 下载完毕
  • 四、python和源码安装与下载
    • 4.1 安装python
    • 4.2 下载源码
    • 4.3 安装依赖
    • 4.4 python项目目录
  • 五、运行
    • 5.1 修改运行文件
    • 5.2 运行文件
    • 5.3 执行结果

一、环境准备

  • 操作系统:Windows 10 Intel® Core™ i7-14700KF 3.40 GHz 32G
  • Python:v3.12.2
  • pip:24.0
    在这里插入图片描述

二、ChatGLM-4-9B-Chat-1M简介

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出较高的性能。 除了能进行多轮对话,GLM-4-9B-Chat 还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等高级功能。 本代模型增加了多语言支持,支持包括日语,韩语,德语在内的 26 种语言。还推出了支持 1M 上下文长度(约 200 万中文字符)的模型。

三、模型下载

2.1 安装Git LFS

因为模型的问件较大,下载的话需要用到大文件插件,点击官网进行下载安装。
在这里插入图片描述

2.2 初始化仓库

git lfs install

2.3 同步Git文件

从阿里云的魔搭社区仓库文件中同步。

git clone https://www.modelscope.cn/ZhipuAI/glm-4-9b-chat-1m.git GLM-4-9B-Chat-1M

2.4 拉取文件

git lfs pull   

2.5 下载完毕

共计10个模型文件,每个约1.8G。
在这里插入图片描述

四、python和源码安装与下载

这里笔者走了两次弯路,

  1. python版本太高,下载了最新版本的文件,安装不了依赖,前提是没有按照requirements文件版本进行安装;
  2. 依赖直接下载,没有按照requirements文件进行下载,运行脚本时报以下错误,尝试解决未果,还是归结到环境。
The attention mask is not set and cannot be inferred from input because pad

4.1 安装python

从华为云镜像文件源下载。
在这里插入图片描述

4.2 下载源码

官方源码地址为:

https://github.com/THUDM/GLM-4.git   

4.3 安装依赖

运行此命令从清华大学镜像源下载依赖。

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

requirements.txt文件在源码目录下。

在这里插入图片描述
requirements.txt文件内容:

在这里插入图片描述

# 依赖项解释

## vllm
- **版本要求:** >=0.5.0
- **作用:** `vllm` 可能是指一个与机器学习相关的库,特别是用于语言模型。具体的细节和功能取决于库的实现。

## torch
- **版本要求:** >=2.3.0
- **作用:** `torch` 是 PyTorch 库,一个流行的开源机器学习库,用于 Python,提供广泛的 API 用于数值计算和神经网络。

## torchvision
- **版本要求:** >=0.18.0
- **作用:** `torchvision` 是 PyTorch 的视觉库,提供图像处理工具、数据集和预训练模型,主要用于计算机视觉任务。

## transformers
- **版本要求:** ==4.40.0
- **作用:** `transformers` 是 Hugging Face 提供的库,提供用于使用各种预训练模型(如 BERT、GPT-2 等)的 API,主要用于自然语言处理。

## huggingface-hub
- **版本要求:** >=0.23.1
- **作用:** `huggingface-hub` 是 Hugging Face 仓库的 Python 客户端,允许用户下载和使用模型、数据集和其他资源。

## sentencepiece
- **版本要求:** >=0.2.0
- **作用:** `sentencepiece` 是一个文本处理库,提供了一个无监督的文本分词器,用于文本分割和tokenization。

## pydantic
- **版本要求:** >=2.7.1
- **作用:** `pydantic` 是一个数据验证和设置管理工具,用于 Python 3.6+ 的类型提示,用于验证和序列化数据。

## timm
- **版本要求:** >=0.9.16
- **作用:** `timm` 是一个深度学习图像模型的 Python 库,提供了多种预训练模型和模型实用程序。

## tiktoken
- **版本要求:** >=0.7.0
- **作用:** `tiktoken` 是一个用于分割和计数 tokens 的库,常用于处理自然语言数据,特别是在使用特定模型时。

## accelerate
- **版本要求:** >=0.30.1
- **作用:** `accelerate` 是一个轻量级的库,用于加速 PyTorch 模型的训练,提供简单的 API 来优化训练过程。

## sentence_transformers
- **版本要求:** >=2.7.0
- **作用:** `sentence_transformers` 是一个用于计算句子、文档等的向量表示的 Python 库,提供了多种预训练模型。

## gradio
- **版本要求:** >=4.33.0
- **作用:** `gradio` 是一个用于创建简单 UI 的库,用于演示和测试机器学习模型,可以快速创建交互式界面。

## openai
- **版本要求:** >=1.34.0
- **作用:** `openai` 是 OpenAI API 的 Python 客户端,用于访问 OpenAI 的各种模型和服务,如 GPT-3。

## einops
- **版本要求:** >=0.7.0
- **作用:** `einops` 是一个用于张量操作的库,提供了一种简洁和可读的方式来重写、重塑和组合张量。

## sse-starlette
- **版本要求:** >=2.1.0
- **作用:** `sse-starlette` 是一个用于在 Python 3.6+ 中实现服务器发送事件(SSE)的库,用于构建实时 web 应用。

## bitsandbytes
- **版本要求:** >=0.43.1
- **作用:** `bitsandbytes` 是一个库,用于在 PyTorch 中实现更高效的内存使用和计算,特别是在使用低精度计算时。

## peft
- **版本要求:** >=0.11.0
- **作用:** `peft` 是 Parameter-Efficient Fine-Tuning 的缩写,是一个库,用于实现参数高效的微调方法,用于自然语言处理模型。如果你不使用 PEFT 微调模型,则不需要这个依赖项。

4.4 python项目目录

my_project/
|-- .git/                  # Git版本控制目录(如果使用Git)
|-- .gitignore             # Git忽略文件,用于指定不被Git跟踪的文件和目录
|-- .env                   # 环境变量文件,用于存储项目配置和环境变量
|-- .env.example           # 环境变量示例文件,用于提供给开发者参考
|-- .editorconfig          # 编辑器配置文件,用于统一不同编辑器的代码风格
|-- README.md              # 项目说明文件,使用Markdown格式
|-- LICENSE                # 项目许可证文件
|-- requirements.txt       # Python项目依赖文件,列出所有依赖的包和版本
|-- setup.py               # 项目安装脚本,用于安装项目及其依赖
|-- pytest.ini             # Pytest测试配置文件(如果使用Pytest)
|-- tests/                 # 测试目录,包含所有的测试代码
|   |-- __init__.py
|   |-- test_example.py
|-- src/                   # 源代码目录(推荐使用src来避免与第三方包混淆)
|   |-- my_project/        # 项目包目录
|       |-- __init__.py
|       |-- main.py        # 主程序入口
|       |-- utils.py       # 工具函数和类
|       |-- models/        # 模型目录
|           |-- __init__.py
|           |-- my_model.py
|       |-- data/          # 数据处理目录
|           |-- __init__.py
|           |-- dataset.py
|       |-- controllers/   # 控制器目录(如果使用MVC架构)
|           |-- __init__.py
|           |-- controller.py
|       |-- views/         # 视图目录(如果使用MVC架构或模板渲染)
|           |-- __init__.py
|           |-- templates/
|               |-- base.html
|               |-- index.html
|-- docs/                  # 项目文档目录
|   |-- index.rst
|   |-- ...
|-- examples/              # 示例代码目录
|   |-- example.py
|-- scripts/               # 脚本目录,包含可执行脚本
|   |-- run.sh
|-- config/                # 配置文件目录
|   |-- settings.py
|-- logs/                  # 日志文件目录
|-- .vscode/               # VS Code工作区配置目录(如果使用VS Code)
|-- Dockerfile             # Docker镜像构建文件
|-- docker-compose.yml     # Docker容器编排文件

五、运行

5.1 修改运行文件

修改trans_cli_demo.py文件
在这里插入图片描述
更改的内容为:
在这里插入图片描述

5.2 运行文件

 python.exe .\trans_cli_demo.py

5.3 执行结果

每个字的推理速度差不多是30s。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Monaco 中添加 CodeLens

CodeLens 会在指定代码行上添加一行可点击的文字,点击时可以触发定义的命令,效果如下: 通过调用 API 注册 LensProvider,点击时触发 Command,首先要注册命令,通过 editor.addCommand () 方法进行注册。三个…

韦东山嵌入式linux系列-LED驱动程序

之前学习STM32F103C8T6的时候,学习过对应GPIO的输出: 操作STM32的GPIO需要3个步骤: 使用RCC开启GPIO的时钟、使用GPIO_Init函数初始化GPIO、使用输入/输出函数控制GPIO口。 【STM32】GPIO输出-CSDN博客 这里再看看STM32MP157的GPIO引脚使用…

高通开发系列 - 使用QFIL工具单刷某个镜像文件

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 背景过程记录背景 有时候设备中刷的是user版本,无法使用fastboot刷单个镜像,这个时候该怎么办呢? 要解决在user…

Websocket在Java中的实践——整合Rabbitmq和STOMP

大纲 Rabbitmq开启STOMP支持 服务端依赖参数参数映射类配置类逻辑处理类 测试测试页面Controller测试案例 在《Websocket在Java中的实践——STOMP通信的最小Demo》一文中,我们使用enableSimpleBroker启用一个内置的内存级消息代理。本文我们将使用Rabbitmq作为消息代…

计算机类期刊横纵向对比

备注:综合影响因子更具针对性,将科技类期刊和人文社科期刊的影响力考虑,更加聚焦于某一特定科学领域;复合影响因子是基于期刊、学位论文、以及会议论文等多个类型的文献作为计算基础。 两者都是通过前两年发表的可被引文献在统计年…

pandas数据分析(8)

描述性统计量和数据聚合 描述性统计量 描述性统计量通过量化数据来概括数据集。DataFrame和Series可以通过sum、mean、count等方法来获取各种描述性统计量。在默认情况下会按照axis0返回一个Series,也就是说会得到一个有关列的统计量: 如果要计算行的统…

鼠标宏怎么设置?6款鼠标自动点击器强推,游戏玩家专用!(2024全)

随着电子游戏和日常应用的不断发展,我们经常会遇到一些重复性的任务或操作。而在这种情况下,鼠标宏以其自动化的特点成为了许多玩家和使用者的利器之一。如果你正在寻找如何设置鼠标宏来简化操作并提高效率,那么你来对地方了。在本文中&#…

理解算法复杂度:空间复杂度详解

引言 在计算机科学中,算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中,我们将深入探讨空间复杂度,了解其定义、常见类型以及如何进行分析。空间复杂度是衡量算法在执行过程中所需内存…

利用canvas压缩图片

前情提要 页面打印导出pdf文件的时候,图片大小会影响pdf文件大小。 为了减小pdf文件大小,需要将图片压缩一下。在只有图片地址的情况下,将图片压缩后显示,一开始用的browser-image-compression插件,这是js压缩&#x…

硬件产品设计过程:结构及硬件设计

目录 简介 设计管理问题 简介 之前也多次谈到硬件产品的设计分为多个过程,每个过程所涉及的内容也是完全不同的。 比如说: 后台、应用app层的开发;电子硬件设计;结构、ID设计;营销侧;生产管理侧;供应链管理侧等等。接下来就谈谈最近公司开发上的一些问题。 以往由于公…

docker nginx mysql redis

启动没有数据卷的nginx docker run -d -p 86:80 --name my-nginx nginx把/etc/nginx中的配置复制到宿主机 docker cp my-nginx:/etc/nginx /home/nginxlkl把/html 中的文件复制到宿主机 docker cp my-nginx:/etc/nginx /home/nginxlkl删除当前镜像 docker rm -f my-nginx重新起…

理解算法复杂度:时间复杂度详解

引言 在计算机科学中,算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中,我们将深入探讨时间复杂度,了解其定义、常见类型以及如何进行分析。 什么是时间复杂度? 时间复杂度…

【多语言独立站】什么是跨境电商独立站?||如何完成完善电商系统搭建

随着国际贸易的发展和互联网技术的不断提升,在跨境电商业务中,独立站是一个非常重要的组成部分。我们经常会听到的词语就是:「跨境电商独立站」、「外贸独立站」、「跨境独立站」、「电商独立站」等等。因此,我们可以发现独立站和…

【web前端HTML+CSS+JS】--- JS学习笔记03

一、JS介绍 可以在前端页面上进行逻辑处理,来解决表单的验证等问题,提升效率,直接在前端提示问题,减少服务器压力 应用1:可以做静态验证和动态验证(进行异步请求) 应用2:可以解析后…

Splunk Enterprise 任意文件读取漏洞(CVE-2024-36991)

文章目录 前言漏洞描述影响版本漏洞复现POC批量检测-nuclei脚本 修复建议 前言 Splunk Enterprise 是一款强大的机器数据管理和分析平台,能够实时收集、索引、搜索、分析和可视化来自各种数据源的日志和数据,帮助企业提升运营效率、增强安全性和优化业务…

【可视化还能免费做?!】数据安全不用愁,快来用这款免费可视化工具做智慧港口管理平台

在智慧港口的建设中,实现港口的统一调度是一项关键任务。山海鲸可视化,这款免费可视化工具,通过其卓越的功能和特色,为智慧港口的建设提供了强大的支持。从智慧港口的需求出发,结合船舶调度和货物转运的需求&#xff0…

「API取数」FDL获取金蝶云星空的单据数据

很多企业的ERP系统都在用金蝶云星空,金蝶云星空API是IT人员获取数据的重要来源, 常常用来生成定制化报表,进行数据分析,或是将金蝶云的数据与OA系统、BI工具集成。 通常情况下,IT人员需要使用Python、Java等语言编写脚…

Failed to get D-Bus connection: Operation not permitted

最近使用wsl安装了centOS7镜像,在系统中安装了docker服务,但是在执行systemctl start docker的时候遇到了:Failed to get D-Bus connection: Operation not permitted问题,查阅了很多资料都没有效果,最终找到了一种解决…

理解JS与多线程

理解JS与多线程 什么是四核四线程? 一个CPU有几个核它就可以跑多少个线程,四核四线程就说明这个CPU同一时间最多能够运行四个线程,四核八线程是使用了超线程技术,使得单个核像有两个核一样,速度比四核四线程有多提升。…

Q-Learning实战——找房间

介绍 样例来自A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程) 简单来说就是从某个房间开始,找到去目标房间的路径。 代码实现 import numpy as np from tqdm import tqdm, trangeroom_num 6 room_paths [(0, 4), (3, 4), (3, 1), (1, 5)…