HuggingFace/transformers系列文章

第一章 huggingface简介


文章目录

  • HuggingFace/transformers系列文章
  • 前言
  • 一、Bert简介
  • 二、HuggingFace/transformers
  • 三、安装使用
    • 1.安装库
    • 2.简单使用
      • 2.1 准备预训练模型
      • 2.2 embedding

前言

最近需要研究预训练模型,huggingface目前是最火热的自然语言处理框架,为此写此系列文章,边做个学习记录边做个分享


先做个简介开个头吧,后续会边研究边实践边分享,从安装到主要应用实验,从源码解析到背景理论知识。水平有限,敬请谅解(文章主要使用pytorch,做中文任务,对tensorflow版不做详细介绍)

一、Bert简介


清华大学自然语言处理实验室对预训练语言模型架构的梳理;传送门:https://github.com/thunlp/PLMpapers

BERT
由Google AI在2018年底推出,刚出现就刷新了一大批榜单,甚至在一些任务上超过了人类的表现。
核心贡献:
1.BERT揭示了语言模型的深层双向学习能力在任务中的重要性
2.BERT再次论证了fine-tuning的策略是可以有很强大的效果的,而且再也不需要为特定的任务进行繁重的结构设计。
创新之处:
在预训练的时候使用了两个非监督任务:
1.MLM(掩盖语言模型)
2.NSP(下一句预测)
**有兴趣想具体可查询其他博客,这里不再介绍 **

二、HuggingFace/transformers

Huggingface总部位于纽约,是一家专注于自然语言处理、人工智能和分布式系统的创业公司。他们所提供的聊天机器人技术一直颇受欢迎,但更出名的是他们在NLP开源社区上的贡献。Huggingface一直致力于自然语言处理NLP技术的平民化(democratize),希望每个人都能用上最先进(SOTA, state-of-the-art)的NLP技术,而非困窘于训练资源的匮乏。同时Hugging Face专注于NLP技术,拥有大型的开源社区。尤其是在github上开源的自然语言处理,预训练模型库 Transformers,已被下载超过一百万次,github上超过24000个star。Transformers 提供了NLP领域大量state-of-art的 预训练语言模型结构的模型和调用框架。

官网连接:https://huggingface.co/
GitHub: https://link.zhihu.com/?target=https%3A//github.com/huggingface/transformers

三、安装使用

1.安装库

Transformers库的当前版本基于Python 3.6+,PyTorch 1.0.0+和TensorFlow 2.0+

pip install transformers

另一种方法,从源码安装,如果后续要完整运行transformers自带的最新examples的话,建议用这种方式安装

git clone https://github.com/huggingface/transformers
cd transformers
pip install .

代码更新后升级方式

git pull
pip install --upgrade .

检查安装版本及正确性

import tensorflow as tf; tf.__version__         # 检查tf版本
import torch; torch.__version__                 # 1.6.0
import transformers;transformers.__version__    # 4.8.2

2.简单使用

2.1 准备预训练模型

由于中文任务,我们需要用transformers下载一个中文预训练模型,transformers已经帮我们打包好了这些共享模型,并且可以通过一致的from_pretrained接口下载模型到本地cache;
transformers模型管理的方式是为每一个模型起一个唯一的短名,如果一个模型同时有一个配套的tokenizer模型的话,它们会共用一个短名。因此只要知道模型短名,就能任意加载想要的预训练模型。

短名查询传送门:https://huggingface.co/models

from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('bert-base-chinese')
model = AutoModel.from_pretrained('bert-base-chinese')

ps:也可以自行从其他路径下载预训练模型读取,把上述短名参数换成本地模型路径名即可(例如本地文件夹/transformers/hfl内下载了chinese-bert-wwm-ext)

from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('./transformers/hfl/chinese-bert-wwm-ext')
model = AutoModel.from_pretrained('./transformers/hfl/chinese-bert-wwm-ext')

2.2 embedding

从nlp基操开始,做个向量编码

from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('./transformers/hfl/chinese-bert-wwm-ext')
tokenizer = AutoTokenizer.from_pretrained('./transformers/hfl/chinese-bert-wwm-ext')
input_ids = tokenizer.encode('今天天气真好', return_tensors='pt') #[1,8] tensor([[ 101,  791, 1921, 1921, 3698, 4696, 1962,  102]])
outputs = model(input_ids) # outputs.last_hidden_state [1, 8, 768] outputs.pooler_output [1,768]
v = torch.mean(outputs.last_hidden_stat, dim=1) # shape (1, 768)

