【無料】GPT-3レベルのGoogle製Flan-T5を利用する方法

【無料】GPT-3レベルのGoogle製Flan-T5を利用する方法 機械学習

「無料でGPT-3に匹敵する自然言語処理モデルを利用したい」
「Googleが公開している自然言語処理モデルを試したい」

このような場合には、Flan-T5がオススメです。
この記事では、Flan-T5について解説しています。

本記事の内容

  • Flan-T5とは?
  • Flan-T5のシステム要件
  • Flan-T5の動作確認

それでは、上記に沿って解説していきます。

Flan-T5とは?

Flan-T5を知るには、FLANとT5について知っておく必要があります。

FLANとは、FinetunedLAnguage Netの略称です。
FLANを取り入れることで、ゼロショット学習の効果が向上します。

ゼロショット学習により、未知のことに対応できやすくなります。
つまり、FLANによってモデルの精度が上がるということです。

T5とは、Googleが発表した自然言語処理モデルになります。
Googleは、T5以外にも以下の自然言語処理モデルを発表しています。

  • BERT
  • PaLM

ここまで来れば、Flan-T5のことがわかってきたと思います。
Flan-T5は、T5を改良した自然言語処理モデルということです。

そして、このFlan-T5が一部の処理ではGPT-3よりも優れていると言われています。
本当にAIの世界は進化が速くて、追いかけるのが大変です。

Flan-T5には、以下のモデルが存在しています。

  • Flan-T5 small
  • Flan-T5 base
  • Flan-T5 large
  • Flan-T5 XL
  • Flan-T5 XXL

これらを含めたFlan系モデルの評価値は、以下となります。

評価項目が複数ありますが、それらはすべて数値が高ければ精度は良いと言えます。
残念ながら、精度の高いPaLMは一つも公開してくれないようです。

以上、Flan-T5について説明しました。
次は、Flan-T5のシステム要件を説明します。

Flan-T5のシステム要件

Flan-T5は、PyTorchで動く言語モデルです。
そのため、PyTorchが必須となります。

そのPyTorchを中心にして、インストールすべきモノが以下。

  • PyTorch
  • Transformers
  • SentencePiece
  • Accelerate

これらを以下で説明します。

PyTorch

PyTorchは、CPU・GPUの両方で動きます。
しかし、Flan-T5を利用する処理はかなりの計算量が必要になります。

試していませんが、CPUではまともには動かないでしょう。
よって、基本的にはGPU版のPyTorchを利用しましょう。

Transformers

自然言語処理を行うなら、Transformersは必須です。
Transformersについては、次の記事で解説しています。

SentencePiece

LSTM (RNN)による文章生成において、SentencePieceが利用されています。
SentencePieceについては、次の記事で説明しています。

Accelerate

GPU版PyTorchでFlan-T5を利用する際に、必要となっています。
ここでは、高速に処理を実行するために必要なライブラリだという程度の認識でOKです。
詳細は、次の記事で解説しています。

インストールは、pipコマンドで簡単に行えます。

pip install accelerate

まとめ

システム要件を満たすために利用したコマンドは、以下。

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
pip install transformers
pip install sentencepiece
pip install accelerate

PyTorchに関しては、利用しているCUDAやOSによってインストールコマンドは異なります。
各自の環境に合わせたコマンドを利用してください。

以上、Flan-T5のシステム要件を説明しました。
次は、Flan-T5の動作確認を説明します。

Flan-T5の動作確認

今回は、利用できる上位2つのモデルを利用してみましょう。

  • Flan-T5 XL
  • Flan-T5 XXL

動作確認は、次のコードを用います。

from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("指定モデル")
model = T5ForConditionalGeneration.from_pretrained("指定モデル", device_map="auto")

input_text = "What is the highest mountain in Japan?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")
outputs = model.generate(input_ids, max_length=200, bos_token_id=0)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)

「指定モデル」には、次の値を設定します。

モデル指定モデルサイズ
Flan-T5 XLgoogle/flan-t5-xl10.6GB
Flan-T5 XXLgoogle/flan-t5-xxl41.9GB

初めてモデルを利用する場合は、モデルのダウンロードが実施されます。
そのときにダウンロードされるモデルのサイズには、十分注意しましょう。

Flan-T5 XXLは、41.9GBもディスクを消費します。
もちろん、そのサイズをダウンロードするのにも時間はかかります。

また、GPUのメモリサイズで実行できないこともありえます。
検証に用いたマシンで「nvidia-smi」を実行した結果は、以下。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 512.77       Driver Version: 512.77       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0  On |                  N/A |
|  0%   40C    P8    25W / 350W |    599MiB / 24576MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

GPUのメモリサイズが不安な場合は、モデルの変更を試してください。
動作確認に話を戻しましょう。

それぞれのモデルを指定してコードを実行した結果は、次のようになりました。
なお、質問には「What is the highest mountain in Japan?」を設定しています。

Flan-T5 XL(12.76833462715149秒)

mount fuji

Flan-T5 XXL(49.02419376373291秒)

mount fuji

質問がシンプルであるために、回答は一致しましたね。
そもそも、Flan-T5 XLとFlan-T5 XXLではそんなに大きな差がありません。

しかし、処理時間は37秒の差があります。
それであれば、Flan-T5 XLを利用した方が良いかもしれません。
モデルのサイズも4分の1で済みます。

ただ、Flan-T5 XLでも12秒かかっています。
もう少し速ければ嬉しいのですけどもね・・・

以上、Flan-T5の動作確認を説明しました。

タイトルとURLをコピーしました