ChatGLM3 模型学习与实战

news2024/9/25 23:17:36

文章目录

  • 一,说明
  • 二、前言
    • 1. 背景
    • 2. 系统说明
    • 3. 相比于ChatGLM2-6B进行的 性能升级
    • 4. 模型列表
  • 三、环境搭建
    • 1. 下载代码
    • 2 构建环境
    • 3 安装依赖
    • 4. 大模型下载方式
      • 4.1 安装 lfs 方便本地下载 ChatGLM2-6B 大模型
      • 4.2 Hmodelscop 上手动下载模型及其文件 【推荐】
      • 4.3 Huggingface的镜像网站下载
  • 四、模型推理
  • 五、网页版本推理
  • 六、命令行 Demo
  • 七、API 部署
  • 八、评测结果
  • 九、问题补充

一,说明

Github 代码https://github.com/THUDM/ChatGLM3
模型地址:
huggingfacehttps://huggingface.co/THUDM/chatglm3-6b
modelscopehttps://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary

二、前言

1. 背景

智谱AI于27日论坛上推出了全自研的第三代基座大模型ChatGLM3及相关系列产品,这也是智谱AI继推出千亿基座的对话模型ChatGLM和ChatGLM2之后的又一次重大突破。

2. 系统说明

CUDA 11.7
Python 3.10
pytorch 2.0.1

3. 相比于ChatGLM2-6B进行的 性能升级

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  1. 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能。
  2. 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
  3. 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。

4. 模型列表

在这里插入图片描述

三、环境搭建

模型的常见下载方法

1. 下载代码

$ git clone https://github.com/THUDM/ChatGLM3
$ cd ChatGLM3

2 构建环境

$ conda create -n py310_chat python=3.10       # 创建新环境
$ source activate py310_chat                   # 激活环境

3 安装依赖

$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

!! 注:其中 transformers 库版本推荐为 4.30.2torch 推荐使用 2.0 及以上的版本,以获得最佳的推理性能。

4. 大模型下载方式

4.1 安装 lfs 方便本地下载 ChatGLM2-6B 大模型

Hugging Face Hub 下载模型实现和参数 到本地,后期使用 只需要 从本地下载即可。

$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b

!! 注:模型的实现仍然处在变动中。如果希望固定使用的模型实现以保证兼容性,可以在 from_pretrained 的调用中增加 revision="v1.0" 参数。v1.0 是当前最新的版本号,完整的版本列表参见 Change Log。

4.2 Hmodelscop 上手动下载模型及其文件 【推荐】

  1. 安装 modelscope
    $ pip install modelscope
  2. 使用 modelscope 下载 Chatglm3
# 从modelscope上下载模型
from modelscope.hub.snapshot_download import snapshot_download

model_dir = snapshot_download('THUDM/chatglm3-6b', cache_dir='./model', revision='master')
如果你网速很好,下载就很快,如果是kb/s,那么大文件下载会失败。 

4.3 Huggingface的镜像网站下载

镜像:https://hf-mirror.com/THUDM

在这里插入图片描述

!! 优点:网速很快,公司运维有测到4M/s,非常推荐用这个网站直接下载

四、模型推理

可以通过如下代码调用 ChatGLM 模型来生成对话:

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
>>>
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:

你好👋!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
>>>
1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。

如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

!! 注:以上代码会由 transformers 自动下载模型实现和参数。完整的模型实现在 Hugging Face Hub。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败。此时可以先将模型下载到本地,然后从本地加载。【参考:2.4 大模型下载方式】

五、网页版本推理

官方示例

六、命令行 Demo

  1. 运行仓库中 cli_demo.py:

    $ python cli_demo.py

  2. 输出

 欢迎使用 ChatGLM3 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序
    用户:你好
    ChatGLM:你好👋!我是人工智能助手 ChatGLM3,很高兴见到你,欢迎问我任何问题。
    用户:晚上睡不着应该怎么办
    ChatGLM:抱歉,作为一个人工智能助手,我没有能力判断你的睡眠质量。但是,关于睡眠问题,我可以给你一些建议。
    1. 晚上在睡觉前 2-3 小时避免喝咖啡、茶和碳酸饮料,因为这些饮料中含有的咖啡因会让大脑更加兴奋,难以入睡。
    2. 睡前避免使用电子设备,如手机、电脑等。这些设备会发出蓝光,会影响睡眠质量。
    3. 改变睡眠环境,保持舒适的温度,以帮助更容易入睡。
    4. 尝试放松技巧,如深呼吸、瑜伽或冥想,缓解压力和焦虑,有助于入睡。
    5. 如果躺在床上 20 分钟后仍然无法入睡,不要继续躺在床上,而是起床做些轻松的活动,如读书或听轻柔的音乐,直到感到困倦再返回床上。
如果你有严重的睡眠问题,建议咨询医生或专业的医学机构进行诊断和治疗。

!! 注:程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序。