PS:
1.tokenizer分词器,对输入序列按字分词,查询词表并添加两个特殊字符[CLS]和[SEP],shape = [1,8] ,而model(input_ids)返回两个值last_hidden_state以及pooler_output。对输入的sequence中的每个token/字都返回了一个768维的向量。。
2. 根据文档的说法,pooler_output向量一般不是很好的句子语义摘要,因此这里采用了torch.mean对last_hidden_state进行了求平均操作

最后得到词向量就能愉快继续后续操作了

第一章 huggingface简介相关推荐

  1. hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  2. 《RabbitMQ 实战指南》第一章 RabbitMQ 简介

    <RabbitMQ 实战指南>第一章 RabbitMQ 简介 文章目录 <RabbitMQ 实战指南>第一章 RabbitMQ 简介 一.什么是消息中间件 二.消息中间件的作用 ...

  3. 第一章 WebGL简介 Introduction

    第一章 WebGL简介 Introduction 概述 webGL是一组用于在web html上下文中绘制3D图像的web接口 html Canvas对象所有绘制图像的舞台,通过使用CanvasRen ...

  4. 【正点原子FPGA连载】第一章 ZYNQ简介 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  5. 第一章:Google简介

    第一章:Google简介 Google(www.Google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于 ...

  6. 自考02323《操作系统概论》第一章操作系统简介——思维导图

    备战2020年4月自考科目02323<操作系统概论>第一章操作系统简介 思维导图如下: ================================================== ...

  7. LLVM 极简教程: 第一章 教程简介与词法分析器

    第一章 教程简介与词法分析器¶ 原文: Tutorial Introduction and the Lexer 教程介绍 欢迎走进"LLVM开发新语言"教程.本教程详细介绍了一门简 ...

  8. 第一章 Centos 简介与安装

    第一章 Centos 简介与安装 第一节 :Centos 简介 Centos作为主流的一种Linux操作系统,以后java1234课程中,比如后期讲Redis,以及部署一些项目,会把Centos作为服 ...

  9. STM32单片机开发应用教程 (HAL库版) ---基于国信长天嵌入式竞赛实训平台(CT117E-M4)教程汇总 与第一章 硬件平台简介

    写在前面-- 作为<STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>教程汇总,第一章将介绍国信长天嵌入式竞赛实训平台(CT117E-M4) ...

最新文章

  1. 很好的FireFox addin
  2. SpringMVC Hello World 实例
  3. codevs1127 接水问题
  4. 使用Dockerfile制作JDK+tomcat镜像
  5. Upload LABS Pass-1
  6. 计算机组成原理——第一章
  7. react native 8081 端口号被占
  8. matter.js学习笔记(八)--Composites.newtonsCradle()制造牛顿摆
  9. 17年的回望,18年的期望
  10. 使用layer.open打开自定义弹窗,获取表单内容发送到后端
  11. Cesium奇幻之旅(一)
  12. 什么是SAP Cloud Platform(SAP云平台) ?
  13. 刷题:力扣-LCS 01. 下载插件
  14. 火山安卓RSA加解密操作
  15. Web自动化测试02
  16. 容斥原理(二进制实现)
  17. 压缩比13为什么建议用92的油_纯干货|马自达发动机13:1压缩比,却可以烧92号油,为何不爆震?...
  18. HG Plugins 1.0 For JQuery
  19. 线上O2O商城系统怎么做好运营 O2O成为商业模式需要哪些条件?
  20. w3c的web标准包括html4吗,web标准以及w3c标准

热门文章

  1. Linux常用命令(三)
  2. 什么是数字化存在?数字化转型要先从数字化存在开始
  3. 在win10中安装xp虚拟机的教程--win10专业版
  4. ucsd大学音乐计算机,音乐留学│综合名校UCSD音乐制作专业详解!
  5. 中国将在 Sailfish 基础上开发移动操作系统
  6. 9.10 安卓常用工具类之一 定位-----LocationUtils
  7. Unity实战 RTS3D即时战略游戏开发(三)
  8. 王者荣耀最低战力查询接口
  9. 计算机桌面程序图片,笑哭!程序员电脑桌面原来是这个样子的?
  10. 【Unity】安卓加密编译libmono.so成功失败记录(unity2017已成功编译)