昇思25天学习打卡营第18天|MindNLP ChatGLM-6B StreamChat

MindNLP ChatGLM-6B StreamChat

MindNLP ChatGLM-6B StreamChat是基于MindNLP框架和ChatGLM-6B模型实现的聊天应用,利用自然语言处理技术,实现与用户的自然语言交流。这样的应用可以广泛应用于智能客服、在线助理和社交聊天等场景

在当前技术环境下,AI大模型的应用不仅需要研究者具备深厚的数学基础和编程能力,还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法,AI大模型的应用能够不断提升模型的准确性和效率,为人类生活和工作带来更多便利。使用MindNLP框架和ChatGLM-6B模型构建一个聊天机器人应用,正是这种技术进步的具体体现。

MindNLP

MindNLP是一个功能强大的开源自然语言处理(NLP)库,基于MindSpore框架开发。作为当前技术生态中的一部分,MindNLP继承并发扬了MindSpore的多种优势,如对多种硬件平台和操作系统的支持,以及在模型训练和推理方面的速度优势。以下是MindNLP相关介绍:

  1. 框架与支持模型
    • 基于MindSpore:MindNLP是基于MindSpore开发的,这是一个为深度学习而生的框架,能够支持多种硬件平台和操作系统。
    • 大型语言模型:MindNLP支持包括Llama、GLM、RWKV等在内的业界领先的大语言模型,涵盖了预训练、微调及推理等功能。
    • 模型兼容性:MindNLP兼容Hugging Face的transformers-like API,使得60多个模型如BERT、Roberta、GPT2、T5等易于使用。
  2. 数据处理与工具集
    • 数据集加载:默认使用datasets lib作为数据集加载器,支持多种有用的数据集。
    • NLP任务覆盖:提供语言模型、机器翻译、问答系统、情感分析、序列标注、文摘生成等NLP任务。
    • 模型训练:支持灵活的模型训练,包括分布式训练和多卡并行训练,以及提供多种优化算法和正则化手段。
  3. 安装与版本
    • 安装方式:用户可以通过Pypi或Git直接安装MindNLP,支持从源代码进行安装。
    • 版本兼容性:MindNLP有多个版本,不同的版本间支持的MindSpore版本和Python版本不同。
  4. 应用场景与实际意义
    • 广泛应用:适用于智能客服、智能助手、智能推荐等多个领域,助力企业快速搭建NLP应用。
    • 社区支持:在Gitee和GitHub上拥有活跃的社区,提供丰富的资源和帮助,以及分享经验和技巧。

此外,MindNLP不仅提供了一个平台来解决自然语言处理任务,还包含了许多NLP任务中常用的方法。考虑到用户的背景和需求,MindNLP的设计兼顾了易用性和灵活性。一方面,初学者可以通过简单的脚本和示例快速开始NLP任务;另一方面,经验丰富的研究者和工程师可以根据自己的需要调整模型结构和算法,以解决更复杂的问题。

总的来说,MindNLP是一款基于MindSpore的开源NLP库,它提供了全面的数据处理、友好的模型工具集和灵活的模型训练,支持多种NLP任务和大型语言模型。凭借良好的社区支持和丰富的应用场景,它为开发者和企业提供了强大而便捷的自然语言处理能力。无论是想要构建一个聊天机器人,还是分析客户反馈,MindNLP都是一个值得考虑的选择。

ChatGLM-6B

ChatGLM-6B是一款支持中英双语的对话语言模型,拥有62亿参数,可在消费级显卡上部署。它基于General Language Model (GLM)架构,为用户提供强大的自然语言处理能力。以下将详细介绍ChatGLM-6B的各个方面:

1. 模型架构与推理流程
   - 架构基础:ChatGLM-6B基于清华大学提出的GLM架构,这是一种结合自编码和自回归预训练方式的模型。
   - 模型规模:该模型拥有62亿参数,在各种复杂任务中表现出色。
   - 推理流程:ChatGLM-6B的推理过程包括输入分词、嵌入Embedding、通过多个GLMBlock进行计算,最终生成下一个token。
2. 优势与特点
   - 中英双语支持:ChatGLM-6B不仅支持中文,还支持英文,适用于跨语言的研究和应用。
   - 高效部署:量化技术使得该模型可以在消费级显卡上运行,降低了硬件需求。
   - 易于使用:官方提供了详细的安装和使用指南,方便用户上手。
