大模型开源:ChatGLM-6B (介绍以及本地部署)

news2024/9/20 14:08:21

简介

ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

ChatGLM 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B1中注入了代码预训练,通过有监督微调(Supervised Fine-Tuning)等技术实现人类意图对齐。ChatGLM 当前版本模型的能力提升主要来源于独特的千亿基座模型 GLM-130B。它是不同于 BERT、GPT-3 以及 T5 的架构,是一个包含多目标函数的自回归预训练模型。2022年8月,我们向研究界和工业界开放了拥有1300亿参数的中英双语稠密模型 GLM-130B1,该模型有一些独特的优势:

双语: 同时支持中文和英文。

高精度(英文): 在公开的英文自然语言榜单 LAMBADA、MMLU 和 Big-bench-lite 上优于 GPT-3 175B(API: davinci,基座模型)、OPT-175B 和 BLOOM-176B。

高精度(中文): 在7个零样本 CLUE 数据集和5个零样本 FewCLUE 数据集上明显优于 ERNIE TITAN 3.0 260B 和 YUAN 1.0-245B。

快速推理: 首个实现 INT4 量化的千亿模型,支持用一台 4 卡 3090 或 8 卡 2080Ti 服务器进行快速且基本无损推理。

可复现性: 所有结果(超过 30 个任务)均可通过我们的开源代码和模型参数复现。

跨平台: 支持在国产的海光 DCU、华为昇腾 910 和申威处理器及美国的英伟达芯片上进行训练与推理。

在这里插入图片描述

在这里插入图片描述

官方实例

>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)
你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
>>> response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
>>> print(response)
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:

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

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

本地部署

1.下载代码

git clone https://github.com/THUDM/ChatGLM-6B.git

2.通过conda创建虚拟环境

# 新建chatglm环境
conda create -n chatglm python=3.8
# 激活chatglm环境
conda activate chatglm
# 安装PyTorch环境(根据自己的cuda版本选择合适的torch版本)
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
# 安装gradio用于启动图形化web界面
pip install gradio
# 安装运行依赖
pip install -r requirement.txt

3.修改代码

  • 在web_demo.py的最后一句demo.queue().launch(share=True),加两个server_name=“0.0.0.0”, server_port=1234参数。
demo.queue().launch(share=True,server_name="0.0.0.0",server_port=9234)

4.模型量化

默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下:

  • GPU
# FP16精度加载,需要13G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
# int8精度加载,需要10G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(8).cuda()
# int4精度加载,需要6G显存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()
  • CPU
#32G内存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).float()
#16G内存
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).bfloat16()

5.详细代码

from transformers import AutoModel, AutoTokenizer
import gradio as gr

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
# model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
# 按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().quantize(4).cuda()
model = model.eval()

MAX_TURNS = 20
MAX_BOXES = MAX_TURNS * 2


def predict(input, history=[]):
    response, history = model.chat(tokenizer, input, history)
    updates = []
    for query, response in history:
        updates.append(gr.update(visible=True, value=query))
        updates.append(gr.update(visible=True, value=response))
    if len(updates) < MAX_BOXES:
        updates = updates + [gr.Textbox.update(visible=False)] * (MAX_BOXES - len(updates))
    return [history] + updates


with gr.Blocks() as demo:
    state = gr.State([])
    text_boxes = []
    for i in range(MAX_BOXES):
        if i % 2 == 0:
            label = "提问:"
        else:
            label = "回复:"
        text_boxes.append(gr.Textbox(visible=False, label=label))

    with gr.Row():
        with gr.Column(scale=4):
            txt = gr.Textbox(show_label=False, placeholder="Enter text and press enter").style(container=False)
        with gr.Column(scale=1):
            button = gr.Button("Generate")
    button.click(predict, [txt, state], [state] + text_boxes)
demo.queue().launch(share=True,server_name="0.0.0.0",server_port=9234)

调用示例

在这里插入图片描述

在这里插入图片描述

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

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

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

相关文章

