DAMODEL丹摩|《ChatGLM-6B 在丹摩智算平台的部署与使用指南》

news2024/12/28 11:59:28

目录

一、引言

二、ChatGLM-6B 模型简介

ChatGLM-6B 的特点

三、DAMODEL 平台部署 ChatGLM-6B

1. 实例创建

2. 模型准备

3. 模型启动

四、通过 Web API 实现本地使用

1. 启动服务

2. 开放端口

3. 使用 PostMan 测试功能

4. 本地代码使用功能

五、总结


一、引言

ChatGLM-6B 作为一款强大的对话语言模型,在丹摩智算平台上的部署和使用能够为开发者和研究者带来诸多便利。

本文将详细介绍 ChatGLM-6B 在丹摩智算平台的部署与使用方法。

ChatGLM-6B 是由清华大学和智谱 AI 开源的一款对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。该模型凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,在学术界和工业界引起了广泛关注。

在人工智能领域,自然语言处理(NLP)技术正迅速发展,其中对话生成模型因其广泛的应用前景而备受关注。ChatGLM-6B 在丹摩智算平台的部署和使用,为开发者和研究者提供了一个强大的工具,可以实现多种对话场景的应用。无论是学术研究还是商业应用,ChatGLM-6B 都将为您的项目带来强大的 NLP 能力。

二、ChatGLM-6B 模型简介

ChatGLM-6B 的特点

1.强大的语言理解与生成能力,能够理解和生成复杂的对话内容。

ChatGLM-6B 是一个基于 General Language Model (GLM) 架构的对话生成模型,具有 62 亿参数。该模型不仅具备优秀的语言理解能力,还能生成连贯、准确的回答,适用于多种对话场景。例如,在与用户的交互中,它能够理解用户的问题,并给出详细且准确的回复。

2.轻量级的参数量,便于部署和应用

相较于其他大型模型,ChatGLM-6B 具有更少的参数量,便于部署和应用。在 FP16 半精度下,ChatGLM-6B 需要至少 13GB 的显存进行推理,结合模型量化技术,这一需求可以进一步降低到 10GB(INT8)和 6GB(INT4),使得 ChatGLM-6B 可以部署在消费级显卡上。

3.开源特性,开发者可以自由地使用和修改。

模型的开源特性使得开发者可以自由地使用和修改,以适应特定的应用需求。ChatGLM-6B 的开源地址为 https://github.com/THUDM/ChatGLM-6B。开发者可以根据自己的需求对模型进行微调和部署,为研究和应用开发提供了便利。

三、DAMODEL 平台部署 ChatGLM-6B

1. 实例创建

在丹摩智算平台上部署 ChatGLM-6B 的第一步是创建 GPU 云实例。具体步骤如下:

  1. 进入 DAMODEL 控制台,选择 “资源 - GPU 云实例”,点击 “创建实例”。
  2. 在实例配置中,选择付费类型为按量付费,然后选择单卡启动,例如 NVIDIA GeForce RTX 4090。这样的配置能够满足 ChatGLM-6B 的运行需求,该 GPU 型号拥有强大的计算能力和较大的显存,为模型的运行提供了良好的硬件基础。
  3. 接着配置数据硬盘大小,一般情况下,可以根据实际需求进行选择。这里可以考虑选择一个合适的大小,以确保有足够的空间存储模型文件和相关数据。同时,选择一个合适的启动框架,如 PyTorch 等,为模型的运行提供稳定的软件环境。

2. 模型准备

创建好实例后,就可以开始准备模型了。

  1. 使用 git 克隆 ChatGLM-6B 项目。如果遇到 GitHub 连接问题,可以选择 gitcode 站点或者离线下载并上传到项目中。例如,可以在终端执行命令cd /home/aistudio/work/git clone GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型成功克隆项目后成功克隆项目后,会显示如下文件夹:
  2. 进入项目文件夹后,使用 pip 安装项目依赖。执行命令pip install -r requirements.txt,可以看到 DAMODEL 平台环境依赖的下载安装速度非常快。等待片刻,当显示 “Successfully installed” 时,说明依赖安装完成。
  3. 依赖安装成功后,需要引入模型文件。DAMODEL 平台提供了数据上传功能,用户有 20GB 免费存储空间,该空间被挂载到实例的 /root/shared-storage 目录,跨实例共享。可以先下载 Hugging Face 上的 ChatGLM-6B 预训练模型,也可以进入魔塔社区选择相关文件进行下载。然后将下载下来的模型文件及配置进行上传并解压,上传时尽量保持界面首页显示,等待上传成功后再进行下一步操作。