3. 应用场景与价值
   - 聊天机器人:适用于构建娱乐、教育、客服等类型的聊天机器人,提供自然、有趣的对话体验。
   - 对话生成与分析:用于生成各种风格的对话文本,并可进行对话分析,提升对话质量和效果。
   - 多领域应用:除了对话应用,还可以用于语言学习、信息检索、问答系统等多种场景。
4. 性能与优化
   - 上下文长度:ChatGLM-6B支持较长的上下文长度,能进行更多轮次的对话。
   - 量化与推理速度:通过Multi-Query Attention技术和INT4量化,降低显存占用并提高推理速度。
   - 开源与社区支持:作为开源项目,ChatGLM-6B享有广泛的社区支持,方便用户交流经验。
5. 训练数据与获取
   - 数据集来源:ChatGLM-6B的训练使用了庞大且丰富的中英文数据集,这些数据来自多种来源,如网站、书籍和公共数据库。
   - 版权与获取:数据集的版权通常归属原作者或机构,部分数据集可以公开获取,但需要遵守相应的使用协议。

总的来说,ChatGLM-6B是一个功能强大且易于使用的中英双语对话语言模型。其庞大的参数规模和高效的部署方式使其在各种自然语言处理任务中表现出色。在实际应用中,根据需求合理选择硬件配置,以获得更好的性能和体验。

StreamChat

StreamChat是一个高效、实时的聊天服务应用。以下是关于StreamChat的介绍:

  1. 实时交互性
    • 快速响应:StreamChat设计用于支持实时交互,能够快速响应用户的输入,提供及时的反馈和回答。
    • 无缝对话体验:通过优化算法,StreamChat能够流畅地处理多轮对话,使用户感觉像是在与真人交谈。
  2. 用户体验优化
    • 上下文理解:StreamChat能够理解对话的上下文,提供更加准确和相关的回复。
    • 个性化设置:用户可以根据自己的需求定制聊天体验,包括语言风格、回答长度等。
  3. 技术实现
    • 模型集成:StreamChat可能集成了诸如ChatGLM-6B这样的大型语言模型,以提供强大的自然语言处理能力。
    • 持续学习:StreamChat可以通过不断的用户交互来学习和改进,从而提升其智能水平和服务质量。
  4. 应用场景
    • 客户服务:StreamChat可以作为智能客服,帮助处理用户咨询,减轻人工客服的负担。
    • 教育辅助:在教育领域,StreamChat可以辅助教学,提供即时的问题解答和学习资源。
  5. 未来发展
    • 功能扩展:随着技术的发展,StreamChat有望引入更多功能,如语音识别、情感分析等。
    • 平台融合:StreamChat可以与其他平台和系统集成,如社交媒体、电子商务等,拓宽其应用范围。

总的来说,StreamChat是一个基于强大自然语言处理技术的实时聊天应用,它不仅能够提供流畅的对话体验,还能够根据用户的个性化需求进行定制。随着技术的不断进步,StreamChat有潜力在多个领域发挥重要作用,成为人机交互的重要工具。

实践案例

实践环境

python : Python 3.9.19

安装环境

pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14

pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindnlp mdtex2html

完整依赖环境

