# GPT-Sw3

## Visão geral

O modelo GPT-Sw3 foi proposto pela primeira vez em [Lessons Learned from GPT-SW3: Building the First Large-Scale Generative Language Model for Swedish](http://www.lrec-conf.org/proceedings/lrec2022/pdf/2022.lrec-1.376.pdf), por Ariel Ekgren, Amaru Cuba Gyllensten, Evangelia Gogoulou, Alice Heiman, Severine Verlinden, Joey Öhman, Fredrik Carlsson, Magnus Sahlgren.

Desde aquele primeiro artigo, os autores estenderam seu trabalho e treinaram novos modelos em seus novos corpora de 1,2 TB, denominados The Nordic Pile.

GPT-Sw3 é uma coleção de grandes modelos de linguagem transformer pré-treinados, somente decodificadores, desenvolvidos pela AI Sweden em colaboração com o RISE e o WASP WARA for Media and Language. O GPT-Sw3 foi treinado em um conjunto de dados contendo 320B tokens em sueco, norueguês, dinamarquês, islandês, inglês e código de programação. O modelo foi pré-treinado utilizando um objetivo de modelagem de linguagem causal (CLM) com a implementação NeMo Megatron GPT.

Este modelo foi contribuído por [AI Sweden Models](https://huggingface.co/AI-Sweden-Models).

## Exemplo de uso

```python
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("AI-Sweden-Models/gpt-sw3-356m")
model = AutoModelForCausalLM.from_pretrained("AI-Sweden-Models/gpt-sw3-356m", device_map="auto")

input_ids = tokenizer("Träd är fina för att", return_tensors="pt").to(model.device)["input_ids"]

generated_token_ids = model.generate(inputs=input_ids, max_new_tokens=10, do_sample=True)[0]

print(tokenizer.decode(generated_token_ids))
Träd är fina för att de är färgstarka. Men ibland är det fint
```

## Recursos

- [Guia da tarefa de classificação de texto](../tasks/sequence_classification)
- [Guia de tarefas de classificação de tokens](../tasks/token_classification)
- [Guia da tarefa de modelagem de linguagem causal](../tasks/language_modeling)

A implementação utiliza o `GPT2Model` acoplado ao nosso `GPTSw3Tokenizer`. Consulte a [documentação do GPT2Model](gpt2) para referência da API e exemplos.

Observe que o sentencepiece é necessário para usar nosso tokenizer e pode ser instalado com `pip install transformers[sentencepiece]` ou `pip install sentencepiece`

## GPTSw3Tokenizer[[transformers.GPTSw3Tokenizer]]

#### transformers.GPTSw3Tokenizer[[transformers.GPTSw3Tokenizer]]

```python
transformers.GPTSw3Tokenizer(vocab_file, do_lower_case = False, remove_space = False, keep_accents = False, pad_token = None, unk_token = None, eos_token = None, bos_token = None, sp_model_kwargs: dict[str, typing.Any] | None = None, **kwargs)
```

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gpt_sw3/tokenization_gpt_sw3.py#L21)

**Parâmetros:**

vocab_file (`str`) : arquivo [SentencePiece](https://github.com/google/sentencepiece) (geralmente com a extensão *.spm*) que contém o vocabulário necessário para instanciar um tokenizador.

do_lower_case (`bool`, *opcional*, padrão `False`) : Indica se o texto de entrada deve ser convertido para minúsculas durante a tokenização.

remove_space (`bool`, *opcional*, padrão `False`) : Indica se o texto deve ser removido de espaços em excesso ao fazer o tokenização (removendo espaços extras antes e depois da string).

keep_accents (`bool`, *opcional*, padrão `False`) : Indica se as acentuações devem ser mantidas durante a tokenização.

pad_token (`str`, *opcional*) : O token usado para preenchimento, por exemplo, ao agrupar sequências de comprimentos diferentes. Se não for fornecido, o padrão será '' ou '', dependendo do tamanho do modelo.

unk_token (`str`, *opcional*) : O token desconhecido. Um token que não está no vocabulário não pode ser convertido em um ID e é definido como este token em vez disso. Se não for fornecido, o valor padrão será ''.

eos_token (`str`, *opcional*) : O token de fim de sequência visto durante o pré-treinamento. Se não for fornecido, o padrão será '<|endoftext|>'

bos_token (`str`, *opcional*) : O token de início de sequência que pode ser usado para tarefas de pós-treinamento, não visto durante o pré-treinamento. Se não for fornecido, o valor padrão será '' ou '<|endoftext|>', dependendo do tamanho do modelo.

sp_model_kwargs (`dict`, *opcional*) : Será passado para o método `SentencePieceProcessor.__init__()`. O [Python wrapper for SentencePiece](https://github.com/google/sentencepiece/tree/master/python) pode ser usado, entre outras coisas, para definir:  - `enable_sampling`: Habilita a regularização de subpalavras. - `nbest_size`: Parâmetros de amostragem para unigramas. Inválido para BPE-Dropout.  - `nbest_size = {0,1}`: Nenhuma amostragem é realizada. - `nbest_size > 1`: amostra dos resultados de nbest_size. - `nbest_size < 0`: assume que nbest_size é infinito e amostra de todas as hipóteses (lattice) usando o algoritmo forward-filtering-and-backward-sampling.  - `alpha`: Parâmetro de suavização para amostragem de unigramas e probabilidade de dropout para operações de mesclagem no BPE-dropout.

sp_model (`SentencePieceProcessor`) : o processador *SentencePiece* utilizado em todas as conversões (string, tokens e IDs).

whitespaces (`set`) : Os espaços em branco que são substituídos na normalização de espaços em branco durante o pré-processamento.

non_printing_characters_re (`Pattern`) : A expressão regular compilada para remover caracteres não imprimíveis na pré-processamento.

Construa um tokenizador GPTSw3. Baseado no [SentencePiece](https://github.com/google/sentencepiece).

Este tokenizer herda de [PreTrainedTokenizer](/docs/transformers/main/pt/main_classes/tokenizer#transformers.PythonBackend), que contém a maioria dos métodos principais. Os usuários devem consultar essa superclasse para obter mais informações sobre esses métodos.

Exemplo de uso:
```python
>>> from transformers import GPTSw3Tokenizer

>>> tokenizer = GPTSw3Tokenizer.from_pretrained("AI-Sweden-Models/gpt-sw3-126m")
>>> tokenizer("Svenska är kul!")["input_ids"]
[1814, 377, 3617, 63504]
```

#### save_vocabulary[[transformers.GPTSw3Tokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L237)

**Parâmetros:**

save_directory (`str`) : O diretório em que salvar o vocabulário.

filename_prefix (`str`, *opcional*) : Um prefixo opcional para adicionar ao nome dos arquivos salvos.

**Retorna:** `tuple(str)`

Caminhos para os arquivos salvos.

Salve o vocabulário sentencepiece (copie o arquivo original) para um diretório.

