大模型开发工具库

Hugging Face Transformers

Hugging Face Transformers库是什么?

Hugging Face Transformers是一个 Python库,允许用户下载和训练机器学习(ML)模型。它最初被创建用于开发语言模型,现在功能已扩展到包括多模态、计算机视觉和音频处理等其他用途的模型。

  • Transformers提供了数以千计的预训练模型,支持100多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的NLP技术人人易用。
  • Transformers提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过modelhub与社区共享。同时,每个定义的Python 模块均完全独立,方便修改和快速研究实验。
  • Transformers 支持三个最热门的深度学习库:Jax,PyTorch以及TensorFlow并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。

Hugging Face Transformers 库独特价值

  • 丰富的预训练模型:提供广泛的预训练模型,如BERT、GPT、T5等,适用于各种NLP任务。
  • 易于使用:设计注重易用性,使得即使没有深厚机器学习背景的开发者也能快速上手。
  • 最新研究成果的快速集成:经常更新,包含最新的研究成果和模型。
  • 强大的社区支持:活跃的社区不断更新和维护库,提供技术支持和新功能。
  • 跨框架兼容性:支持多种深度学习框架,如PyTorch、TensorFlow,提供灵活选择。
  • 高度灵活和可定制化:允许用户根据需求定制和调整模型,进行微调或应用于特定任务。
  • 广泛的应用范围:适用于从文本分类到语言生成等多种NLP应用,以及其他模态的扩展。

官网地址: https://huggingface.co/

Hugging Face Transformers核心功能模块

Hugging Face Transformers核心功能模块包括使用 Pipelines 快速实践大模型、使用 Tokenizer 编解码文本以及使用 Models 加载和保存模型。

Pipelines快速实践大模型

Pipelines(管道)是使用模型进行推理的一种简单易上手的方式。这些管道是抽象了Transformers库中大部分复杂代码的对象,提供了一个专门用于多种任务的简单API,包括命名实体识别、掩码语言建模、情感分析、特征提取和问答等。
目前Pipelines预定义支持的四种模态:Audio、Computer Vision、Natural language processing和Multimodal。这些预定义支持的不同模态对应支持不同的任务,而这些任务甚至不需要人工指定使用哪些模型。只要开发环境有GPU,甚至是CPU,就可以运行封装的服务。
pipelines
Pipeline API
Pipeline API是对所有其他可用管道的包装。它可以像任何其他管道一样实例化,并且降低AI推理的学习和使用成本。从Pipeline API内部结构来看,可以把Pipeline API的调度看成三个大的模块,即前处理、大模型以及后处理。首先需要在huggingface上拉取一个模型,然后与前处理、后处理进行对接。需要注意的是,对接的模块并非由Pipeline上的模块进行,而是由它调用底层的一些模块来实现的。整个Huggingface Transformers的核心就是以model为中心,根据model前后处理需求,再通过自己的函数库找到对应的tokenizer和model。整体抽象最终以流水线的形式展开,以下为Pipelines的结构:
Pipelines结构
使用Pipeline API实现Text Classification任务
Text classification(文本分类)与任何模态中的分类任务一样,文本分类将一个文本序列(可以是句子级别、段落或者整篇文章)标记为预定义的类别集合之一。文本分类有许多实际应用,其中包括:

  • 情感分析:根据某种极性(如积极或消极)对文本进行标记,以在政治、金融和市场等领域支持决策制定。
  • 内容分类:根据某个主题对文本进行标记,以帮助组织和过滤新闻和社交媒体信息流中的信息(天气、体育、金融等)。
from transformers import pipeline
# 仅指定任务时,使用默认模型(不推荐)
pipe = pipeline("sentiment-analysis")
pipe("今儿上海可真冷啊")

使用Pipelines实现智能问答

from transformers import pipeline
question_answer = pipeline(task = "question-answering")
preds = question_answerer(
    question="What is the name of reposition?",
    context = "The name of the reposition is huggingface/transformers",
)
print{
    f"score: {round(preds['score'], 4)}, start:{preds:['start']}, end:{preds:['end']},answer:{preds['answer']}"
}

在这里插入图片描述

Transformers Piplines 运行原理

将同样的语义变成空间向量后,则每一个词最终变成空间里面的一个向量。然而这种方式导致token是无限,因此更适合现将词映射到词表中。具体步骤大致为:分词——>相同向量对应词表,而每个词会有一个ID,ID也可以映射到自定义维度的向量,从而有效地实现了将原始文本转变成统一语义的向量空间。这部分的工作总结为Tokenizer,译为分词器。这些向量经过大模型的计算输出概率,再根据下有任务内容进行后处理,生成最终结果。
原理

使用AutoClass高效管理Tokenizer和Model

通常,模型(网络架构)可以从所提供给from_pretrained()方法的预训练模型的名称或路径中推测出来。AutoClasses就是为了帮助用户完成这个工作,以便根据预训练权重/配置文件/词汇表的名称/路径自动检索相关模型。比如手动加载 bert-base-chinese 模型以及对应的 tokenizer 方法如下:

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
model = AutoModel.from_pretrained("bert-base-chinese")

Transformers AutoClass统一接口设计

可以使用AutoClass的设计理念,保存Model和Tokenizer的方法非常高效便捷。如果对bert-base-chinese模型及其Tokenizer进行修改,并更名为new-bert-base-chinese,使用一下保存方法:

tokenizer.save_pretrained("./models/new-bert-base-chinese")
model.save_pretrained("./models/new-bert-base-chinese")

保存 Tokenizer 会在指定路径下创建以下文件:
tokenizer.json: Tokenizer 元数据文件;
special tokens_map.json:特殊字符映射关系配置文件;
tokenizer config.json: Tokenizer 基础配置文件,存储构建 Tokenizer 需要的参数;
vocab.txt: 词表文件;
added tokens.json: 单独存放新增 Tokens 的配置文件。

保存 Model会在指定路径下创建以下文件:
config.json:模型配置文件,存储模型结构参数,例如Transformer 层数、特征空间维度等;
pytorch_model.bin:又称为 state dictionary,存储模型的权重。
在这里插入图片描述

实战Hugging Face Transformers 工具库

huggingface帮助文档 :https://huggingface.co/docs/transformers/notebooks
在这里插入图片描述

模型主页:https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english/

开发环境的安装
工具
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitney_mao

您的认可和鼓励是持续分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值