Skip to content

Latest commit

 

History

History
325 lines (233 loc) · 23.5 KB

README_pt-br.md

File metadata and controls

325 lines (233 loc) · 23.5 KB

Hugging Face Transformers Library

Build GitHub Documentation GitHub release Contributor Covenant DOI

Aprendizado de máquina de última geração para JAX, PyTorch e TensorFlow

A biblioteca 🤗 Transformers oferece milhares de modelos pré-treinados para executar tarefas em diferentes modalidades, como texto, visão e áudio.

Esses modelos podem ser aplicados a:

  • 📝 Texto, para tarefas como classificação de texto, extração de informações, resposta a perguntas, sumarização, tradução, geração de texto, em mais de 100 idiomas.
  • 🖼️ Imagens, para tarefas como classificação de imagens, detecção de objetos e segmentação.
  • 🗣️ Áudio, para tarefas como reconhecimento de fala e classificação de áudio.

Os modelos Transformer também podem executar tarefas em diversas modalidades combinadas, como responder a perguntas em tabelas, reconhecimento óptico de caracteres, extração de informações de documentos digitalizados, classificação de vídeo e resposta a perguntas visuais.

A biblioteca 🤗 Transformers oferece APIs para baixar e usar rapidamente esses modelos pré-treinados em um texto específico, ajustá-los em seus próprios conjuntos de dados e, em seguida, compartilhá-los com a comunidade em nosso model hub. Ao mesmo tempo, cada módulo Python que define uma arquitetura é totalmente independente e pode ser modificado para permitir experimentos de pesquisa rápidos.

A biblioteca 🤗 Transformers é respaldada pelas três bibliotecas de aprendizado profundo mais populares — Jax, PyTorch e TensorFlow — com uma integração perfeita entre elas. É simples treinar seus modelos com uma delas antes de carregá-los para inferência com a outra

Demonstração Online

Você pode testar a maioria de nossos modelos diretamente em suas páginas a partir do model hub. Também oferecemos hospedagem de modelos privados, versionamento e uma API de inferência para modelos públicos e privados.

Aqui estão alguns exemplos:

Em Processamento de Linguagem Natural:

Em Visão Computacional:

Em Áudio:

Em Tarefas Multimodais:

100 Projetos Usando Transformers

Transformers é mais do que um conjunto de ferramentas para usar modelos pré-treinados: é uma comunidade de projetos construídos ao seu redor e o Hugging Face Hub. Queremos que o Transformers permita que desenvolvedores, pesquisadores, estudantes, professores, engenheiros e qualquer outra pessoa construa seus projetos dos sonhos.

Para celebrar as 100.000 estrelas do Transformers, decidimos destacar a comunidade e criamos a página awesome-transformers, que lista 100 projetos incríveis construídos nas proximidades dos Transformers.

Se você possui ou utiliza um projeto que acredita que deveria fazer parte da lista, abra um PR para adicioná-lo!

Se você está procurando suporte personalizado da equipe Hugging Face

HuggingFace Expert Acceleration Program

Tour Rápido

Para usar imediatamente um modelo em uma entrada específica (texto, imagem, áudio, ...), oferecemos a API pipeline. Os pipelines agrupam um modelo pré-treinado com o pré-processamento que foi usado durante o treinamento desse modelo. Aqui está como usar rapidamente um pipeline para classificar textos como positivos ou negativos:

from transformers import pipeline

# Carregue o pipeline de classificação de texto
>>> classifier = pipeline("sentiment-analysis")

# Classifique o texto como positivo ou negativo
>>> classifier("Estamos muito felizes em apresentar o pipeline no repositório dos transformers.")
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

A segunda linha de código baixa e armazena em cache o modelo pré-treinado usado pelo pipeline, enquanto a terceira linha o avalia no texto fornecido. Neste exemplo, a resposta é "positiva" com uma confiança de 99,97%.

Muitas tarefas têm um pipeline pré-treinado pronto para uso, não apenas em PNL, mas também em visão computacional e processamento de áudio. Por exemplo, podemos facilmente extrair objetos detectados em uma imagem:

>>> import requests
>>> from PIL import Image
>>> from transformers import pipeline