3. 模型启动

模型文件准备好后,就可以启动模型了。

  1. 修改 cli_demo.py 和 web_demo.py 文件,将模型加载路径改为本地路径。这样可以确保模型从本地加载而不是通过网络下载,提高模型的启动速度和稳定性。
  2. 在终端输入python cli_demo.py或python web_demo.py启动模型。cli_demo.py是使用命令行进行交互,用户可以输入文本与模型进行对话,或输入 “clear” 清空对话历史并清除屏幕,或输入 “stop” 退出程序。而web_demo.py是使用本机服务器进行网页交互,但由于 Jupyter 的限制,无法直接打开访问服务器的 127.0.0.1:7860 网页端交互界面,这里可以利用 MobaXterm 建立 ssh 隧道,实现远程端口到本机端口的转发。首先打开 tunneling,新建 SSH 通道,填入 ssh 的相关配置,并将 7860 通道内容转发到本机,点击 start 开始转发,转发成功后,就可以成功在网页与模型进行交互了。

四、通过 Web API 实现本地使用

1. 启动服务

首先,进入 ChatGLM-6B 项目所在的目录,运行 api.py 文件,即可启动 FastAPI 服务。这个服务接收 HTTP POST 请求,请求体包含文本生成所需的参数,如 prompt(提示文本)、history(对话历史)、max_length(生成文本的最大长度)、top_p(采样时的累积概率阈值)和 temperature(采样时的温度参数,影响生成文本的随机性)。在终端中执行以下命令:

cd ChatGLM-6B
python api.py

启动成功后,服务器将准备好响应请求。

2. 开放端口

在 DAMODEL 平台上,为了实现本地访问 API 服务,需要开放对应的端口。首先点击访问控制,进入端口开放页面,然后点击添加端口,输入端口号,并点击确定开放。平台会给出访问链接,将其复制以便后续测试和调用。

3. 使用 PostMan 测试功能

打开 PostMan,新建一个 Post 请求,将平台生成的访问链接粘贴到 URL 栏,并在 Body 中填入相应的内容。示例请求体如下:

{
"prompt":"你好,你是谁?",
"max_length":512,
"top_p":0.9,
"temperature":0.7
}

点击 send 后,如果显示成功的 response,状态码为 200,则说明 API 服务正常运行。

4. 本地代码使用功能

在本地开发中,可以通过编写代码调用部署好的 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'])
else:
    print("Failed to get response from the API. Status code:", response.status_code)
    print(response.text)

在此基础上,我们可以实现一个基于 ChatGLM-6B 模型的简单对话系统,在本地通过命令行与 DAMODEL 部署好的模型进行交互。多轮对话示例代码如下:

import requests
import json

api_url = "http://your-api-url"
conversation_history = []

while True:
    query = input("\n用户:")
    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 的部署和使用提供了强大的支持,使得开发者能够轻松地利用这一先进的语言模型进行各种应用开发。

通过本文的介绍,您可以了解到从实例创建、模型准备到模型启动以及通过 Web API 实现本地使用的全过程。

无论是进行学术研究还是开发商业应用,ChatGLM-6B 与丹摩智算平台的结合都将为您提供强大的自然语言处理能力,帮助您实现更多的创新和价值。

希望本文能为您在使用 ChatGLM-6B 模型时提供有益的参考,让您在人工智能领域的探索中更加顺利。

本文完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI大模型】LLM的检索增强--SELF-RAG

本篇博客参考论文: 《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION》 在自然语言处理(NLP)领域,大型语言模型(LLMs)已成为处理复杂语言任务的强大工具。然而&#xf…

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

C# 读取多条数据记录导出到 Word标签模板之图片输出改造

目录 应用需求 设计 范例运行环境 配置Office DCOM 实现代码 组件库引入 ​核心代码 调用示例 小结 应用需求 在我的文章《C# 读取多条数据记录导出到 Word 标签模板》里,讲述读取多条数据记录结合 WORD 标签模板输出文件的功能,原有输出图片的…

Android 性能优化:内存优化(理论篇)

内存作为App程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏,重则导致用户应用程序发生 OOM(out of memory)崩溃。喜马直播随着近些年的业…

【AI技术赋能有限元分析应用实践】pycharm终端与界面设置导入Abaqus2024自带python开发环境

