ChatGLM实战 - 文本信息抽取

news2024/10/6 12:25:53

1. ChatGLM介绍

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

代码链接👇🏻

Open In Colab

ChatGLM_实战_信息抽取

2. 场景说明

由于工作原因,需要对机器上的文本进行分类。其核心功能就是通过文件的文本内容,提取关键信息,判断文件类别 ,下文教程为通过ChatGLM模型进行信息提取的实战的一部分。

任务可拆解为两步:

1.非结构化内容提取
2.命名实体识别,内容抽取

其中第二步为信息提取,输入输出如下

  • input -> 大段文本
  • output -> 识别&提取的结构化内容

因为应用场景,短时间无法获取高质量样本,优先使用预训练模型实现,后期积累样本做微调(fine-tuning)

3. 模型选择

由于业务场景主要为中文,而且识别的类型经常发生变化 ,传统的NER模型不一定使用 ,固直接选用清华开源的ChatGLM作为前置数据提取模块,后期积累高质量数据再进行微调、模型重构。

清华ChatGLM-6B

优点: 私有部署,低成本部署。

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

4. 模型部署

由于手头无16G显存的GPU,所以使用Google Colab进行验证。

4.1 GPU设置

免费版只能用T4

查看显存,16G也够用了

!nvidia-smi

4.2 安装环境

代码拉取

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

环境安装

!pip install -r /content/ChatGLM-6B/requirements.txt

模型下载,默认下载FP16, colab内存限制,目前只能直接加载FP4,下文直接加载FP4

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4",trust_remote_code=True).half().cuda()

硬件要求参考

量化等级最低 GPU 显存(推理)最低 GPU 显存(高效参数微调)
FP16(无量化)13 GB14 GB
INT88 GB9 GB
INT46 GB7 GB

FP4模型加载完成

查看系统资源消耗,FP4 模型加载后 ,显存使用4.6 G ,内测使用2.7G

5. 模型预测

首次加载,约15s

之后预测,耗时约1s

上述仅单条测试时间,批量(batch)推理理论上更加高效 ,时长与输入的token长度有关。

6. 信息抽取

通过使用适当prompt可以让模型完成信息抽取任务,并且按指定的格式输出(json) ,以满足批处理,结构化输出的要求。

6.1 信息抽取任务

%%time
content="""ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,
基于 General Language Model (GLM) 架构,具有 62 亿参数。
手机号 18866666666
结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 
ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。
邮箱 550997728@qq.com
经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,
账号 root 密码 safhahuifbt
62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答,更多信息请参考我们的博客。
"""
prompt='从上文中,提取"信息"(keyword,content),包括:"手机号"、"邮箱"、"账号"、"密码"等类型的实体,输出json格式内容'
input ='{}\n\n{}'.format(content,prompt)
print(input)
response, history = model.chat(tokenizer, input, history=[])
print(response)

6.2 输出校验

返回结果为合法json

import json
json.loads(response)

7. 成本估算

7.1 单价计算

  • 腾讯云T4 GPU 公有云成本在2500/月, 1/4卡 975元/月
  • 测试400词,抽取耗时15s (批处理理论上会更快N倍) , 26.6 Token/s

满载处理量= 30天x24小时x60分钟x60秒x26Token=6894w Token/月

Token成本=6894w/975元= 7w/元

按照6.9的汇率折算 , 487k Token/1美元 ,既 0.002$/1k Tokens

7.2 ChatGPT价格对比

chatgpt3.5 ,gpt4相比, 价格与chatgpt 3.5持平 ,远低于gpt4 0.03$/1k token 的价格。

此处使用粗略估算,理论上有5倍以上的能效优化空间,所以成本远应远低于gpt

8. 总结

上文仅对ChatGLM-6B模型进行简单尝试,稍许改造即能满足日常使用,另外上述成本估算仅供参考,以实际使用为准。目前得知,ChatGLM 1300 亿参数版本正在测试,命名为GLM-130B,相信在未来,将会在更多复杂场景上得到应用。

9. 参考

  1. https://huggingface.co/
  2. https://github.com/THUDM/ChatGLM-6B
  3. https://colab.research.google.com/notebooks/welcome.ipynb
  4. https://openai.com/pricing

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

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

相关文章

微服务之事务处理

Informal Essay By English Hi guys、happy labor day. Everyone should have a good time to relax during the Labor Day holiday. But don’t forget to improve yourself during the holiday period 参考书籍: “凤凰架构” “微服务架构设计模式” 引言 …

K8S[Kubernetes]快速安装组件(Kubectl Kubeadam Kubeinit)

文章目录 配置K8S主从集群前置准备操作一:主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二:安装自动填充,虚拟机默认…

汇编语言学习笔记四

字符 字符是以ASCII码的形式存储的,一个字符对应着8为二进制数,2位16进制数。 所以可以得到对应的字符地址。 assume ds:data data segmentdb hellodb world data endsand or指令 根据ASCII码,字符的大写和小写相差一个0010 0000&#xff…

Java的锁事

乐观锁和悲观锁 悲观锁 认为自己在使用数据的使用一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改 synchronized关键字和Lock的实现都是悲观锁 适合写操作多的场景,先加锁可以保证写操作时数据正确 …

SpringcloudAlibaba详解

目录 微服务架构概念 服务治理 服务调用 服务网关 服务容错 链路追踪 SpringcloudAlibaba组件 Nacos 负载均衡 Ribbon Fegin Sentinel 高并发测试 容错方案 Sentinel入门 Feign整合Sentinel 微服务架构概念 服务治理 服务治理就是进行服务的自动化管理&#xf…

