ChatGLM-6B 部署与使用指南
ChatGLM-6B 是清华大学与智谱 AI 开源的一款对话语言模型,基于 General Language Model (GLM) 架构,参数达到 62 亿,因其卓越的语言理解与生成能力,受到广泛关注。
一、在 DAMODEL 上部署 ChatGLM-6B
DAMODEL(丹摩智算)为 AI 提供强大的算力和基础设施支持。
1.1 实例创建
进入 DAMODEL 控制台,选择资源中的 GPU 云实例,然后点击“创建实例”。
配置付费模式为按量付费,选择 NVIDIA GeForce RTX 4090 GPU,具有 60GB 内存和 24GB 显存。继续配置 50GB 的数据硬盘,选择 PyTorch 1.13.1 镜像启动。创建密钥对,完成实例创建。
1.2 模型准备
启动实例后,打开终端,使用 git 克隆 ChatGLM-6B 项目。如果 GitHub 连接不畅,
可选择其他站点或离线下载。
git clone https://gitcode.com/applib/ChatGLM-6B.git
安装完成后,
进入项目目录后,使用以下命令安装依赖:
pip install -r requirements.txt
利用 DAMODEL 提供的上传功能,将 Hugging Face 上的 ChatGLM-6B 预训练模型文件上传至 /root/shared-storage
目录。方法:
我们可以通过魔塔社区进行下载
下载完成后进行上传和解压即可。
1.3 模型启动
上传并解压模型后,通过 cli_demo.py
或 web_demo.py
启动模型。将模型加载路径修改为本地路径,使用命令:
python cli_demo.py
在终端中进行交互,或通过 Web 接口与模型进行对话。
python web_demo.py
二、通过 Web API 实现本地调用
2.1 启动 API 服务
运行 api.py
文件,启动 FastAPI 服务,接受 HTTP POST 请求。此请求体包括生成文本所需的各项参数(如 prompt、history 等)。启动成功后,服务器将准备好响应请求。
cd ChatGLM-6B
python api.py
2.2 开放端口
在访问控制中,添加需要开放的端口,并复制生成的访问链接,以便后续使用。
然后点击添加端口,输入端口号并确定开放。
2.3 使用 PostMan 测试功能
通过 PostMan 发送 POST 请求,测试 API 是否正常工作。示例请求体如下:
{
"prompt": "你好,你是谁?",
"max_length": 512,
"top_p": 0.9,
"temperature": 0.7
}
若返回状态码为 200,则表示请求成功。
2.4 本地代码使用示例
以下是一个基础的单轮对话代码示例:
import requests
import json
api_url = "http://your-api-url"
data = {
"prompt": "你好,你是谁?",
"max_length": 500,
"top_p": 0.9,
"temperature": 1.0
}
response = requests.post(api_url, json=data)
if response.status_code == 200:
result = response.json()
print("Response:", result['response'])
else:
print("Error:", response.status_code)
多轮对话示例
以下是支持多轮对话的示例代码:
import requests
import json
api_url = "http://your-api-url"
conversation_history = []
while True:
query = input("用户:")
if query.strip().lower() == "stop":
break
prompt = query
data = {
"prompt": prompt,
"history": conversation_history,
"max_length": 5000,
"top_p": 0.9,
"temperature": 0.9
}
response = requests.post(api_url, json=data)
if response.status_code == 200:
result = response.json()
print("Response:", result['response'])
conversation_history = result['history']
else:
print("Error:", response.status_code)
通过这些步骤,您可以在本地实现与 ChatGLM-6B 模型的对话。无论是技术开发还是日常应用,这一过程都能有效支持您的需求。