Transformers documentation

Criar uma arquitetura customizada

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Criar uma arquitetura customizada

Uma AutoClass automaticamente infere a arquitetura do modelo e baixa configuraçÔes e pesos prĂ©-treinados. Geralmente, nĂłs recomendamos usar uma AutoClass para produzir um cĂłdigo independente de checkpoints. Mas usuĂĄrios que querem mais contole sobre parĂąmetros especĂ­ficos do modelo pode criar um modelo customizado đŸ€— Transformers a partir de algumas classes bases. Isso pode ser particulamente Ăștil para alguĂ©m que estĂĄ interessado em estudar, treinar ou fazer experimentos com um modelo đŸ€— Transformers. Nesse tutorial, serĂĄ explicado como criar um modelo customizado sem uma AutoClass. Aprenda como:

  • Carregar e customizar a configuração de um modelo.
  • Criar a arquitetura de um modelo.
  • Criar um tokenizer rĂĄpido e devagar para textos.
  • Criar extrator de features para tarefas envolvendo audio e imagem.
  • Criar um processador para tarefas multimodais.

configuration

A configuration refere-se a atributos específicos de um modelo. Cada configuração de modelo tem atributos diferentes; por exemplo, todos modelo de PLN possuem os atributos hidden_size, num_attention_heads, num_hidden_layers e vocab_size em comum. Esse atributos especificam o numero de ‘attention heads’ ou ‘hidden layers’ para construir um modelo.

DĂȘ uma olhada a mais em DistilBERT acessando DistilBertConfig para observar esses atributos:

>>> from transformers import DistilBertConfig

>>> config = DistilBertConfig()
>>> print(config)
DistilBertConfig {
  "activation": "gelu",
  "attention_dropout": 0.1,
  "dim": 768,
  "dropout": 0.1,
  "hidden_dim": 3072,
  "initializer_range": 0.02,
  "max_position_embeddings": 512,
  "model_type": "distilbert",
  "n_heads": 12,
  "n_layers": 6,
  "pad_token_id": 0,
  "qa_dropout": 0.1,
  "seq_classif_dropout": 0.2,
  "sinusoidal_pos_embds": false,
  "transformers_version": "4.16.2",
  "vocab_size": 30522
}

DistilBertConfig mostra todos os atributos padrĂ”es usados para construir um DistilBertModel base. Todos atributos sĂŁo customizĂĄveis, o que cria espaço para experimentos. Por exemplo, vocĂȘ pode customizar um modelo padrĂŁo para:

  • Tentar uma função de ativação diferente com o parĂąmetro activation.
  • Usar uma taxa de desistĂȘncia maior para as probabilidades de ‘attention’ com o parĂąmetro attention_dropout.
>>> my_config = DistilBertConfig(activation="relu", attention_dropout=0.4)
>>> print(my_config)
DistilBertConfig {
  "activation": "relu",
  "attention_dropout": 0.4,
  "dim": 768,
  "dropout": 0.1,
  "hidden_dim": 3072,
  "initializer_range": 0.02,
  "max_position_embeddings": 512,
  "model_type": "distilbert",
  "n_heads": 12,
  "n_layers": 6,
  "pad_token_id": 0,
  "qa_dropout": 0.1,
  "seq_classif_dropout": 0.2,
  "sinusoidal_pos_embds": false,
  "transformers_version": "4.16.2",
  "vocab_size": 30522
}

Atributos de um modelo pré-treinado podem ser modificados na função from_pretrained():

>>> my_config = DistilBertConfig.from_pretrained("distilbert/distilbert-base-uncased", activation="relu", attention_dropout=0.4)

Uma vez que vocĂȘ estĂĄ satisfeito com as configuraçÔes do seu modelo, vocĂȘ consegue salvar elas com save_pretrained(). Seu arquivo de configuraçÔes estĂĄ salvo como um arquivo JSON no diretĂłrio especificado:

>>> my_config.save_pretrained(save_directory="./your_model_save_path")

Para reusar o arquivo de configuraçÔes, carregue com from_pretrained():

>>> my_config = DistilBertConfig.from_pretrained("./your_model_save_path/my_config.json")

VocĂȘ pode tambĂ©m salvar seu arquivo de configuraçÔes como um dicionĂĄrio ou atĂ© mesmo com a diferença entre as seus atributos de configuração customizados e os atributos de configuração padrĂ”es! Olhe a documentação configuration para mais detalhes.