丹摩智算实战:利用 DAMODEL 平台部署 ChatGLM-6B 模型并实现本地调用
近年来,随着人工智能技术的飞速发展,对话语言模型在学术界和工业界引起了广泛关注。ChatGLM-6B,作为一款由清华大学和智谱AI开源的对话语言模型,凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,成为众多开发者和研究者的首选。本文将详细介绍如何在DAMODEL深度学习平台上部署ChatGLM-6B模型,并通过Web API的形式实现本地代码调用服务端的模型进行对话
引言
近年来,随着人工智能技术的飞速发展,对话语言模型在学术界和工业界引起了广泛关注。ChatGLM-6B,作为一款由清华大学和智谱AI开源的对话语言模型,凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,成为众多开发者和研究者的首选。本文将详细介绍如何在DAMODEL深度学习平台上部署ChatGLM-6B模型,并通过Web API的形式实现本地代码调用服务端的模型进行对话。
文章目录
一、DAMODEL与ChatGLM-6B简介
DAMODEL(丹摩智算):
DAMODEL是专为AI打造的智算云,提供丰富的算力资源与基础设施,助力AI应用的开发、训练和部署。用户可以在DAMODEL平台上快速创建GPU实例,选择适合的计算环境,轻松启动和部署各类AI模型。
ChatGLM-6B:
ChatGLM-6B是基于GLM架构的对话语言模型,拥有62亿参数。该模型不仅在语言理解和生成上表现出色,还具备轻量级的特点,便于在各种环境下部署和应用。ChatGLM-6B的开源特性使得更多开发者能够参与到模型的优化和应用中来。
二、DAMODEL平台部署ChatGLM-6B
1. 实例创建
首先,登录DAMODEL控制台,进入“资源-GPU云实例”页面,点击“创建实例”。在实例配置中,选择按量付费,单卡启动,并选择合适的GPU型号(如NVIDIA-GeForce-RTX-4090)。配置好数据硬盘大小(默认为50GB)和启动框架(如PyTorch 1.13.1或PyTorch 2.1.2),点击“立即创建”即可启动实例。
2. 模型准备
启动实例后,通过终端使用git命令克隆ChatGLM-6B项目。若遇到网络问题,可选择从gitcode或其他站点下载项目。成功克隆后,进入项目文件夹,使用pip安装项目依赖。
接下来,将ChatGLM-6B的预训练模型文件从Hugging Face Hub或魔塔社区下载,并上传到DAMODEL平台的实例中。DAMODEL提供了20GB的免费存储空间,用户可将文件上传至/root/shared-storage目录。
3. 模型启动
模型文件上传并解压后,修改ChatGLM-6B项目中的<font style="color:rgb(5, 7, 59);">cli_demo.py</font>
和<font style="color:rgb(5, 7, 59);">web_demo.py</font>
文件,将模型加载路径改为本地路径。然后,在终端运行<font style="color:rgb(5, 7, 59);">python cli_demo.py</font>
或<font style="color:rgb(5, 7, 59);">python web_demo.py</font>
即可启动模型。
<font style="color:rgb(5, 7, 59);">cli_demo.py</font>
通过命令行与模型进行交互,用户输入文本即可与模型对话。<font style="color:rgb(5, 7, 59);">web_demo.py</font>
则通过Web界面与模型交互,用户需通过SSH隧道访问服务器的7860端口进行交互。
三、将ChatGLM-6B部署为API服务
1. 启动API服务
ChatGLM-6B项目中的<font style="color:rgb(5, 7, 59);">api.py</font>
文件实现了一个基于FastAPI框架的API服务。该服务接收HTTP POST请求,并根据请求体中的参数(如prompt、history、max_length、top_p、temperature)生成响应文本。
在终端中运行<font style="color:rgb(5, 7, 59);">python api.py</font>
即可启动API服务。
2. 开放端口
在DAMODEL平台上,需要为API服务开放对应的端口。进入访问控制页面,添加端口号,并确定开放。平台会给出访问链接,用于后续测试和调用。
3. 本地调用测试
使用PostMan或任何其他HTTP客户端工具,发送POST请求到API服务的URL,并在Body中填入相应的参数。如果请求成功,将返回包含响应文本、更新后的对话历史、状态码和时间戳的JSON对象。
四、本地代码实现对话系统
基于上述API服务,可以在本地开发环境中实现一个简单的对话系统。通过Python的requests库,发送HTTP POST请求到API URL,并根据响应内容实现对话功能。
下面是一个简单的多轮对话示例代码:
import requests
import json
api_url = "http://cqbiq6nhri0c73eq3cv0-8000.agent.damodel.com"
conversation_history = []
print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
while True:
query = input("\n用户:")
if query.strip() == "stop":
break
if query.strip() == "clear":
history = []
os.system(clear_command)
print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
continue
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'])
print("Updated History:", result['history'])
conversation_history = result['history']
else:
print("Failed to get response from the API. Status code:", response.status_code)
print(response.text)
更多推荐
所有评论(0)