# Download an image with cute cats
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
>>> image_data = requests.get(url, stream=True).raw
>>> image = Image.open(image_data)

# Allocate a pipeline for object detection
>>> object_detector = pipeline('object-detection')
>>> object_detector(image)
[{'score': 0.9982201457023621,
  'label': 'remote',
  'box': {'xmin': 40, 'ymin': 70, 'xmax': 175, 'ymax': 117}},
 {'score': 0.9960021376609802,
  'label': 'remote',
  'box': {'xmin': 333, 'ymin': 72, 'xmax': 368, 'ymax': 187}},
 {'score': 0.9954745173454285,
  'label': 'couch',
  'box': {'xmin': 0, 'ymin': 1, 'xmax': 639, 'ymax': 473}},
 {'score': 0.9988006353378296,
  'label': 'cat',
  'box': {'xmin': 13, 'ymin': 52, 'xmax': 314, 'ymax': 470}},
 {'score': 0.9986783862113953,
  'label': 'cat',
  'box': {'xmin': 345, 'ymin': 23, 'xmax': 640, 'ymax': 368}}]

Aqui obtemos uma lista de objetos detectados na imagem, com uma caixa envolvendo o objeto e uma pontuação de confiança. Aqui está a imagem original à esquerda, com as previsões exibidas à direita:

Você pode aprender mais sobre as tarefas suportadas pela API pipeline em este tutorial.

Além do pipeline, para baixar e usar qualquer um dos modelos pré-treinados em sua tarefa específica, tudo o que é necessário são três linhas de código. Aqui está a versão em 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)

E aqui está o código equivalente para TensorFlow:

>>> from transformers import AutoTokenizer, TFAutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Hello world!", return_tensors="tf")
>>> outputs = model(**inputs)

O tokenizador é responsável por todo o pré-processamento que o modelo pré-treinado espera, e pode ser chamado diretamente em uma única string (como nos exemplos acima) ou em uma lista. Ele produzirá um dicionário que você pode usar no código subsequente ou simplesmente passar diretamente para o seu modelo usando o operador de descompactação de argumentos **.

O modelo em si é um Pytorch nn.Module ou um TensorFlow tf.keras.Model(dependendo do seu back-end) que você pode usar como de costume. Este tutorial explica como integrar esse modelo em um ciclo de treinamento clássico do PyTorch ou TensorFlow, ou como usar nossa API Trainer para ajuste fino rápido em um novo conjunto de dados.

Por que devo usar transformers?

  1. Modelos state-of-the-art fáceis de usar:

    • Alto desempenho em compreensão e geração de linguagem natural, visão computacional e tarefas de áudio.
    • Barreira de entrada baixa para educadores e profissionais.
    • Poucas abstrações visíveis para o usuário, com apenas três classes para aprender.
    • Uma API unificada para usar todos os nossos modelos pré-treinados.
  2. Menores custos de computação, menor pegada de carbono:

    • Pesquisadores podem compartilhar modelos treinados em vez de treinar sempre do zero.
    • Profissionais podem reduzir o tempo de computação e os custos de produção.
    • Dezenas de arquiteturas com mais de 60.000 modelos pré-treinados em todas as modalidades.
  3. Escolha o framework certo para cada parte da vida de um modelo:

    • Treine modelos state-of-the-art em 3 linhas de código.
    • Mova um único modelo entre frameworks TF2.0/PyTorch/JAX à vontade.
    • Escolha o framework certo de forma contínua para treinamento, avaliação e produção.
  4. Personalize facilmente um modelo ou um exemplo para atender às suas necessidades:

    • Fornecemos exemplos para cada arquitetura para reproduzir os resultados publicados pelos autores originais.
    • Os detalhes internos do modelo são expostos de maneira consistente.
    • Os arquivos do modelo podem ser usados de forma independente da biblioteca para experimentos rápidos.

