File size: 4,387 Bytes
e8d1a30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Model Card para PamelaBorelli/flan-t5-base-summarization-pt-br

## Dados Gerais

- **Nome:** [PamelaBorelli/flan-t5-base-summarization-pt-br](PamelaBorelli/flan-t5-base-summarization-pt-br)
- **Tipo:** Languege Model, Transformer Encoder-Decoder
- **Licença:**  Language model
- **Modelo base:** [google/flan-t5-base](https://huggingface.co/google/flan-t5-base#model-details)
- **Modelo Relacionado:** Checkpoints do FLAN-T5 
- **Checkpoints Originais:** Checkpoints do FLAN-T5

## Resumo

O modelo original que serviu de base para o modelo final é o [flan-t5-base](https://huggingface.co/google/flan-t5-base#model-details). Um modelo multilinguagem com tamanho de 248M e que possui uma arquitetura baseada no T5 (Text-to-Text Transfer Transformer) com codificador-decodificador. O Flan-T5 original foi ajustado em uma mistura de tarefas com objetivo de melhorar sua capacidade de generalização. 

O modelo final [PamelaBorelli/flan-t5-base-summarization-pt-br](PamelaBorelli/flan-t5-base-summarization-pt-br) foi treinado no processo de **instrução e ajuste fino** (*finetune*). Foi realizado dois *finetunes*, primeiro para tradução de textos usando o dataset e posteriormente para tarefa de sumarização com datasets ambos em Português-BR. 

## Utilização Pretendida

O modelo foi trabalhado para tarefa final de sumarização de textos em Português-BR. Não foi testado para outros idiomas.

### Uso

```
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("PamelaBorelli/flan-t5-base-summarization-pt-br")
model = T5ForConditionalGeneration.from_pretrained("PamelaBorelli/flan-t5-base-summarization-pt-br")

input_text = "O corpo está mais propenso a sentir dores com exercícios de alta intensidade | Foto: Getty Images O problema está em saber identificar qual é qual. "Em algumas situações, é difícil diferenciar uma da outra", reconhece Juan Francisco Marco, professor do Centro de Ciência do Esporte, Treinamento e Fitness Alto Rendimento, na Espanha. "A dor boa é aquela que associamos ao exercício físico, que não limita (o movimento) e permite continuar (a se exercitar) até o momento em que o músculo fica realmente esgotado e não trabalha mais", explica. É importante detectar qual é o tipo de dor que você está sentindo, para evitar ter problemas mais sérios | Foto: Getty Images Para Francisco Sánchez Diego, diretor do centro de treinamento Corpore 10, "a dor boa se sente no grupo muscular que você trabalhou, tanto durante o treinamento como nos dias seguintes"."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
```


## Idiomas

Português-BR

## Dados de Treinamento

O modelo foi treinado para tarefa de sumarização usando os parâmetros: 

```
evaluation_strategy="steps"         #forma para avaliar o output
eval_steps=                         #quantidade de steps para avaliar o output
learning_rate=                      #taxa de aprendizado
per_device_train_batch_size=        #tamanho do batch para o treinamento
per_device_eval_batch_size=         #tamanho do batch para a validação
gradient_accumulation_steps=        #até quanto deve acumular os batchs
weight_decay=                       #regularização L2
num_train_epochs=                   #quantidade de épocas para treinamento
save_strategy="steps"               #forma para salvar o output
save_steps =                        #quantidade de steps para salvar o output
push_to_hub=False                   #salvar o modelo no hub do Hugging Face
load_best_model_at_end=True         #carregar o melhor modelo no final do treinamento (necessário para o callback)
```

Para tokenização foi usado os parâmetros:

```
start_prompt= "Sumarize: \n"                 #início instrução para sumarização
end_prompt= "\n\nTradução: "    			 #fim da instrução para sumarização
input_name="coluna_imput"           		 #nome da coluna no dataset com os textos de origem
target_name="coluna_target"          		 #nome da coluna no dataset com os textos de destino
max_input_length = 256         				 #tamanho máximo de input para tokenizar
max_target_length = 256        				 #tamanho máximo de target para tokenizar
columns_to_remove= ['coluna_to_remove'] 	 #colunas que serão removidas do dataset original
```