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

一、环境准备

  • 操作系统: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。
在这里插入图片描述

<think>好的,我现在需要帮用户解决如何在云服务器上部署GLM-4-9B-Chat模型并集成到RAG应用的问题。首先,我得理清楚用户的需求。用户提到了云服务器部署RAG应用集成,所以可能需要分步骤来讲解,从环境准备到模型部署,再到RAG的整合。 先看看用户提供的引用内容。引用[1]提到老牛同学通过Git下载PyTorch参数文件在本地部署,但用户问的是云服务器,所以可能需要类似的步骤,但需要考虑云环境的不同。引用[4]提到了使用Xinference部署本地模型,还有百度网盘ModelScope的下载链接,这可能对获取模型文件有帮助。此外,引用[3]提到了使用LongAlign的代码环境来训练,但用户需要的是部署,可能这部分暂时用不上。引用[2]说明了GLM-4-9B的不同版本,包括Chat版本,所以需要确认用户下载的是正确的模型文件。 接下来,我需要考虑部署的基本流程。首先,云服务器的选择,可能推荐主流的比如AWS、阿里云或者腾讯云,特别是GPU实例,因为大模型需要GPU加速。然后,安装必要的依赖,比如Python、PyTorch、CUDA等。接着,下载模型文件,用户提供的引用里有Git百度网盘的链接,可能需要指导用户如何下载解压。然后,部署模型,这里可能需要使用像Xinference或者Hugging Face的transformers库来加载模型。还要考虑如何启动API服务,以便RAG应用调用。 关于RAG集成,可能需要介绍RAG的基本流程,包括文档处理、向量数据库的使用、检索生成。引用[3]提到Embedding模型,用户可能需要下载并使用合适的Embedding模型来处理文档,比如BGE或OpenAI的text-embedding。然后,结合检索结果用户查询,调用GLM模型生成答案。此外,引用[4]提到Dify平台,或许可以介绍如何使用Dify来搭建本地知识库,但用户的问题更偏向于自己集成到RAG,所以可能需要详细说明如何将模型嵌入到现有的RAG架构中。 需要注意的潜在问题包括云服务器的GPU配置是否足够,模型文件的大小下载方式,以及依赖库的版本兼容性。例如,PyTorchCUDA的版本需要匹配,否则可能导致运行错误。此外,部署后的API需要考虑网络配置,比如端口开放安全设置,确保外部应用可以访问。 用户可能还关心性能优化,比如如何利用云服务器的多GPU进行模型并行,或者如何量化模型以减少内存占用。引用[2]提到GLM-4-9B有不同上下文长度的版本,用户需要根据应用场景选择合适的模型,比如需要处理长文本的话选择1M版本。 最后,生成相关问题的时候,需要考虑用户可能进一步的问题,比如性能调优、处理长文本的方法,或者如何与其他工具集成。需要确保这些问题与当前主题相关,并且能够帮助用户深入理解部署应用的细节。 总结一下,回答的结构应该是分步骤的教程,涵盖环境准备、模型部署、RAG集成,以及注意事项优化建议。同时,引用相关的资料来支持步骤的可行性,比如模型下载链接部署工具。</think>### 在云服务器部署GLM-4-9B-Chat并集成到RAG的教程 #### 一、环境准备 1. **云服务器配置** - 选择支持GPU的实例(如NVIDIA A10/A100),建议显存≥24GB,内存≥32GB,存储≥100GB(模型文件约18GB)[^2][^4]。 - 安装CUDA 11.8+、cuDNN 8.9+,配置Python 3.9+环境。 2. **依赖安装** ```bash pip install torch==2.1.0 transformers==4.35.0 xinference huggingface_hub ``` #### 二、模型部署 1. **下载模型文件** 通过ModelScope或百度网盘获取模型(需提前申请权限): ```bash git clone https://www.modelscope.cn/zhipuai/glm-4-9b-chat.git # 或从网盘解压后上传至云服务器 /models/glm-4-9b-chat 目录 ``` 2. **启动Xinference服务** 使用轻量级框架部署API: ```bash xinference-local --host 0.0.0.0 --port 9997 \ --model-engine pytorch \ --model-path /models/glm-4-9b-chat \ --device gpu ``` 验证接口: ```python import requests response = requests.post("http://IP:9997/v1/chat/completions", json={ "model": "glm-4-9b-chat", "messages": [{"role": "user", "content": "你好"}] }) print(response.json()) ``` #### 三、RAG集成 1. **文档处理与向量化** - 使用BGE-Chinese-1.5模型生成向量: ```python from sentence_transformers import SentenceTransformer encoder = SentenceTransformer(&#39;BAAI/bge-large-zh-v1.5&#39;) embeddings = encoder.encode(["文本示例"]) ``` - 存入向量数据库(如FAISS或Milvus)。 2. **检索增强生成流程** ```python def rag_query(question): # 1. 检索相关文档 query_vec = encoder.encode(question) results = vector_db.search(query_vec, top_k=3) # 2. 构造提示词 context = "\n".join(results) prompt = f"基于以下信息回答问题:\n{context}\n\n问题:{question}" # 3. 调用GLM-4-9B生成 response = requests.post("http://localhost:9997/v1/chat/completions", json={ "model": "glm-4-9b-chat", "messages": [{"role": "user", "content": prompt}], "temperature": 0.3 }) return response.json()["choices"][0]["message"]["content"] ``` #### 四、优化建议 1. **性能调优** - 启用动态批处理:通过`xinference`的`--batch-size`参数提高GPU利用率 - 量化压缩:使用`bitsandbytes`库实现8-bit量化[^3] 2. **长上下文支持** 若需处理超长文本(如1M token版本),需修改推理代码的注意力窗口参数: ```python model = AutoModel.from_pretrained("glm-4-9b-chat", trust_remote_code=True, max_sequence_length=1024000) ``` #### 五、注意事项 - 网络安全:建议在API层添加HTTPS鉴权(如API Key) - 成本控制:云服务器按需启停实例,监控GPU使用率 - 版本兼容性:确保`transformers`库≥4.35以支持GLM架构 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻上飞

鼓励一下这只勤劳的小蜜蜂吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值