目录 一、具体说明1. **如何在 Windows 环境中执行 Abaqus Python 脚本**2. **如何在 PyCharm 中配置并激活 Abaqus Python 环境**3. **创建 Windows 批处理脚本自动执行 Abaqus Python 脚本**总结二、方法1:通过下面输出获取安装路径导入pycharm方法2:终端脚本执行批处理脚本…

arm学习总结

AHB总线连接的都是这些需要高速处理的内存、内核啥的 APB连接的都是些外设 GPIO并不需要高速处理的

【redis 】string类型详解

string类型详解 一、string类型的概念二、string类型的常用指令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 SETNX2.6 INCR2.7 INCRBY2.8 DECR2.9 DECRBY2.10 INCRBYFLOAT2.11 APPEND2.12 GETRANGE2.13 SETRANGE2.14 STRLEN 三、string类型的命令小结四、string类型的内部编码五、strin…

Mysql案例之COALESCE函数使用详解

hello,大家好,我是灰小猿!最近在做一个三表关联查询的场景处理时,遇到了一个比较有用的MySQL函数,在这里记录一下,大概场景如下: 需求场景 场景:有一张object_rel表,表中…

C语言菜鸟入门·关键字·int的用法

目录 1. int关键字 1.1 取值范围 1.2 符号类型 1.3 运算 1.3.1 加法运算() 1.3.2 减法运算(-) 1.3.3 乘法运算(*) 1.3.4 除法运算(/) 1.3.5 取余运算(%) 1.3.6 自增()与自减(--) 1.3.7 位运算 2. 更多关键字 1. int关键字 int 是一个关键字&#xff0…

D74【 python 接口自动化学习】- python 基础之HTTP

day74 http基础定义 学习日期:20241120 学习目标:http定义及实战 -- http基础介绍 学习笔记: HTTP定义 HTTP 是一个协议(服务器传输超文本到浏览器的传送协议),是基于 TCP/IP 通信协议来传递数据&…

基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面

文章目录 0、前言 1、目标 2、图片的预处理 3、SD NAND的预处理 4、FPGA实现 4.1、详细设计 4.2、仿真 4.3、实验结果 前言 在上一篇文章《基于FPGA的SD卡的数据读写实现(SD NAND FLASH)》中,我们了解到了SD NAND Flash的相关知识&am…

【计算机网络】网段划分

一、为什么有网段划分 IP地址 网络号(目标网络) 主机号(目标主机) 网络号: 保证相互连接的两个网段具有不同的标识 主机号: 同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号 互联网中的每一台主机,都要隶属于某一个子网 -&…

Java-反序列化

序列化与反序列化 简单demo: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;public class serialize implements Serializable{private…

webkit浏览器内核编译(2024年11月份版本)

webkit浏览器内核编译 本文详细介绍了如何安装和配置Webkit的编译环境和工具的安装,以及在Windows上编译和运行WebKit浏览器引擎的过程,包括安装依赖、设置环境变量、生成解决方案并最终运行附带的MiniBrowser示例。 一、WebKit简介 WebKit 是一个开源的…

论文阅读--Evidence for the utility of quantum computing before fault tolerance

量子计算有望在某些问题上提供比传统计算更快的速度。然而,实现其全部潜力的最大障碍是这些系统固有的噪声。这一挑战被广泛接受的解决方案是实现容错量子电路,而这超出了当前处理器的能力范围。我们在此报告了在嘈杂的127 量子比特处理器上进行的实验&a…

构建高效在线教育:SpringBoot课程管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理在线课程管理系统的相关信息成为必然。开发…

Linux 下的IO模型

一:四种IO模 1.1:阻塞式IO(最简单,最常用,效率最低) 阻塞I/O 模式是最普遍使用的I/O 模式,大部分程序使用的都是阻塞模式的I/O 。 缺省情况下(及系统默认状态)&#xf…

Linux-Nginx反向代理

文章目录 反向代理负载均衡 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月24日10点32分 反向代理 虚拟主机 1 为虚拟主机 3 提供代理服务 vi /etc/nginx/conf.d/vhost.confser…

DataGrip 连接 Redis、TongRDS

连接 Redis 或 TongRDS 有些旧版本 没有 redis 驱动用不了 1)选择驱动 2)添加连接信息 3)测试连接 4)保存连接 5)使用案例

《数据结构》学习系列——图(中)

系列文章目录 目录 图的遍历深度优先遍历递归算法堆栈算法 广度优先搜索 拓扑排序定义定理算法思想伪代码 关键路径基本概念关键活动有关量数学公式伪代码时间复杂性 图的遍历 从给定连通图的某一顶点出发,沿着一些边访问遍图中所有的顶点,且使每个顶点…