引言

近年来,随着人工智能技术的飞速发展,对话语言模型在学术界和工业界引起了广泛关注。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)
Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