解决使用git命令查看的某次提交时间与git log中显示的不一致的问题

文章目录 问题描述缘由解决办法参考资料 问题描述 笔者的使用环境: Git 2.37.0.windows.1 TortoiseGit 2.11.0.0 IntelliJ IDEA 2022.3.1 (Ultimate Edition) 笔者遇到一个问题,需要查看 Git 某个提交(commit)的时间&#xff0…

女朋友说总是记不住Git命令,怎么办?安排!

如果你也和我女朋友一样总是忘记Git命令,觉得记忆Git命令是很枯燥和麻烦的事情。我写了一个包含了40 条常用Git命令的清单。你一定要收藏起来,当你忘记Git命令的时候,就可以打开来查看啦!!! 1.初始化本地仓…

程序员实习和就业选择应该怎么做?分享4个重要的影响因素

近期后台很多人都有问到找实习、找工作相关的问题,今天就展开聊聊。首先,理个时间点给大家提个醒,暑期实习的简历投递时间集中在3月-5月,秋招简历投递时间集中在6月-10月。所以,今年想找实习、想投秋招的学生一定要注意…

MySQL的概念,编译及安装

一.数据库的基本概念 1、数据(Data) • 描述事物的符号记录 • 包括数字,文字,图形,图像,声音,档案记录等 • 以“记录”形式按统一的格式进行存储 2、表 • 将不同的记录组织在一起 • …

WiFi也能检测人体3D动作?误差低至2.4厘米

佛罗里达州立大学和罗格斯大学的科研人员开发了一种基于Wi-Fi传感的3D网格技术:Wi-Mesh,该方案宣称可识别并创建可靠的3D人体网格,可辅助计算机视觉、AR/VR定位等应用。 简单来讲,Wi-Mesh通过分析多个Wi-Fi天线接收的反射信号&…

ubuntu20安装electron并用electron-packager打包

起因是想复现港科大的无人机集群GUI界面:https://github.com/HKUST-Aerial-Robotics/swarm_gcs 这是一个用javascript写的,基于electron和nodejs的可以用浏览器打开的gui界面,其中3d显示的部分用的是Three.js。electron有一个好处是可以跨平台…

【MySQL学习】MySQL数据类型

文章目录 前言一、数据类型分类二、数值类型2.1 TINYINT类型2.2 BIT类型2.3 小数类型2.3.1 float类型2.3.2 decimal类型 三、字符串类型3.1 CHAR类型3.2 VARCHAR类型3.3 CHAR和VARCHAR比较 四、日期和时间类型五、ENUM和SET类型 前言 MySQL 数据类型定义了列中可以存储什么数据…

串口信息打印规范(含打印技巧)

1.串口信息打印规范 学习一下串口打印信息的格式(清楚明了,调试过程中很重要) 日志级别:info(初始化)、debug(运行过程)、error(报错) [日志级别] 文件名 …

二十一、SQL 数据分析基础与进阶:窗口函数

文章目录 一、什么是窗口函数二、聚合函数OVER()函数三、PARTITION BY 子句四、排序函数4.1 ROW_NUMBER() 函数4.2 演示 RANK()、DENSE_RANK()、ROW_NUMBER() 函数的异同4.3 NTILE() 函数4.4 LAG() 和 LEAD() 函数4.5 FIRST_VALUE() 和 LAST_VALUE() 函数 五、Window Frames 自…

S5CL:通过分层对比学习统一全监督、自监督和半监督学习

文章目录 S5CL: Unifying Fully-Supervised,Self-supervised, and Semi-supervised Learning Through Hierarchical Contrastive Learning摘要本文方法损失函数 实验结果消融实验 S5CL: Unifying Fully-Supervised,Self-supervised, and Semi-supervised Learning Through Hier…

计算机体系结构框架

这是基于胡伟武老师的计算机体系结构课程所总结出来的框架,希望能让没有学习该课程的人可以去了解计算机是怎么造的,而对于学习这门课程的人可以在学习课程之前对整体框架有一个初步的认知。 如果不想看文字的话,可以看视频哦! 目…

ros2 服务——ubuntu20.04——自定义数据类型

文章目录 自定义一个服务数据类型接口创建sev目录和文件修改包的CMakeLists.txt文件修改包的package.xml文件查看是否成功 服务全部代码 自定义一个服务数据类型接口 创建sev目录和文件 服务的接口类型由两部分组成,请求和相应 在包的src的同级目录下创建sev文件…

OpenCV基础补充自适应阈值及图像金字塔

文章目录 OpenCV基础补充自适应阈值及图像金字塔自适应阈值图像金字塔人脸检测视频检测人脸检测 OpenCV基础补充自适应阈值及图像金字塔 对于OpenCV知识点还有很多,基础的大家可以参考前面几节。 OpenCv基础之绘图及几何变换实例 OpenCV基础操作之图像的形态学运算…

PMP/高项 06-项目成本管理

项目成本管理 概念 项目成本管理 项目成本管理又被称为项目造价管理,是有关项目成本和项目价值两个方面的管理,是为保障以最小的成本实现最大的项目价值而开展的项目专项管理工作。 确保在批准的项目预算内完成项目 成本管理内容 规划成本管理 制定项目…

华为OD机试真题(Java),整数对最小和(100%通过+复盘思路)

一、题目描述 给定两个整数数组array1、array2,数组元素按升序排列。 假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素, 并对取出的所有元素求和,计算和的最小值。 注意: 两对元素如果对应于array1、array2中的两个下标均相同,则视为同一…