当前位置:   article > 正文

huggingface/transformers快速上手_huggingface transformers

huggingface transformers

参考资料

现在做NLP方面的研究实在离不开预训练语言模型,尤其是BERT。

huggingface的transformers包是目前使用BERT最主流最方便的工具之一,写一遍博客记录如何快速上手。

注:由于官方文档和网页时常更新,链接失效是很有可能的!

本篇博客使用的transformers版本为 4.15.0

1. 预训练模型下载

huggingface/transformers 支持的所有模型:https://huggingface.co/models

如果环境支持科学上网,可以通过git lfs命令直接下载模型。

git lfs install
git clone https://huggingface.co/bert-base-chinese
  • 1
  • 2

如果需要手动下载模型并上传至服务器,则可以在 huggingface 的网页中手动下载模型。

通常我们需要保存的是三个文件及一些额外的文件

  • 配置文件 config.json

  • 词典文件 vocab.json

  • 预训练模型文件,如果你使用pytorch则保存 pytorch_model.bin,如果你使用tensorflow 2则保存 tf_model.h5

额外的文件,指的是merges.txt、special_tokens_map.json、added_tokens.json、tokenizer_config.json、sentencepiece.bpe.model等,这几类是tokenizer需要使用的文件,如果出现的话,也需要保存下来。没有的话,就不必在意。如果不确定哪些需要下,哪些不需要的话,可以把类似的文件全部下载下来。

bert-base-chinese 模型为例,点击 Files and versions,下载所需的文件,放入与模型同名的文件夹中。

在这里插入图片描述

下载后,需保持文件夹和文件名称与仓库中的一致。

模型的快速使用

from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
model = AutoModelForMaskedLM.from_pretrained("bert-base-chinese")
  • 1
  • 2
  • 3

from_pretrained()的参数pretrained_model_name_or_path,可以接受的参数有如下几种:

  • short-cut name(缩写名称,类似于gpt2这种)

  • identifier name(类似于microsoft/DialoGPT-small这种)

  • 文件夹

  • 文件

对于short-cut name 或 identifier name,这种情况下,本地有文件,可以使用本地的,本地没有文件,则会自动下载。

一些常用的short-cut name,可以在 https://huggingface.co/models 中查看

对于文件夹,则会从文件夹中找vocab.json、pytorch_model.bin、tf_model.h5、merges.txt、special_tokens_map.json、added_tokens.json、tokenizer_config.json、sentencepiece.bpe.model等进行加载。所以这也是为什么下载的时候,一定要保证这些名称是这几个,不能变。

对于文件,则会直接加载文件。

官方给的样例,通常都是 short-cut name,我们可以将之替换为下载好的模型文件夹路径。

from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained(local_model_path)
model = AutoModelForMaskedLM.from_pretrained(local_model_path)
  • 1
  • 2
  • 3

2. 官方 Quick tour

Quick tour代码实时运行(google Colab)

1. pipeline API

在给定任务上使用预训练模型的最简单方法是使用pipeline()。Transformers为以下任务提供了开箱即用的接口:

  • 情感分析(Sentiment analysis)
  • 英语文本生成(Text generation in English)
  • 命令实体识别(Name entity recognition, NER)
  • QA
  • 文本填空: 给定带有被屏蔽词的文本(例如,用[mask]替换),然后填入空白处
  • 摘要(Summarization)
  • 翻译
  • 特征提取: 返回文本的向量表示

所有任务的示例代码

下面以情感分析任务为例

from transformers import pipeline
classifier = pipeline('sentiment-analysis')
  • 1
  • 2

第一次键入此命令时,将下载对应的预训练模型和它的分词器(tokenizer)。分词器的作用是将文本先进行预处理,然后将分词结果输入模型进行预测。管道将所有这些信息组合在一起,并对预测进行后期处理,使其可读。

简单使用:

classifier('We are very happy to show you the 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/362271
推荐阅读
相关标签