pip list
Package                        Version
------------------------------ --------------
absl-py                        2.1.0
addict                         2.4.0
aiofiles                       22.1.0
aiohttp                        3.9.5
aiosignal                      1.3.1
aiosqlite                      0.20.0
altair                         5.3.0
annotated-types                0.7.0
anyio                          4.4.0
argon2-cffi                    23.1.0
argon2-cffi-bindings           21.2.0
arrow                          1.3.0
astroid                        3.2.2
asttokens                      2.0.5
astunparse                     1.6.3
async-timeout                  4.0.3
attrs                          23.2.0
auto-tune                      0.1.0
autopep8                       1.5.5
Babel                          2.15.0
backcall                       0.2.0
beautifulsoup4                 4.12.3
black                          24.4.2
bleach                         6.1.0
certifi                        2024.6.2
cffi                           1.16.0
charset-normalizer             3.3.2
click                          8.1.7
cloudpickle                    3.0.0
colorama                       0.4.6
comm                           0.2.1
contextlib2                    21.6.0
contourpy                      1.2.1
cycler                         0.12.1
dataflow                       0.0.1
datasets                       2.20.0
debugpy                        1.6.7
decorator                      5.1.1
defusedxml                     0.7.1
dill                           0.3.8
dnspython                      2.6.1
download                       0.3.5
easydict                       1.13
email_validator                2.2.0
entrypoints                    0.4
evaluate                       0.4.2
exceptiongroup                 1.2.0
executing                      0.8.3
fastapi                        0.111.0
fastapi-cli                    0.0.4
fastjsonschema                 2.20.0
ffmpy                          0.3.2
filelock                       3.15.3
flake8                         3.8.4
fonttools                      4.53.0
fqdn                           1.5.1
frozenlist                     1.4.1
fsspec                         2024.5.0
gitdb                          4.0.11
GitPython                      3.1.43
gradio                         4.26.0
gradio_client                  0.15.1
h11                            0.14.0
hccl                           0.1.0
hccl-parser                    0.1
httpcore                       1.0.5
httptools                      0.6.1
httpx                          0.27.0
huggingface-hub                0.23.4
hypothesis                     6.105.1
idna                           3.7
importlib-metadata             7.0.1
importlib_resources            6.4.0
iniconfig                      2.0.0
ipykernel                      6.28.0
ipympl                         0.9.4
ipython                        8.15.0
ipython-genutils               0.2.0
ipywidgets                     8.1.3
isoduration                    20.11.0
isort                          5.13.2
jedi                           0.17.2
jieba                          0.42.1
Jinja2                         3.1.4
joblib                         1.4.2
json5                          0.9.25
jsonpointer                    3.0.0
jsonschema                     4.22.0
jsonschema-specifications      2023.12.1
jupyter_client                 7.4.9
jupyter_core                   5.7.2
jupyter-events                 0.10.0
jupyter-lsp                    2.2.5
jupyter-resource-usage         0.7.2
jupyter_server                 2.14.1
jupyter_server_fileid          0.9.2
jupyter-server-mathjax         0.2.6
jupyter_server_terminals       0.5.3
jupyter_server_ydoc            0.8.0
jupyter-ydoc                   0.2.5
jupyterlab                     3.6.7
jupyterlab_code_formatter      2.2.1
jupyterlab_git                 0.50.1
jupyterlab-language-pack-zh-CN 4.2.post1
jupyterlab-lsp                 4.3.0
jupyterlab_pygments            0.3.0
jupyterlab_server              2.27.2
jupyterlab-system-monitor      0.8.0
jupyterlab-topbar              0.6.1
jupyterlab_widgets             3.0.11
kiwisolver                     1.4.5
latex2mathml                   3.77.0
Markdown                       3.6
markdown-it-py                 3.0.0
MarkupSafe                     2.1.5
matplotlib                     3.9.0
matplotlib-inline              0.1.6
mccabe                         0.6.1
mdtex2html                     1.3.0
mdurl                          0.1.2
mindnlp                        0.3.1
mindspore                      2.2.14
mindvision                     0.1.0
mistune                        3.0.2
ml_collections                 0.1.1
ml-dtypes                      0.4.0
mpmath                         1.3.0
msadvisor                      1.0.0
multidict                      6.0.5
multiprocess                   0.70.16
mypy-extensions                1.0.0
nbclassic                      1.1.0
nbclient                       0.10.0
nbconvert                      7.16.4
nbdime                         4.0.1
nbformat                       5.10.4
nest-asyncio                   1.6.0
notebook                       6.5.7
notebook_shim                  0.2.4
numpy                          1.26.4
op-compile-tool                0.1.0
op-gen                         0.1
op-test-frame                  0.1
opc-tool                       0.1.0
opencv-contrib-python-headless 4.10.0.84
opencv-python                  4.10.0.84
opencv-python-headless         4.10.0.84
orjson                         3.10.5
overrides                      7.7.0
packaging                      23.2
pandas                         2.2.2
pandocfilters                  1.5.1
parso                          0.7.1
pathlib2                       2.3.7.post1
pathspec                       0.12.1
pexpect                        4.8.0
pickleshare                    0.7.5
pillow                         10.3.0
pip                            24.1
platformdirs                   4.2.2
pluggy                         1.5.0
prometheus_client              0.20.0
prompt-toolkit                 3.0.43
protobuf                       5.27.1
psutil                         5.9.0
ptyprocess                     0.7.0
pure-eval                      0.2.2
pyarrow                        16.1.0
pyarrow-hotfix                 0.6
pycodestyle                    2.6.0
pycparser                      2.22
pyctcdecode                    0.5.0
pydantic                       2.7.4
pydantic_core                  2.18.4
pydocstyle                     6.3.0
pydub                          0.25.1
pyflakes                       2.2.0
Pygments                       2.15.1
pygtrie                        2.5.0
pylint                         3.2.3
pyparsing                      3.1.2
pytest                         7.2.0
python-dateutil                2.9.0.post0
python-dotenv                  1.0.1
python-json-logger             2.0.7
python-jsonrpc-server          0.4.0
python-language-server         0.36.2
python-multipart               0.0.9
pytoolconfig                   1.3.1
pytz                           2024.1
PyYAML                         6.0.1
pyzmq                          25.1.2
referencing                    0.35.1
regex                          2024.5.15
requests                       2.32.3
rfc3339-validator              0.1.4
rfc3986-validator              0.1.1
rich                           13.7.1
rope                           1.13.0
rpds-py                        0.18.1
ruff                           0.4.10
safetensors                    0.4.3
schedule-search                0.0.1
scikit-learn                   1.5.0
scipy                          1.13.1
semantic-version               2.10.0
Send2Trash                     1.8.3
sentencepiece                  0.2.0
setuptools                     69.5.1
shellingham                    1.5.4
six                            1.16.0
smmap                          5.0.1
sniffio                        1.3.1
snowballstemmer                2.2.0
sortedcontainers               2.4.0
soupsieve                      2.5
stack-data                     0.2.0
starlette                      0.37.2
sympy                          1.12.1
synr                           0.5.0
te                             0.4.0
terminado                      0.18.1
threadpoolctl                  3.5.0
tinycss2                       1.3.0
tokenizers                     0.19.1
toml                           0.10.2
tomli                          2.0.1
tomlkit                        0.12.0
toolz                          0.12.1
tornado                        6.4.1
tqdm                           4.66.4
traitlets                      5.14.3
typer                          0.12.3
types-python-dateutil          2.9.0.20240316
typing_extensions              4.11.0
tzdata                         2024.1
ujson                          5.10.0
uri-template                   1.3.0
urllib3                        2.2.2
uvicorn                        0.30.1
uvloop                         0.19.0
watchfiles                     0.22.0
wcwidth                        0.2.5
webcolors                      24.6.0
webencodings                   0.5.1
websocket-client               1.8.0
websockets                     11.0.3
wheel                          0.43.0
widgetsnbextension             4.0.11
xxhash                         3.4.1
y-py                           0.6.2
yapf                           0.40.2
yarl                           1.9.4
ypy-websocket                  0.8.4
zipp                           3.17.0

