# GPT-Sw3

## 概要

GPT-Sw3モデルは、Ariel Ekgren、Amaru Cuba Gyllensten、Evangelia Gogoulou、Alice Heiman、Severine Verlinden、Joey Öhman、Fredrik Carlsson、Magnus Sahlgrenによる[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)で初めて提案されました。

最初の論文以降、著者たちは研究を拡張し、新たに1.2TBのコーパスであるThe Nordic Pileを用いて新しいモデルを訓練しました。

GPT-Sw3 は、AI Sweden が RISE と WASP WARA for Media and Language との協力のもとで開発した、大規模なデコーダー専用の事前学習済み Transformer 言語モデルのコレクションです。GPT-Sw3 は、スウェーデン語、ノルウェー語、デンマーク語、アイスランド語、英語、およびプログラミングコードを含む 320B トークンのデータセットで学習されています。このモデルは、NeMo Megatron GPT 実装を用いた因果言語モデリング（CLM）目的で事前学習されています。

このモデルは、[AI Sweden Models](https://huggingface.co/AI-Sweden-Models)によって提供されました。

## 使用例

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

## リソース

- [テキスト分類タスクガイド](../tasks/sequence_classification)
- [トークン分類タスクガイド](../tasks/token_classification)
- [因果言語モデリングタスクのガイド](../tasks/language_modeling)

実装には、`GPT2Model`と当社の`GPTSw3Tokenizer`を組み合わせています。APIの参照や例については、[GPT2Modelのドキュメント](gpt2)を参照してください。

トークナイザーを使用するにはsentencepieceが必要です。`pip install transformers[sentencepiece]`または`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)
```

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

**パラメータ:**

vocab_file (`str`) : トークナイザーをインスタンス化するために必要な語彙を含む [SentencePiece](https://github.com/google/sentencepiece) ファイル（通常は *.spm* 拡張子を持っています）。

do_lower_case (`bool`、*任意*、デフォルトは`False`) : トークン化時に、入力を小文字にするかどうか。

remove_space (`bool`、*任意*、デフォルトは`False`) : トークン化時にテキストをトリムするかどうか（文字列の前後にある余分なスペースを削除する）。

keep_accents (`bool`、*任意*、デフォルトは`False`) : トークン化時にアクセントを保持するかどうか。

pad_token (`str`, *任意*) : パディングに使用するトークンです。例えば、長さが異なるシーケンスをバッチ処理する場合に使用します。指定しない場合、モデルサイズに応じて '' または '' がデフォルトとして使用されます。

unk_token (`str`, *任意*) : 不明トークン。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。指定しない場合、デフォルトで '' になります。

eos_token (`str`, *省略可*) : 事前学習中に使用されるシーケンス終了トークン。指定しない場合、デフォルトで '<|endoftext|>' が使用されます。

bos_token (`str`, *任意*) : 下流タスクで使用できるシーケンスの開始トークンです。事前学習中には出現しませんでした。指定しない場合、モデルサイズに応じて '' または '<|endoftext|>' がデフォルトとして使用されます。

sp_model_kwargs (`dict`、*任意*) : `SentencePieceProcessor.__init__()` メソッドに渡されます。[SentencePiece の Python ラッパー](https://github.com/google/sentencepiece/tree/master/python) は、次のような設定を行うために使用できます。 - `enable_sampling`: サブワード正規化を有効にします。 - `nbest_size`: ユニグラムのサンプリングパラメータ。BPE-Dropout では無効です。  - `nbest_size = {0,1}`: サンプリングは行われません。 - `nbest_size > 1`: nbest_size 個の結果からサンプリングします。 - `nbest_size < 0`: nbest_size が無限であると仮定し、forward-filtering-and-backward-sampling アルゴリズムを使用してすべての仮説（ラティス）からサンプリングします。  - `alpha`: ユニグラムサンプリングのスムーthingパラメータ、および BPE-dropout におけるマージ操作のドロップアウト確率。

sp_model (`SentencePieceProcessor`) : すべての変換（文字列、トークン、ID）に使用される*SentencePiece*プロセッサです。

whitespaces (`set`) : 前処理の空白正規化で置換される空白文字の集合。

non_printing_characters_re (`Pattern`) : 前処理で非表示文字を削除するために使用するコンパイル済み正規表現。

[SentencePiece](https://github.com/google/sentencepiece)をベースとしたGPTSw3トークナイザーを構築します。

このトークナイザーは、[PreTrainedTokenizer](/docs/transformers/main/ja/main_classes/tokenizer#transformers.PythonBackend) を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

使用例:
```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)
```

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

**パラメータ:**

save_directory (`str`) : 語彙を保存するディレクトリ。

filename_prefix (`str`, *任意*) : 保存されるファイルの名前に追加する任意のプレフィックス。

**戻り値:** `tuple(str)`

保存されたファイルへのパス。

sentencepieceの語彙（元のファイルのコピー）をディレクトリに保存します。