七、API 部署

  1. 安装额外的依赖 fastapi uvicorn
    $ pip install fastapi uvicorn
  2. 运行 api 接口
    $ python api.py
  3. 使用
#默认部署在本地的 8000 端口,通过 POST 方法进行调用

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'
#得到的返回值为

{
  "response":"你好👋!我是人工智能助手 ChatGLM3,很高兴见到你,欢迎问我任何问题。",
  "history":[["你好","你好👋!我是人工智能助手 ChatGLM3,很高兴见到你,欢迎问我任何问题。"]],
  "status":200,
  "time":"2023-03-23 21:38:40"
}

八、评测结果

  1. 我们选取了 8 个中英文典型数据集,在 ChatGLM3-6B (base) 版本上进行了性能测试。

在这里插入图片描述
Best Baseline 指的是模型参数在 10B 以下、在对应数据集上表现最好的预训练模型,不包括只针对某一项任务训练而未保持通用能力的模型。

对 ChatGLM3-6B-Base 的测试中,BBH 采用 3-shot 测试,需要推理的 GSM8K、MATH 采用 0-shot CoT 测试,MBPP 采用 0-shot 生成后运行测例计算 Pass@1 ,其他选择题类型数据集均采用 0-shot 测试。

  1. 我们在多个长文本应用场景下对 ChatGLM3-6B-32K 进行了人工评估测试。与二代模型相比,其效果平均提升了超过 50%。在论文阅读、文档摘要和财报分析等应用中,这种提升尤为显著。此外,我们还在 LongBench 评测集上对模型进行了测试,具体结果如下表所示

在这里插入图片描述

九、问题补充

  1. 模型量化
    默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:
model = AutoModel.from_pretrained("THUDM/chatglm3-6b",trust_remote_code=True).quantize(4).cuda()

模型量化会带来一定的性能损失,经过测试,ChatGLM3-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。

  1. CPU 部署
    如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).float()
  1. Mac 部署
    对于搭载了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端来在 GPU 上运行 ChatGLM3-6B。需要参考 Apple 的 官方说明 安装 PyTorch-Nightly(正确的版本号应该是2.x.x.dev2023xxxx,而不是 2.x.x)。

目前在 MacOS 上只支持从本地加载模型。将代码中的模型加载改为从本地加载,并使用 mps 后端:

model = AutoModel.from_pretrained("your local path", trust_remote_code=True).to('mps')

加载半精度的 ChatGLM3-6B 模型需要大概 13GB 内存。内存较小的机器(比如 16GB 内存的 MacBook Pro),在空余内存不足的情况下会使用硬盘上的虚拟内存,导致推理速度严重变慢。

  1. 多卡部署
    如果你有多张 GPU,但是每张 GPU 的显存大小都不足以容纳完整的模型,那么可以将模型切分在多张GPU上。首先安装 accelerate: pip install accelerate,然后通过如下方法加载模型:
from utils import load_model_on_gpus
model = load_model_on_gpus("THUDM/chatglm3-6b", num_gpus=2)

即可将模型部署到两张 GPU 上进行推理。你可以将 num_gpus 改为你希望使用的 GPU 数。默认是均匀切分的,你也可以传入 device_map 参数来自己指定。

  1. 参考
    THUDM/ChatGLM3:https://github.com/THUDM/ChatGLM3
    huggingface:https://huggingface.co/THUDM/chatglm3-6b
    modelscope:https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary

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

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

相关文章

大中小企业自招人力及劳务派遣全行业招聘抖音直播招聘效果佳

在抖音平台上,企业或者人力资源公司可以通过直播的形式,将职位以视频直播的方式展现出来。通过抖音直播招聘报白,企业或者人力资源公司可以利用抖音的短视频流量红利,触达到每天超过8亿的活跃用户群体。这样可以提高岗位信息的曝光…

python爬取百度图片上的图像