水位雨量自动监测站的工作原理

水位雨量自动监测站是一种集自动化、智能化于一体的水文监测设施&#xff0c;主要用于实时监测和记录水位及降雨量的变化&#xff0c;为水文预报、水资源管理、防洪减灾等提供科学依据。水位雨量自动监测站主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构…

js读取文件,生成随机题目,多项选择题则提供随机答案供选择

一.第一个要求 根据模板生成随机题目可以将 --- 内的内容 ---变成JSON然后根据参数的限制条件来生成随机参数&#xff0c;再替换到题目中example.md --- Type: Quiz Template Domain: - Geometry Knowledge:- - 數學- 度量、圖形與空間範疇- 弧長和扇形面積- 理解圓的弧長公…

掌握项目全流程:10个项目管理烫知识

一、启动阶段 1、一个清晰且有吸引力的项目愿景对于项目的成功启动至关重要。它能够让所有项目成员以及相关干系人明白项目的最终目标和意义。 在这个阶段&#xff0c;我们可以利用项目管理工具进度猫来可视化地呈现项目的整体愿景&#xff0c;将大的目标拆分成初步的任务板…

RT-DETR训练自己的数据集(从代码下载到实例测试)

文章目录 前言一、RT-DETR简介二、环境搭建三、构建数据集四、修改配置文件①数据集文件配置②模型文件配置③训练文件配置 五、模型训练和测试模型训练模型测试 总结 前言 提示&#xff1a;本文是RT-DETR训练自己数据集的记录教程&#xff0c;需要大家在本地已配置好CUDA,cuD…

302状态如何进行重定向

文章目录 一、302状态是什么意思二、遇到的使用场景三、如何处理customservice.wxmlcustomservice.js 一、302状态是什么意思 302状态码是临时重定向&#xff08;Move Temporarily&#xff09;&#xff0c;表示所请求的资源临时地转移到新的位置。此外还有一个301永久重定向&a…

【spring】maven引入okhttp的日志拦截器打开增量注解进程

HttpLoggingInterceptor 是在logging-interceptor库中的:这个logging库老找不到 import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor;发现这仨是独立的库 pom中三个依赖 <!-- OKHTTP3 --><

在group by分组的时候,某个key过多导致数据倾斜

解决方案&#xff1a;将 key 打散&#xff0c;给 key 增加随机前缀 在进行 group by 之前&#xff0c;先给每个 user_id 增加一个随机前缀&#xff0c;使得原本相同的 user_id 被打散到不同的分组中。 按带前缀的 key 进行分组 对带有随机前缀的 user_id 进行分组和聚合。 …

重要涉密文件如何防窃取?四个方法有效防止文件泄密【文件保密管理】

随着信息化时代的发展&#xff0c;数据安全问题变得日益突出&#xff0c;特别是对于一些重要的涉密文件&#xff0c;其泄密将带来严重后果。因此&#xff0c;企业和个人在处理机密文件时&#xff0c;必须采取有效的措施来防止文件被窃取。 小编在本文将介绍四个有效的方法&…

三招教你搞定GPU服务器配置→收藏推荐配置

在AI人工智能应用日益渗透各行各业的今天&#xff0c;图形处理器&#xff08;GPU&#xff09;市场呈现出蓬勃发展的态势&#xff0c;其中GPU服务器市场更是炙手可热&#xff0c;其热度始终居高不下。随着人工智能、深度学习、大数据分析等前沿领域的不断拓展与深化&#xff0c;…

python+matplotlib 画一个漂亮的折线统计图

pythonmatplotlib 画一个漂亮的折线统计图 有详细的注释说明…… import matplotlib.pyplot as plt import numpy as np import mathdef draw_line_chart(Line_data_list,title,pic_name)::param Line_data_list: 折线数据源:param title: 图表名称:param pic_name: 保存图片名…

免费!OpenAI发布最新模型GPT-4o mini,取代GPT3.5,GPT3.5退出历史舞台?

