# GPT-Sw3

## Resumen

El modelo GPT-Sw3 fue propuesto por primera vez en [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 ese primer artículo, los autores han ampliado su trabajo y han entrenado nuevos modelos en sus nuevos corpus de 1,2 TB denominados The Nordic Pile.

GPT-Sw3 es una colección de grandes modelos de lenguaje transformers preentrenados solo con decodificador, desarrollados por AI Sweden en colaboración con RISE y WASP WARA para Medios y Lenguaje. GPT-Sw3 se entrenó con un conjunto de datos que contiene 320B de tokens en sueco, noruego, danés, islandés, inglés y código de programación. El modelo se preentrenó utilizando un objetivo de modelado de lenguaje causal (CLM) con la implementación NeMo Megatron GPT.

Este modelo fue aportado por [AI Sweden Models](https://huggingface.co/AI-Sweden-Models).

## Ejemplo 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

- [Guía de la tarea de clasificación de texto](../tasks/sequence_classification)
- [Guía de la tarea de clasificación de tokens](../tasks/token_classification)
- [Guía de la tarea de modelado de lenguaje causal](../tasks/language_modeling)

La implementación utiliza el `GPT2Model` junto con nuestro `GPTSw3Tokenizer`. Consulte la [documentación de GPT2Model](gpt2) para obtener la referencia de la API y ejemplos.

Tenga en cuenta que sentencepiece es necesario para usar nuestro tokenizer y se puede instalar con `pip install transformers[sentencepiece]` o `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)
```

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

**Parámetros:**

vocab_file (`str`) : archivo [SentencePiece](https://github.com/google/sentencepiece) (generalmente con extensión *.spm*) que contiene el vocabulario necesario para instanciar un tokenizador.

do_lower_case (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe convertir la entrada en minúsculas al tokenizar.

remove_space (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe eliminar el texto al tokenizar (quitar espacios sobrantes antes y después de la cadena).

keep_accents (`bool`, *opcional*, valor predeterminado `False`) : Indica si se deben conservar los acentos al tokenizar.

pad_token (`str`, *opcional*) : El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes. Si no se proporciona, se utilizará '' o '' como valor predeterminado, según el tamaño del modelo.

unk_token (`str`, *opcional*) : El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar. Si no se proporciona, el valor predeterminado será ''.

eos_token (`str`, *opcional*) : El token de fin de secuencia visto durante el preentrenamiento. Si no se proporciona, el valor predeterminado será '<|endoftext|>'

bos_token (`str`, *opcional*) : El token de inicio de secuencia que se puede utilizar para tareas posteriores, que no se vio durante el preentrenamiento. Si no se proporciona, el valor predeterminado será '' o '<|endoftext|>', según el tamaño del modelo.

sp_model_kwargs (`dict`, *opcional*) : Se pasará al método `SentencePieceProcessor.__init__()`. El [envoltorio de Python para SentencePiece](https://github.com/google/sentencepiece/tree/master/python) se puede utilizar, entre otras cosas, para establecer:  - `enable_sampling`: Habilita la regularización de subpalabras. - `nbest_size`: Parámetros de muestreo para unigramas. No válido para BPE-Dropout.  - `nbest_size = {0,1}`: No se realiza muestreo. - `nbest_size > 1`: muestrea de los resultados de nbest_size. - `nbest_size < 0`: asume que nbest_size es infinito y muestrea de todas las hipótesis (lattice) utilizando el algoritmo de filtrado hacia adelante y muestreo hacia atrás.  - `alpha`: Parámetro de suavizado para el muestreo de unigramas y probabilidad de dropout de las operaciones de fusión para BPE-dropout.

sp_model (`SentencePieceProcessor`) : el procesador *SentencePiece* que se utiliza para cada conversión (cadenas, tokens e IDs).

whitespaces (`set`) : Los espacios en blanco que se reemplazan en la normalización de espacios en blanco durante el preprocesamiento.

non_printing_characters_re (`Pattern`) : La expresión regular compilada para eliminar caracteres no imprimibles en la preprocesamiento.

Construye un tokenizador GPTSw3. Basado en [SentencePiece](https://github.com/google/sentencepiece).

Este tokenizador hereda de [PreTrainedTokenizer](/docs/transformers/main/es/main_classes/tokenizer#transformers.PythonBackend), que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.

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

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

**Parámetros:**

save_directory (`str`) : El directorio en el que se guardará el vocabulario.

filename_prefix (`str`, *opcional*) : Un prefijo opcional para añadir al nombre de los archivos guardados.

**Devuelve:** `tuple(str)`

Rutas a los archivos guardados.

Guarde el vocabulario de sentencepiece (copie el archivo original) en un directorio.