Por que não devo usar transformers?

  • Esta biblioteca não é uma caixa de ferramentas modular para construir redes neurais. O código nos arquivos do modelo não é refatorado com abstrações adicionais de propósito, para que os pesquisadores possam iterar rapidamente em cada um dos modelos sem se aprofundar em abstrações/arquivos adicionais.
  • A API de treinamento não é projetada para funcionar com qualquer modelo, mas é otimizada para funcionar com os modelos fornecidos pela biblioteca. Para loops de aprendizado de máquina genéricos, você deve usar outra biblioteca (possivelmente, Accelerate).
  • Embora nos esforcemos para apresentar o maior número possível de casos de uso, os scripts em nossa pasta de exemplos são apenas isso: exemplos. É esperado que eles não funcionem prontos para uso em seu problema específico e que seja necessário modificar algumas linhas de código para adaptá-los às suas necessidades.

Com pip

Este repositório é testado no Python 3.8+, Flax 0.4.1+, PyTorch 1.11+ e TensorFlow 2.6+.

Você deve instalar o 🤗 Transformers em um ambiente virtual. Se você não está familiarizado com ambientes virtuais em Python, confira o guia do usuário.

Primeiro, crie um ambiente virtual com a versão do Python que você vai usar e ative-o.

Em seguida, você precisará instalar pelo menos um dos back-ends Flax, PyTorch ou TensorFlow. Consulte a página de instalação do TensorFlow, a página de instalação do PyTorch e/ou Flax e Jax páginas de instalação para obter o comando de instalação específico para a sua plataforma.

Quando um desses back-ends estiver instalado, o 🤗 Transformers pode ser instalado usando pip da seguinte forma:

pip install transformers

Se você deseja experimentar com os exemplos ou precisa da versão mais recente do código e não pode esperar por um novo lançamento, você deve instalar a biblioteca a partir do código-fonte.

Com conda

O 🤗 Transformers pode ser instalado com conda da seguinte forma:

conda install conda-forge::transformers

NOTA: Instalar transformers pelo canal huggingface está obsoleto.

Siga as páginas de instalação do Flax, PyTorch ou TensorFlow para ver como instalá-los com conda.

Siga as páginas de instalação do Flax, PyTorch ou TensorFlow para ver como instalá-los com o conda.

NOTA: No Windows, você pode ser solicitado a ativar o Modo de Desenvolvedor para aproveitar o cache. Se isso não for uma opção para você, por favor nos avise neste problema.

Arquiteturas de Modelos

Todos os pontos de verificação de modelo fornecidos pelo 🤗 Transformers são integrados de forma transparente do model hub do huggingface.co, onde são carregados diretamente por usuários e organizações.

Número atual de pontos de verificação:

🤗 Transformers atualmente fornece as seguintes arquiteturas: veja aqui para um resumo de alto nível de cada uma delas.

Para verificar se cada modelo tem uma implementação em Flax, PyTorch ou TensorFlow, ou possui um tokenizador associado com a biblioteca 🤗 Tokenizers, consulte esta tabela.

Essas implementações foram testadas em vários conjuntos de dados (veja os scripts de exemplo) e devem corresponder ao desempenho das implementações originais. Você pode encontrar mais detalhes sobre o desempenho na seção de Exemplos da documentação.

Saiba mais

Seção Descrição
Documentação Documentação completa da API e tutoriais
Resumo de Tarefas Tarefas suportadas pelo 🤗 Transformers
Tutorial de Pré-processamento Usando a classe Tokenizer para preparar dados para os modelos
Treinamento e Ajuste Fino Usando os modelos fornecidos pelo 🤗 Transformers em um loop de treinamento PyTorch/TensorFlow e a API Trainer
Tour Rápido: Scripts de Ajuste Fino/Utilização Scripts de exemplo para ajuste fino de modelos em uma ampla gama de tarefas
Compartilhamento e Envio de Modelos Envie e compartilhe seus modelos ajustados com a comunidade

Citação

Agora temos um artigo que você pode citar para a biblioteca 🤗 Transformers:

@inproceedings{wolf-etal-2020-transformers,
    title = "Transformers: State-of-the-Art Natural Language Processing",
    author = "Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and Rémi Louf and Morgan Funtowicz and Joe Davison and Sam Shleifer and Patrick von Platen and Clara Ma and Yacine Jernite and Julien Plu and Canwen Xu and Teven Le Scao and Sylvain Gugger and Mariama Drame and Quentin Lhoest and Alexander M. Rush",
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
    month = out,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/2020.emnlp-demos.6",
    pages = "38--45"
}