# GPT-Sw3

## Aperçu

Le modèle GPT-Sw3 a été initialement proposé dans [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) par Ariel Ekgren, Amaru Cuba Gyllensten, Evangelia Gogoulou, Alice Heiman, Severine Verlinden, Joey Öhman, Fredrik Carlsson, Magnus Sahlgren.

Depuis cet article initial, les auteurs ont étendu leur travail et ont entraîné de nouveaux modèles sur leurs nouveaux corpus de 1,2 To nommés The Nordic Pile.

GPT-Sw3 est une collection de grands modèles de langage transformers pré-entraînés, à décodeur uniquement, développés par AI Sweden en collaboration avec RISE et le WASP WARA for Media and Language. GPT-Sw3 a été entraîné sur un jeu de données contenant 320 milliards de jetons en suédois, norvégien, danois, islandais, anglais et en code de programmation. Le modèle a été pré-entraîné à l'aide d'un objectif de modélisation de langage causale (CLM) en utilisant l'implémentation NeMo Megatron GPT.

Ce modèle a été contribué par [AI Sweden Models](https://huggingface.co/AI-Sweden-Models).

## Exemple d'utilisation

```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
```

## Ressources

- [Guide de la tâche de classification de texte](../tasks/sequence_classification)
- [Guide de la tâche de classification de jetons](../tasks/token_classification)
- [Guide de la tâche de modélisation de langage causale](../tasks/language_modeling)

L’implémentation utilise le `GPT2Model` couplé à notre `GPTSw3Tokenizer`. Consultez la [documentation de GPT2Model](gpt2) pour la référence de l’API et des exemples.

Notez que sentencepiece est requis pour utiliser notre tokenizer et peut être installé avec `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)
```

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

**Paramètres :**

vocab_file (`str`) : fichier [SentencePiece](https://github.com/google/sentencepiece) (généralement avec l'extension *.spm*) contenant le vocabulaire nécessaire pour instancier un tokeniseur.

do_lower_case (`bool`, *facultatif*, valeur par défaut `False`) : Indique s'il faut mettre l'entrée en minuscules lors de la tokenisation.

remove_space (`bool`, *facultatif*, valeur par défaut `False`) : Indique s'il faut ou non retirer les espaces superflus lors de la tokenisation (suppression des espaces excédentaires avant et après la chaîne).

keep_accents (`bool`, *facultatif*, par défaut `False`) : Indique s'il faut conserver les accents lors de la tokenisation.

pad_token (`str`, *facultatif*) : Jeton utilisé pour le bourrage, par exemple lors du groupement de séquences de longueurs différentes. S'il n'est pas fourni, la valeur par défaut sera '' ou '' selon la taille du modèle.

unk_token (`str`, *facultatif*) : Le jeton inconnu. Un jeton qui ne figure pas dans le vocabulaire ne peut pas être converti en identifiant et est remplacé par ce jeton. S'il n'est pas fourni, la valeur par défaut est ''.

eos_token (`str`, *facultatif*) : Le jeton de fin de séquence observé lors de la préformation. S'il n'est pas fourni, la valeur par défaut est '<|endoftext|>'

bos_token (`str`, *facultatif*) : Jeton de début de séquence pouvant être utilisé pour les tâches en aval, non observé lors de la préformation. S'il n'est pas fourni, la valeur par défaut sera '' ou '<|endoftext|>', selon la taille du modèle.

sp_model_kwargs (`dict`, *facultatif*) : Sera transmis à la méthode `SentencePieceProcessor.__init__()`. Le [Python wrapper for SentencePiece](https://github.com/google/sentencepiece/tree/master/python) peut notamment être utilisé pour définir :  - `enable_sampling` : Active la régularisation des sous-mots. - `nbest_size` : Paramètres d'échantillonnage pour unigramme. Invalide pour BPE-Dropout.  - `nbest_size = {0,1}` : Aucun échantillonnage n'est effectué. - `nbest_size > 1` : échantillonne à partir des résultats nbest_size. - `nbest_size < 0` : suppose que nbest_size est infini et échantillonne à partir de toutes les hypothèses (lattice) en utilisant l'algorithme forward-filtering-and-backward-sampling.  - `alpha` : Paramètre de lissage pour l'échantillonnage unigramme, et probabilité de dropout des opérations de fusion pour BPE-dropout.

sp_model (`SentencePieceProcessor`) : le processeur *SentencePiece* utilisé pour chaque conversion (chaîne, jetons et identifiants).

whitespaces (`set`) : les espaces blancs qui sont remplacés lors de la normalisation des espaces blancs dans le prétraitement.

non_printing_characters_re (`Pattern`) : L'expression régulière compilée destinée à supprimer les caractères non imprimables lors de la prétraitement.

Construit un tokenizer GPTSw3. Basé sur [SentencePiece](https://github.com/google/sentencepiece).

Ce tokenizer hérite de [PreTrainedTokenizer](/docs/transformers/main/fr/main_classes/tokenizer#transformers.PythonBackend), qui contient la plupart des méthodes principales. Les utilisateurs doivent se reporter à cette superclasse pour plus d’informations sur ces méthodes.

Exemple d'utilisation :
```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)
```

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

**Paramètres :**

save_directory (`str`) : Le répertoire dans lequel enregistrer le vocabulaire.

filename_prefix (`str`, *facultatif*) : Préfixe facultatif à ajouter au nom des fichiers enregistrés.

**Retourne :** `tuple(str)`

Chemin des fichiers enregistrés.

Enregistrez le vocabulaire sentencepiece (copie du fichier d'origine) dans un répertoire.

