Transformers documentation

FLAN-UL2

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2023年6月20日にHugging Face Transformersに貢献されました。

FLAN-UL2

概要

Flan-UL2 は、T5 アーキテクチャをベースにしたエンコーダーデコーダーモデルです。昨年リリースされた UL2 モデルと同じ設定を使用しています。 「Flan」プロンプトチューニングとデータセットコレクションを用いてファインチューニングされています。Flan-T5 と同様に、モデルのファインチューニングを行わずに FLAN-UL2 の重みを直接使用できます。

元のブログによると、主な改善点は以下の通りです。

  • 元のUL2モデルは、受容野が512に制限されていたため、Nが大きいNショットプロンプティングには最適ではありませんでした。
  • Flan-UL2 チェックポイントは、受容野が 2048 であるため、フェューショットのインコンテキスト学習により利用しやすくなっています。
  • 元のUL2モデルには、良好なパフォーマンスを得るためにほぼ必須であったモード切り替えトークンがありました。ただし、推論やファインチューニング時にしばしば変更が必要になるため、やや煩雑でした。今回の更新/変更では、Flanの指示チューニングを適用する前に「モードトークン」を忘れるように、UL2 20Bを小規模なバッチサイズでさらに10万ステップ訓練を継続しました。このFlan-UL2チェックポイントは、もはやモードトークンを必要としません。 Googleは以下のバリアントをリリースしました:

元のチェックポイントはこちらで確認できます。

リソースが限られたデバイスでの実行

モデルは非常に重く(半精度で約40GB)なります。そのため、モデルを実行するだけの場合は、8bitでモデルを読み込み、device_map="auto" を使用して、OOM(メモリ不足)の問題が発生しないようにしてください。

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BitsAndBytesConfig


model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-ul2", quantization_config=BitsAndBytesConfig(load_in_8bit=True), device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("google/flan-ul2")

inputs = tokenizer("A step by step recipe to make bolognese pasta:", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
['In a large skillet, brown the ground beef and onion over medium heat. Add the garlic']

API リファレンス、ヒント、コード例、ノートブックについては、T5 のドキュメントページを参照してください。

Update on GitHub