有个小伙伴问我&#xff0c;GPT-4O mini是什么&#xff0c;当时我还一脸懵逼&#xff0c;便做了一波猜测&#xff1a; 我猜测哈&#xff0c;这个可能是ChatGPT4o的前提下&#xff0c;只支持文本功能的版本&#xff0c;速度更快 结果&#xff0c;大错特错。 让我们一起看看Open…

理解高并发

文章目录 1、如何理解高并发2、高并发的关键指标3、高并发系统设计的目标是什么&#xff1f;1_宏观目标2_微观目标1.性能指标2.可用性指标3.可扩展性指标 4、高并发的实践方案有哪些&#xff1f;1_通用的设计方法1.纵向扩展&#xff08;scale-up&#xff09;2.横向扩展&#xf…

【隐私计算】Cheetah安全多方计算协议-阿里安全双子座实验室

2PC-NN安全推理与实际应用之间仍存在较大性能差距&#xff0c;因此只适用于小数据集或简单模型。Cheetah仔细设计DNN&#xff0c;基于格的同态加密、VOLE类型的不经意传输和秘密共享&#xff0c;提出了一个2PC-NN推理系统Cheetah&#xff0c;比CCS20的CrypTFlow2开销小的多&…

数据结构—线性表和顺序表

线性表&#xff1a; 线性表是一个由n个具有相同特性的数据元素构成的有限序列。常用到的线性表都有&#xff1a;链表、队列、栈、顺序表.... 顺序表&#xff1a; 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff08;顺序表的元素类型是包装类&#x…

[苍穹外卖]-10WebSocket入门与实战

WebSocket WebSocket是基于TCP的一种新的网络协议, 实现了浏览器与服务器的全双工通信, 即一次握手,建立持久连接,双向数据传输 区别 HTTP是短连接, WebSocket是长连接HTTP单向通信, 基于请求响应模型WebSocket支持双向通信 相同 HTTP和WebSocket底层都是TCP连接 应用场景…

Android 通过相机和系统相册获取图片,压缩,结果回调

一、需求背景 在常规的App开发中&#xff0c;很多时候需要用户上传图片来进行一些业务上的实现&#xff0c;例如用户反馈&#xff0c;图片凭证等。 二、实现功能 1.选择弹窗&#xff08;即选择拍照或者相册&#xff09; 2.申请权限&#xff08;相机权限&#xff09; 3.相机…

油耳用什么掏耳朵比较好?可视挖耳勺推荐平价

掏耳朵是一个轻松又舒服的感觉&#xff0c;很多人就会用棉签和普通耳勺越掏越进&#xff0c;在盲掏的过程中容易弄伤耳膜。所以我们在掏耳时要选好工具。市面上的智能可视挖耳勺&#xff0c;顶端带有摄像头&#xff0c;可以通过清楚的观察到耳道中的情况。但现在市面上关于可视…

【Unity学习心得】如何使用Unity制作“饥荒”风格的俯视角2.5D游戏

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、需要导入的素材二、要实现的步骤 俯视角2D人物移动控制2.5D风格的实现使用协程实现相机绕玩家旋转效果总结 前言 由于要找工作开始重新拾起学习Unity&#…

系统资源智能管理:zTasker软件的监控与优化

在创新的引领下&#xff0c;科技不断迭代升级&#xff0c;为我们应对快节奏生活的挑战提供了强大的工具。它让我们在协调工作与家庭的同时&#xff0c;也能保持内心的宁静与平衡——而自动化工具的出现&#xff0c;正是科技力量在提升工作效率和生活质量方面的体现。zTasker&am…

System.out源码解读——err 和 out 一起用导致的顺序异常Bug

前言 笔者在写一个小 Demo 的过程中&#xff0c;发现了一个奇怪的问题。问题如下&#xff1a; // 当 flagtrue 时打印 a1 &#xff1b;当 flagfalse 时打印 a2。 public static void main(String[] args) {boolean flag false;for (int i 0; i < 10; i) {if (flag) {Sys…