from fake_useragent import UserAgent import requests import re headers {"User-agent": UserAgent().random, # 随机生成一个代理请求"Accept-Language": "zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6","Connection": "k…

大厂面试题-JVM如何判断一个对象可以被回收

在JVM里面,要判断一个对象是否可以被回收,最重要的是判断这个对象是否还在被使用,只有没被使用的对象才能回收。 1. (如图)引用计数器,也就是为每一个对象添加一个引用计数器,用来统计指向当前对象的引用次数&…

精美UI强大娱乐功能组合微信小程序源码

这是一个多娱乐功能的小程序,功能炒鸡多,自行去体验把。 具体由以下功能组合: 网易云在线音乐(在线播放音乐和网易云功能界面一样) 外卖CPS(外卖平台优惠劵) 打车CPS(打车平台优惠劵) 头像功能(多分类头像,另外还支持姓氏头像制作) 图片加水印 表…

办公软件有哪些,办公软件哪个好

办公软件是指为办公和生产工作而设计的软件,包括文字处理、表格处理、演示文稿、电子邮件、日历、计划等各种应用软件。办公软件可以提高工作效率,让人们更加便捷地完成各种工作任务。随着科技不断发展,办公软件也在不断更新和完善&#xff0…

Instagram网红经济发展迅速!该如何紧抓这个流量

根据数据显示,网红营销市场规模在短短五年时间内从2016年的17亿美元增长至2022年的164亿美元,累计增速超过了712%。未来,有专家预计该市场预计将进一步增长,将在2023年突破210亿美元。这种惊人的增长趋势源于社交媒体的快速发展以…

[迁移学习]UniDAformer域自适应全景分割网络

原文的标题为:UniDAformer: Unified Domain Adaptive Panoptic Segmentation Transformer via Hierarchical Mask Calibration,发表于CVPR2023。 一、概述 域自适应全景分割是指利用一个或多个相关域中的现成标注数据来缓解语义分割数据标注复杂的问题。…

python环境部署

一、源码安装 1.安装依赖软件包 安装开发工具包 [rootlocalhost ~]# yum groupinstall "Development Tools" -y [rootlocalhost ~]# [rootlocalhost ~]# yum -y install zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel官网下…

pytorch打印模型结构和参数

两种方式 当我们使用pytorch进行模型训练或测试时,有时候希望能知道模型每一层分别是什么,具有怎样的参数。此时我们可以将模型打印出来,输出每一层的名字、类型、参数等。 常用的命令行打印模型结构的方法有两种: 一是直接prin…

[已解决]大数据集群CPU告警问题解决

大数据集群CPU告警问题解决 问题 6台机器的 CPU总是连续超过90% 思路 调整yarn资源 常见的是调整容器虚拟 CPU 内核 yarn.nodemanager.resource.cpu-vcores 根据集群具体的CPU核数规划 我另外调整了两个参数 最小容器虚拟 CPU 内核数量 yarn.scheduler.minimum-allocati…

中科院上高院,协鑫,和数“能源数字化智能管控”合作项目开启

10月27日,上海和数软件有限公司与协鑫综合能源服务有限公司、中国科学院上海高等研究院签署了《关于“能源数字化智能管控”开发与应用框架合作协议》。 这也标志着新疆协鑫智慧能源有限公司数字化智能提升项目——数字孪生项目正式启动。 根据协议,三方…

Flash Attention 的优点以及Softmax 归一化系数解释

文章:FLASHATTENTION: Fast and Memory-Efficient Exact Attention with IO-Awareness 原始Attention 计算使用gpu存储标准流程 涉及两个gpu存储器: 1)SRAM(static Random Access Memory):静态随机存取存储器 2&…

Python Django 之全局配置 settings 详解

文章目录 1 概述1.1 Django 目录结构 2 常用配置:settings.py2.1 注册 APP:INSTALLED_APPS2.2 模板路径:TEMPLATES2.3 静态文件:STATICFILES_DIRS2.4 数据库:DATABASES2.5 允许访问的主机:ALLOWED_HOSTS 1 …

【C】柔性数组

柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 例如: 柔性数组的特点 结构中的柔性数组成员前…

tab切换样式

一、样式一 <view class"tabs"><view class"tab" :class"{active: active index}" v-for"(item, index) in tabs" click"active index">{{item.label}}</view></view> data(){return {active: 0…

Codeforces Round 905 (Div. 3)

目录 A. Morning B. Chemistry C. Raspberries D. In Love E. Look Back F. You Are So Beautiful G1. Dances (Easy version) G2. Dances (Hard Version) A. Morning time limit per test 2 seconds memory limit per test 256 megabytes input standard input …

重磅新闻-国内首家八类网线认证分析仪上市了

伴随USA对国内某些敏感企业的非常不友好&#xff0c;设置层层障碍&#xff0c;技术堡垒。使得一些网线基础制造研发、线缆线束厂、汽车生产生产厂、军工用途的线缆品质的认证、以及相关高校的研发受到了不同的程度的阻碍。重磅消息&#xff0c;国内首家八类网线认证测仪-维信仪…

Vue前后端分离的低代码开发框架

目录 项目简介 平台特性 1.构架特性 2.功能特性 技术栈 1.后端技术栈 2.前端技术栈 2.1 Vue2技术栈 2.2 Vue3技术栈 3.数据库支持 部署方式 项目简介 JNPF开发平台是一个基于SpringBootVue3的全栈开发平台&#xff0c;采用微服务、前后端分离架构。前后端封装了上千…

【多线程相关其一】Python并发编程

1.为什么要引入并发编程 场景1&#xff1a;一个网络爬虫&#xff0c;按顺序爬取花了1个小时&#xff0c;采用并发下载减少到20分钟。 场景2&#xff1a;一个APP应用&#xff0c;优化前每次打开页面需要3秒&#xff0c;采用异步并发提升到每次200毫秒 引入并发&#xff0c;就是…