赞
踩
本文内容
本文主要包括如下内容:
和 Github 类似,都是Hub(社区)。Hugging Face可以说的上是机器学习界的Github。Hugging Face为用户提供了以下主要功能:
Hugging Face Transformer是Hugging Face最核心的项目,你可以用它做以下事情:
安装Transformers非常简单,直接安装即可。
pip install transformers
如果你的任务是一个比较常见的,大概率可以直接使用Transformer提供的API解决,其使用方式非常简单,可以说是直接用即可。
对于部分特定任务,官方并没有提供相应的模型,但你也可以到,然后显示指定即可。在加载模型时,你有可能会因为缺少一些库而报错,这个时候,只需要安装对应的库,然后重启即可。
更多Pipeline请参考:https://huggingface.co/docs/transformers/v4.21.0/en/main_classes/pipelines
本节来介绍一下如何通过Hugging Face找到你需要的模型。
首先,我们需要到来到官网的。之后我们会看到如下界面:
其主要包含三部分:
该页面主要的几个部分:
详情请参考:https://huggingface.co/docs/api-inference/index1. 使用该模型的应用(Spaces using …):这里展示了使用该模型的应用,可以点进去玩一玩。1. 代码样例(Use in Transformers):你可以通过该模块直接查看该模型的使用方式,直接拷贝代码到项目里就可以用了。
Transformers项目提供了几个简单的API帮助用户使用Hugging Face模型,而这几个简单的API统称为AutoClass
(),包括:
AutoTokenizer
: 用于文本分词1. AutoFeatureExtractor
: 用于特征提取1. AutoProcessor
: 用于数据处理1. AutoModel
: 用于加载模型 它们的使用方式均为: AutoClass.from_pretrain("模型名称")
,然后就可以用了。例如:{'input_ids': [101, 1045, 1005, 1049, 4083, 2784, 4083, 1012, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1]}
通常一个模型会包含上述4个中的部分功能,例如,对于bert-base-uncased
模型,就包含“分词”和“模型”两项功能,我们可以通过代码样例(Use in Transformers) 模块查看:
也不是所有的模型都可以使用
AutoModel
,具体还要看模型的代码示例。
很多情况下,Hugging Face提供的模型并不能满足我们的需要,所以我们还是要自己训练模型的。此时我们可以使用Hugging Face提供的预训练模型来进行迁移学习,本节将会介绍如何使用Hugging Face进行迁移学习。
使用Hugging Face模型做迁移学习的思路和普通迁移学习几乎一致:
bert-base-uncased
模型作为例子,进行一次模型参数更新操作,假设我的任务是一个二分类的情感分类问题。首先,我们先尝试一下运行该模型,我们将该模型的Use in Transformers中的样例代码拷贝过来:
Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertForMaskedLM: ['cls.seq_relationship.weight', 'cls.seq_relationship.bias']
- This IS expected if you are initializing BertForMaskedLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
- This IS NOT expected if you are initializing BertForMaskedLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
之后我们需要尝试使用一下该模型:
{'input_ids': tensor([[ 101, 4083, 2003, 1037, 2200, 3407, 103, 1012, 102]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1]])}
通常HuggingFace模型的的使用都是分两步,首先分词(其他模型可能是特征提取AutoFeatureExtractor
等),然后将第一步的结果作为模型的入参。注意第一步通常要指定return_tensors='pt'
来让其返回tensor类型的数据。我们也可以使用Jupyter中的tokenizer?
方式来查看其使用方法。
这里我们得到了和页面同样的数据,
模型测试完毕,接下来开始正式进入迁移学习。
bert-base-uncased
的任务是Fill-Mask
,也就是填空任务,而我们的任务是情感分类,所以我们要把原本的分类器给去掉。我们先打印一下当前模型:
我们可以从输出中看到,bert-base-uncased
模型由两大部分构成,bert
和最后的分类层cls
,我们做迁移学习,肯定是要前面的bert
层,所以我们可以这么提取其bert
层:
我们来尝试一下使用model.bert
:
BaseModelOutputWithPoolingAndCrossAttentions(last_hidden_state=tensor([[[ 0.0568, 0.1662, 0.0943, ..., -0.0346, -0.0636, 0.1689],
[-0.0402, 0.0757, 0.1923, ..., -0.0217, -0.0459, 0.0711],
[-0.1038, -0.0372, 0.5063, ..., -0.1587, 0.0475, 0.5513],
...,
[ 0.1763, -0.0111, 0.1922, ..., 0.1891, -0.1079, -0.2163],
[ 0.8013, 0.4953, -0.2258, ..., 0.1501, -0.7685, -0.3709],
[ 0.0572, 0.3405, 0.6527, ..., 0.4695, -0.0455, 0.3055]]],
grad_fn=<NativeLayerNormBackward0>), pooler_output=None, hidden_states=None, past_key_values=None, attentions=None, cross_attentions=None)
torch.Size([1, 9, 768])
可以看到,我们得到的是bert输出的隐层信息,我们可以将该隐层信息输入到一个线性层进行情感分类,然后进行损失函数计算,进而反向传播更新参数即可。有一点需要注意,上面返回的隐层Shape为(1, 9, 768),其中1为batch_size,9是因为tokens有9个,768是每个token对应的向量的维度。我们在使用bert进行情感分类时,通常是使用第一个token(<bos>
)的结果。
这样,一次参数更新就完成了,尝试把他应用到真实的项目中去吧。
Datasets类库(, )可以让你非常方便的访问和分享数据集,也可以用来对NLP、CV、语音等任务进行评价(Evaluation metrics).
本节将会讲解Hugging Face数据集的使用。
直接使用pip安装即可:
pip install datasets
如果要使用语音(Audio)数据集,则需要执行如下命令:
pip install datasets[audio]
同理,图片(Image)数据为:
pip install datasets[vision]
首先,我们需要打开页面,与Models页面类似,这里展示了Hugging Face的数据集,可以使用标签或名称进行筛选:
我们可以点进我们感兴趣的数据集,查看详情:
Hugging Face的数据集通常包括多个子集(subset),并且分成了train、validation和test三份。你可以通过预览区域查看你需要的子集。
加载Hugging Face只需要用到datasets.load_dataset
一个方法就够了。使用方法也很简单,直接填入要加载的数据集就可以了:
Hugging Face的数据集都是放在github上的,所以国内估计很难下载成功。这就要用到
load_dataset
的加载本地数据集。关于如何离线下载Hugging Face数据集,可参考
我们这里离线下载好数据集后,将其拷贝到当前目录下,目录结构为:
我们现在开始来加载本地数据集:
对于这种有子集的数据集,必须要指定你要加载的子集名称
可以看到,dataset
是一个Dict类型的,那么就可以按照dict的方式访问数据集:
到这里,数据集入门就讲完了,更多的内容就需要在你有需要的时候自己探索了。
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。