专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
半导体行业联盟  ·  上海临港,2025重大签约:百亿项目1个,1 ... ·  2 天前  
Sir电影  ·  18岁以上谨慎观看! ·  2 天前  
桃桃淘电影  ·  刘亦菲,玫瑰盛放|赏色 ·  6 天前  
51好读  ›  专栏  ›  GitHubStore

为 Jax、PyTorch 和 TensorFlow 打造的先进的自然语言处理

GitHubStore  · 公众号  ·  · 2024-10-18 08:48

主要观点总结

文章介绍了🤗 Transformers项目,该项目提供了数以千计的预训练模型,支持多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。文章还描述了其便于快速下载和使用的API,以及支持三个深度学习库:Jax, PyTorch和TensorFlow的特性。此外,文章还介绍了快速上手使用流水线API进行情绪分析和问答的示例,以及为什么和什么时候应该使用transformers库。

关键观点总结

关键观点1: 🤗 Transformers项目提供了丰富的预训练模型。

该项目包含数以千计的预训练模型,支持多种语言的多种NLP任务,如文本分类、信息抽取、问答、摘要、翻译和文本生成。

关键观点2: 🤗 Transformers提供了易于使用的API。

该项目提供了方便的API,使得用户可以快速下载和使用预训练模型。同时,其API支持多种NLP任务,如情绪分析、问答等。

关键观点3: 🤗 Transformers支持三个主要的深度学习库。

该项目无缝整合了Jax, PyTorch和TensorFlow三个深度学习库,用户可以使用任一框架训练模型并在另一个框架中加载和推理。

关键观点4: 🤗 Transformers具有高级抽象性。

该项目通过高级抽象简化了模型的使用,用户只需了解三个类即可使用所有模型的统一API。此外,其流水线API为快速上手提供了便利。

关键观点5: 在某些情况下不应使用🤗 Transformers。

如果用户在寻找通用的模块化神经网络工具箱,或是需要通用机器学习训练循环实现,那么可能不适合使用🤗 Transformers。此外,对于特定问题,可能需要修改示例脚本以适应特定需求。


正文

项目简介


🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。

🤗 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块均完全独立,方便修改和快速研究实验。

🤗 Transformers 支持三个最热门的深度学习库:Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。


快速上手

我们为快速使用模型提供了 pipeline (流水线)API。流水线聚合了预训练模型和对应的文本预处理。下面是一个快速使用流水线去判断正负面情绪的例子:

>>> from transformers import pipeline
# 使用情绪分析流水线>>> classifier = pipeline('sentiment-analysis')>>> classifier('We are very happy to introduce pipeline to the transformers repository.')[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

第二行代码下载并缓存了流水线使用的预训练模型,而第三行代码则在给定的文本上进行了评估。这里的答案“正面” (positive) 具有 99 的置信度。

许多的 NLP 任务都有开箱即用的预训练流水线。比如说,我们可以轻松的从给定文本中抽取问题答案:

>>> from transformers import pipeline
# 使用问答流水线>>> question_answerer = pipeline('question-answering')>>> question_answerer({... 'question': 'What is the name of the repository ?',... 'context': 'Pipeline has been included in the huggingface/transformers repository'... }){'score': 0.30970096588134766, 'start': 34, 'end': 58, 'answer': 'huggingface/transformers'}

除了给出答案,预训练模型还给出了对应的置信度分数、答案在词符化 (tokenized) 后的文本中开始和结束的位置。你可以从这个教程了解更多流水线API支持的任务。

要在你的任务上下载和使用任意预训练模型也很简单,只需三行代码。这里是 PyTorch 版的示例:

>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")
>>> inputs = tokenizer("Hello world!", return_tensors="pt")>>> outputs = model(**inputs)

词符化器 (tokenizer) 为所有的预训练模型提供了预处理,并可以直接对单个字符串进行调用(比如上面的例子)或对列表 (list) 调用。它会输出一个你可以在下游代码里使用或直接通过 ** 解包表达式传给模型的词典 (dict)。

模型本身是一个常规的 Pytorch nn.Module 或 TensorFlow tf.keras.Model (取决于你的后端),可以常规方式使用。 这个教程解释了如何将这样的模型整合到经典的 PyTorch 或 TensorFlow 训练循环中,或是如何使用我们的 Trainer 训练器)API 来在一个新的数据集上快速微调。


为什么要用 transformers?

  1. 便于使用的先进模型:

  • NLU 和 NLG 上表现优越

  • 对教学和实践友好且低门槛

  • 高级抽象,只需了解三个类

  • 对所有模型统一的API

  • 更低计算开销,更少的碳排放:

    • 研究人员可以分享已训练的模型而非每次从头开始训练

    • 工程师可以减少计算用时和生产环境开销

    • 数十种模型架构、两千多个预训练模型、100多种语言支持

  • 对于模型生命周期的每一个部分都面面俱到:

    • 训练先进的模型,只需 3 行代码

    • 模型在不同深度学习框架间任意转移,随你心意

    • 为训练、评估和生产选择最适合的框架,衔接无缝

  • 为你的需求轻松定制专属模型和用例:

    • 我们为每种模型架构提供了多个用例来复现原论文结果

    • 模型内部结构保持透明一致

    • 模型文件可单独使用,方便魔改和快速实验


    什么情况下我不该用 transformers?

    • 本库并不是模块化的神经网络工具箱。模型文件中的代码特意呈若璞玉,未经额外抽象封装,以便研究人员快速迭代魔改而不致溺于抽象和文件跳转之中。

    • Trainer API 并非兼容任何模型,只为本库之模型优化。若是在寻找适用于通用机器学习的训练循环实现,请另觅他库。

    • 尽管我们已尽力而为,examples 目录中的脚本也仅为用例而已。对于你的特定问题,它们并不一定开箱即用,可能需要改几行代码以适之。







    请到「今天看啥」查看全文