在人工智能领域,自然语言处理(NLP)技术正迅速发展,其中对话生成模型因其广泛的应用前景而备受关注。ChatGLM-6B,由清华大学和智谱AI联合开源的一款对话语言模型,凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,在学术界和工业界引起了广泛关注。本文将介绍如何在丹摩智算平台上部署ChatGLM-6B模型,并通过Web API的形式使用本地代码调用服务端的模型进行对话。
ChatGLM-6B是一个基于General Language Model (GLM)架构的对话生成模型,具有62亿参数。该模型不仅具备优秀的语言理解能力,还能生成连贯、准确的回答,适用于多种对话场景。
部署ChatGLM-6B的第一步是在丹摩智算平台上创建GPU云实例。进入DAMODEL控制台,选择资源-GPU云实例,点击创建实例。在实例配置中选择付费类型为按量付费,选择单卡启动,并选择适合的GPU型号,例如NVIDIA GeForce RTX 4090。
启动环境后,使用git克隆ChatGLM-6B项目。如果遇到GitHub连接问题,可以选择gitcode站点或者离线下载并上传到项目中。
cd /home/aistudio/work/
git clone https://github.com/THUDM/ChatGLM-6B.git
成功克隆项目后,进入项目文件夹,使用pip安装项目依赖。
pip install -r requirements.txt
依赖安装成功后,需要引入模型文件。DAMODEL平台提供了数据上传功能,用户有20GB免费存储空间,该空间被挂载到实例的/root/shared-storage
目录,跨实例共享。上传预训练模型及解压后,就可以启动python脚本运行了。
ChatGLM-6B提供了cli_demo.py
和web_demo.py
两个文件来启动模型,一个是使用命令行进行交互,另一个是使用本机服务器进行网页交互。根据需要修改代码,从本地文件目录加载预训练模型。
在终端输入python cli_demo.py
或python web_demo.py
就可以成功启动模型了。
ChatGLM-6B模型提供了api.py
文件,实现了一个基于FastAPI框架的API服务。该服务接收一个HTTP POST请求,请求体包含文本生成所需的参数,如prompt(提示文本)、history(对话历史)、max_length(生成文本的最大长度)、top_p(采样时的累积概率阈值)和temperature(采样时的温度参数,影响生成文本的随机性)。
在终端cd进入ChatGLM-6B文件夹,运行api.py
文件。
cd ChatGLM-6B
python api.py
为本地访问开放对应的端口,首先需要点击访问控制,进入端口开放页面,然后点击添加端口,输入端口号,并点击确定开放。
打开PostMan,新建一个Post请求,将复制的网址粘贴到URL栏,并在Body中填入相应的内容。发送请求后,如果显示成功的response,则说明API服务正常运行。
在本地开发中,可以通过编写代码调用部署好的API服务。以下是一个基础的单轮对话功能示例代码:
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'])
print("Updated History:", result['history'])
print("Time:", result['time'])
else:
print("Failed to get response from the API. Status code:", response.status_code)
print(response.text)
丹摩智算平台的易用性和强大功能,使得部署和使用先进的AI模型变得简单快捷。无论是学术研究还是商业应用,ChatGLM-6B都将为您的项目带来强大的NLP能力。随着技术的不断进步,我们有理由相信,丹摩智算将继续在人工智能领域发挥重要作用。