Published on

transformers v4.11.0のリリース

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

はじめに

HuggingFace transformers v4.11.0 がリリースされました。 リリースノートをもとに v4.11 系の変更点を確認していきます。

GPT-J

PyTorch 版の GPT-J モデル GPTJModel, GPTJForCausalLM, GPTJForSequenceClassification が追加されました。 GPT-J は EleutherAI による GPT2/GPT3 ライクなモデルです。

Pile データセットで事前学習された以下の 6B パラメタのチェックポイントが利用可能です。

  • EleutherAI/gpt-j-6B

SpeechEncoderDecoder & Speech2Text2

Speech2Text2 のモデルとして Speech2Text2ForCausalLM が追加されました。 Speech2Text2 モデルは Wav2Vec2 と共に利用される音声翻訳モデルです。

Speech2Text2 はデコーダのみのモデルで、エンコーダ側は Wav2Vec2 や HuBERT などと組み合わせて音声翻訳をします。

FNet

FNet の実装として Pytorch 版の FNetModel, FNetForPreTraining, FNetForMaskedLM, FNetForNextSentencePrediction, FNetForSequenceClassification, FNetForMultipleChoice, FNetForTokenClassification, FNetForQuestionAnswering が公開されました。 FNet は google 製でトークンとフーリエ変換をミックスして BERT の高速化を図ったモデルです。

以下のチェックポイントが公開されています。

  • google/fnet-base
  • google/fnet-large

TensorFlow 改善

いくつかの tensorflow の修正や UX 改善が行われました。

Pipeline

Pipeline リファクタ

大幅なリファクタが行われました。datasets とともに使用して pytorch GPU 版で性能向上がみこまれます。

音声分類 pipeline

AudioClassificationPipeline が新たに追加されました。 以下のように使います。

pipeline('audio-classification', ...)

汎用的なプロパティーのセッター

汎用的なプロパティーのセッターが導入されました。 たとえば、BertConfig にはhidden_sizeが、GPT2Config にはn_embedがありこれらは同様のものです。 これが汎用的になり、GPT2Config でもhidden_sizeが利用可能となりました。

動的なモデルコードロード

ハブから動的にモデルのコードを取得してローカルで実行するという機能が追加されました。 セキュリティ上のリスクになる可能性があるためtrust_remote_codeパラメタが必要となります。

Trainer

いくつかの新機能が追加されました。

  • save 時の hub への push
  • SigOpt ハイパーパラメタ最適化サポート
  • 分散 CPU でのファインチューニング

モデルサイズ CPU メモリ使用量の削減

torch.load を使うと必要量の 2 倍のメモリを使用していたが、low_cpu_mem_usage=Trueオプションにより使用量を削減しました。

GPT-Neo

GPT-Neo モデルでローカルアテンションが簡略化されました。

非互換の変更点

オーバーフロートークンの順序

スロートークナイザでオーバーフロートークンの順序の間違いが修正されました。

encoding = tokenizer(seq[0],seq[1], padding=True, max_length=6, truncation=True, return_overflowing_tokens=True)

トークン分類 pipeline の修正

aggregation_strategy の動作を更新し、非推奨となった grouped_entities の動作に近づけました。

Wav2Vect2 の入力正規化の修正

v4.10 での Wav2Vec2 の入力正規化バグが修正されました。

その他

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

まとめ

v4.11 では 自然言語処理の関連では GPT-J の追加が興味深いです。ただ、モデルが大きすぎるためメモリ少なめな GPU だと実行が難しそうです。