Published on

transformers v4.13.0のリリース

Author
株式会社イエローバックの機械学習エンジニアです

はじめに

HuggingFace transformers が 12 月に入って v4.13, v4.14, v4.15 と立て続けにリリースされています。 今回は、 リリースノートをもとに v4.13 系の変更点を確認していきます。

新モデル

Perceiver

DeepMind(現在は Google 傘下)によって開発された汎用のモデルです。 画像、自然言語処理、マルチモーダルなどのチェックポイントがリリースされています。

mLUKE

Studio Ousia などの日本人を中心に開発されたモデル LUKE の他言語対応版です。 mLUKE では他言語対応のトークナイザが追加されました。ソースコードを確認したところ、sentencepiece ベースのようです。

LUKE は質問応答タスクの SQuAD 1.1 で発表当時トップ、2021 年 12 月 23 日でも 2 位とかなり良い成績をあげています。

チェックポイントは現状では以下のみのようです。

  • studio-ousia/mluke-base

このチェックポイントは XLM-RoBERTa のウェイトで初期化し、24 カ国語の Wikipedia で学習したもののようです。

ImageGPT

openai による画像用のモデルです。 言語処理用の GPT2 を画像に応用して、途中までの画像の続きを生成できるようです。

QDQBert

NVIDIA による言語処理用のモデルです。 量子化を用いて高速化を行うモデルのようです。

セマンティックセグメンテーションモデル

セマンティックセグメンテーションモデルが追加されました。 画像の各ピクセルに対してクラスラベルを予測することがゴールです。 追加されたモデルは、NVIDIA による SegFormer とマイクロソフトリサーチによる BEiT です。

画像-テキストのデュアルエンコーダ

CLIP のような画像-テキストのタスクに対して、任意の画像用事前学習モデル(ViT, DeiT, BeiT, CLIP)と任意のテキストモデル(BERT, ROBERTA)をロードできるような VisionTextDualEncoder モデルが追加されました。

CodeParrot

GPT2 ベースの python コードを生成するモデルが、examples/research_projects に追加されました。

LayoutLM 改善

LayoutLMv2 feature extractor が英語以外をサポートして、LayoutXLM が独自のプロセッサーをもつようになりました。

ASR(音声認識)への言語モデルサポート

CTC モデルに対して言語モデルのサポートが追加されました。

Flax 関連

Flax 関連で以下のモデルが追加されました。

  • FlaxVisionEncoderDecoderModel
  • FlaxGPTJ

TensorFlow 関連

tensorflow 向けに以下のモデルが追加されました。

  • TFViTModel
  • TAPAS (表形式データを用いて回答を抽出する言語モデル)

また、学習中の HuggingFace Hub へのチェックポイント保存ができるようになりました。

Auto-processors

AutoTokenizer のような形で、AutoProcessor で Processor の自動マッピングができるようになりました。

マッピングは以下のようになっています。

PROCESSOR_MAPPING_NAMES = OrderedDict(
    [
        ("clip", "CLIPProcessor"),
        ("layoutlmv2", "LayoutLMv2Processor"),
        ("layoutxlm", "LayoutXLMProcessor"),
        ("speech_to_text", "Speech2TextProcessor"),
        ("speech_to_text_2", "Speech2Text2Processor"),
        ("trocr", "TrOCRProcessor"),
        ("wav2vec2", "Wav2Vec2Processor"),
        ("wav2vec2_with_lm", "Wav2Vec2ProcessorWithLM"),
        ("vision-text-dual-encoder", "VisionTextDualEncoderProcessor"),
    ]
)

新しいドキュメントのフロントエンド

ドキュメントのフロントエンドがかわりました。RST にかわってマークダウンとなりました。

Trainer 改善

RTX30 シリーズや A100 などの Ampere 世代の GPU に対応した学習/評価時のオプションが追加されました。

  • --bf16 bfloat16 の混合制度での学習や評価
  • --bf16_full_eval フル bloat16 での評価
  • --tf32 TF32 モードを有効にする

bloat16 は FP16 にくらべ、指数部のビット数を増やし仮数部のビット数を減らしたフォーマットです。 TF32 は FP32 にくらべ、指数部はそのままで仮数部のビット数を大幅に減らしたフォーマットです。

その他

いろいろ改善や修正などがありました。

まとめ

v4.13 では 多くのモデルなどが追加されました。 個人的には、日本語の言語処理向けの mLUKE や Ampere 世代向けの bf16 オプションあたりが興味深いです。