实践代码


# 配置网络线路
export HF_ENDPOINT=https://hf-mirror.com
# 下载权重大约需要10分钟

from mindnlp.transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import gradio as gr
import mdtex2html

model = AutoModelForSeq2SeqLM.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope").half()
model.set_train(False)
tokenizer = AutoTokenizer.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope")

下载预训练模型文件比较耗时,注意网络别断

prompt = '你好'
history = []
response, _ = model.chat(tokenizer, prompt, history=history, max_length=20)
print(response)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙语言基础类库:【@ohos.application.testRunner (TestRunner)】 测试

TestRunner TestRunner模块提供了框架测试的能力。包括准备单元测试环境、运行测试用例。 如果您想实现自己的单元测试框架,您必须继承这个类并覆盖它的所有方法。 说明: 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-…

法律咨询援助网站

1 项目介绍 1.1 摘要 随着互联网技术的飞速发展,公众对于便捷、高效的法律咨询服务需求日益增长。传统的法律咨询方式已难以满足人们即时性、多样化的咨询需求,促使法律咨询援助网站应运而生。这些平台旨在通过数字化手段,为用户提供法律知…

教务管理系统

教务管理系统 For Free 本项目免费获取,获取方式在后台发送教务管理系统。系统的实现比较简单,主要是对数据库的读取和前端数据调用的表格展示,并没有太多的交互,比较适合初学者学习Flask和数据库的使用,所以免费获取…

8626 原子量计数

分析: 1. **读取输入**:首先,我们需要读取输入中的第一行,了解有多少个化学式需要处理。之后,对于每个化学式,我们逐行读取并进行处理。 2. **解析化学式**:对于每个化学式,我们需要…

如何在Ubuntu环境下使用加速器配置Docker环境

一、安装并打开加速器 这个要根据每个加速器的情况来安装并打开,一般是会开放一个代理端口,比如1087 二、安装Docker https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script 三、配置Docker使用加速器 3.1 修改配置…

如何处理 PostgreSQL 中由于表锁定导致的并发访问问题?

文章目录 一、表锁定的类型二、表锁定导致的并发访问问题三、解决方案(一)使用合适的锁定模式(二)优化事务处理(三)避免不必要的锁定(四)使用索引(五)监控和分…

