Transformers documentation
Criar uma arquitetura customizada
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.