🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [官网](https://huggingface.co/models?pipeline_tag=question-answering&sort=trending) > [官方快速入门](https://huggingface.co/docs/transformers/main/en/index) > [教程](http://fancyerii.github.io/2021/05/11/huggingface-transformers-1/#%E4%BD%BF%E7%94%A8pipeline) ## 概述 "Transformers" 是一个自然语言处理(NLP)领域的开源库,用于处理和训练基于变换器(Transformer)架构的深度学习模型。这个库提供了一种简单而强大的方式来使用和训练各种NLP模型,包括BERT、GPT-2、RoBERTa、XLNet等等。"Transformers"库由Hugging Face公司开发,并在NLP社区中广受欢迎。 **这个库的主要功能包括:** 1. **预训练模型:** "Transformers"库提供了大量的预训练NLP模型,可以直接用于各种自然语言处理任务。这些模型在大型文本语料库上进行了预训练,具有出色的文本理解和生成能力。 2. **模型微调:** 你可以使用这些预训练模型,通过微调来适应特定任务,例如文本分类、情感分析、命名实体识别等。这使得创建自定义NLP应用程序变得相对容易。 3. **文本生成:** "Transformers"库允许你生成文本,如对话、摘要、翻译等。你可以使用GPT-2等模型生成文本,也可以对生成的文本进行定制。 4. **模型解释和可视化:** 该库还提供了用于解释和可视化NLP模型的工具,帮助你理解模型的决策过程。 5. **多语言支持:** "Transformers"库支持多种语言,包括英语、中文、法语、德语等等,使其适用于全球范围的NLP任务。 **特点** 它的设计原则包括: * 易用 * 只有[configuration](https://huggingface.co/transformers/main_classes/configuration.html),[models](https://huggingface.co/transformers/main_classes/model.html)和[tokenizer](https://huggingface.co/transformers/main_classes/tokenizer.html)三个主要类。 * 所有的模型都可以通过统一的from\_pretrained()函数来实现加载,transformers会处理下载、缓存和其它所有加载模型相关的细节。而所有这些模型都统一在[Hugging Face Models](https://huggingface.co/models)管理。 * 基于上面的三个类,提供更上层的pipeline和Trainer/TFTrainer,从而用更少的代码实现模型的预测和微调。 * 因此它不是一个基础的神经网络库来一步一步构造Transformer,而是把常见的Transformer模型封装成一个building block,我们可以方便的在PyTorch或者TensorFlow里使用它。 * 尽量和原论文作者的实现一致 * 每个模型至少有一个例子实现和原论文类似的效果 * 尽量参考原论文的实现,因此有些代码不会那么自然 ## 安装 ``` pip install transformers datasets evaluate accelerate ``` 仅需 CPU 支持,在 tensorflow 和 pytorch 二选一,推荐 pytorch ``` pip install tensorflow // or pip install torch ``` 测试是否安装成功 ``` python -c "from transformers import pipeline; print(pipeline('sentiment-analysis')('we love you'))" ``` ## 缓存设置 预训练模型会被下载并本地缓存到`~/.cache/huggingface/hub`。这是由环境变量`TRANSFORMERS_CACHE`指定的默认目录。在 Windows 上,默认目录为`C:\Users\username\.cache\huggingface\hub`。你可以按照不同优先级改变下述环境变量,以指定不同的缓存目录。 1. 环境变量(默认):`HUGGINGFACE_HUB_CACHE`或`TRANSFORMERS_CACHE`。 2. 环境变量`HF_HOME`。 3. 环境变量`XDG_CACHE_HOME`+`/huggingface`。 部分模型的 Hub 页面中会包含很多文件,我们通常只需要下载模型对应的*config.json*和*pytorch\_model.bin*,以及分词器对应的*tokenizer.json*、*tokenizer\_config.json*和*vocab.txt*。 ## 常用 pipeline | **任务** | **描述** | **模态** | **Pipeline** | | --- | --- | --- | --- | | 文本分类 | 为给定的文本序列分配一个标签 | NLP | pipeline(task=“sentiment-analysis”) | | 文本生成 | 根据给定的提示生成文本 | NLP | pipeline(task=“text-generation”) | | 命名实体识别 | 为序列里的每个 token 分配一个标签(人, 组织, 地址等等) | NLP | pipeline(task=“ner”) | | 问答系统 | 通过给定的上下文和问题, 在文本中提取答案 | NLP | pipeline(task=“question-answering”) | | 掩盖填充 | 预测出正确的在序列中被掩盖的token | NLP | pipeline(task=“fill-mask”) | | 文本摘要 | 为文本序列或文档生成总结 | NLP | pipeline(task=“summarization”) | | 文本翻译 | 将文本从一种语言翻译为另一种语言 | NLP | pipeline(task=“translation”) | | 图像分类 | 为图像分配一个标签 | Computer vision | pipeline(task=“image-classification”) | | 图像分割 | 为图像中每个独立的像素分配标签(支持语义、全景和实例分割) | Computer vision | pipeline(task=“image-segmentation”) | | 目标检测 | 预测图像中目标对象的边界框和类别 | Computer vision | pipeline(task=“object-detection”) | | 音频分类 | 给音频文件分配一个标签 | Audio | pipeline(task=“audio-classification”) | | 自动语音识别 | 将音频文件中的语音提取为文本 | Audio | pipeline(task=“automatic-speech-recognition”) | | 视觉问答 | 给定一个图像和一个问题,正确地回答有关图像的问题 | Multimodal | pipeline(task=“vqa”) | 更多 pipeline 查看 https://huggingface.co/docs/transformers/v4.36.1/zh/main_classes/pipelines#transformers.DepthEstimationPipeline