Protobuf: 大数据开发中的高效数据传输利器

作为一名大数据开发者,我经常需要处理海量的数据传输和存储。在这个过程中,选择一个高效、可靠的数据序列化工具至关重要。今天,我想和大家分享一下我在项目中使用 Protobuf 的经历。 目录 故事背景Protobuf 简介优点: 实战案例示…

在【Open3D】点云世界中精准定位,绘制立方体标记特定点位

Open3D精准定位点云特定点,绘制醒目立方体标记,提升数据解读效率与直观性。 Open3D是一个开源的跨平台计算机视觉库,它为开发人员提供了一个易于使用且高性能的3D数据处理平台。 # pcd:传入原始点云图 # point1:要进…

【HarmonyOS】获取通讯录信息

【HarmonyOS】获取通讯录信息 一、问题背景: 在Android和IOS中,获取手机通讯录信息的方式,一般是申请通讯录权限后,获得手机所有的通讯录列表信息。 在鸿蒙中,因为权限方式安全性提高的变更:将用户权限限…

springboot 旅游导航系统-计算机毕业设计源码69476

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

【Python实战因果推断】30_双重差分1

目录 Panel Data 在讨论了干预效果异质性之后,是时候转换一下思路,回到平均干预效果上来了。在接下来的几章中,您将学习如何利用面板数据进行因果推断。 面板数据是一种跨时间重复观测的数据结构。在多个时间段观察同一单位,可以…

347. 前 K 个高频元素(中等)

347. 前 K 个高频元素 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:347. 前 K 个高频元素 2.详细题解 寻找出现频率前 k k k高的元素,因此需要先统计各个元素出现的次数,该步骤时间复杂度为 O ( n ) O(n) O(n)…

前端-Cookie篇

文章目录 一、由来什么是Cookie?特点Cookie的类型 二、原理三、Cookie生成机制客户端设置案例 四、属性五、缺陷最后分享一段自己工作中封装的一些关于cookie的公众方法✒️总结 前端Cookie是Web开发中非常重要的一部分,它是服务器发送到用户浏览器并保存…

如何识别图片文字转化为文本?5个软件帮助你快速提取图片文字

如何识别图片文字转化为文本?5个软件帮助你快速提取图片文字 将图片中的文字提取为文本是一项非常有用的技能,特别是当你需要处理大量扫描文档、截图或其他图片时。以下是五款能够帮助你快速提取图片文字的软件: 迅捷文字识别 这是一款非…

对接高德开放平台API

高德开放平台API: https://lbs.amap.com/ 一、天气查询 天气查询: https://lbs.amap.com/api/webservice/guide/api/weatherinfo adcode城市码表下载: https://lbs.amap.com/api/webservice/download Component public class WeatherUtil {Resourceprivate GdCon…

如何使用Python在企业微信中发送测试结果?操作看这里!

在日常的自动化测试工作中,一般会需要把测试结果同步到工作群里,方便信息同步。那么我们今天就使用企业微信和Pythonrequests库来演示一下具体如何操作吧! 01 准备 开始之前,我们应该确保已经安装了python环境,并且要…

【Java16】多态

向上类型转换 对于引用变量,在程序中有两种形态:一种是编译时类型,这种引用变量的类型在声明它的时候就决定了;另一种则是运行时类型,这种变量的类型由实际赋给它的对象决定。 当一个引用变量的编译时类型和运行时类…

LabVIEW电容器充放电监测系统

概述 为了对车用超级电容器的特性进行研究,确保其在工作时稳定可靠并有效发挥性能优势,设计了一套车用超级电容器充放电监测系统。该系统通过利用传感器、USB数据采集卡、可调直流稳压电源、电子负载以及信号调理电路,完成对各信号的采集和超…

jdevelope安装

准备 1.jdk1.8(已经安装不做记录) 2.下载jdevelope安装包 3.安装包安装jdevelope开发工具 4.创建或导入项目 下载jdevelope安装包 官网下载地址:https://edelivery.oracle.com 安装包安装jdevelope开发工具 cmd管理员权限运行安装脚本…

Codeforces Round 954 (Div. 3)(A~D题)

A. X Axis 思路: 1~10暴力枚举一下所有可能 代码: #include<bits/stdc.h> using namespace std; #define N 1000005 typedef long long ll; typedef unsigned long long ull; ll n, m, t, h, k; ll a, b, c; ll ans, num, sum, cnt; ll temp[N], f1[N], f2[N]; bool f…