- Published on
transformers v4.11.0のリリース
- Author
- Name
- Hideki Ono
- @yellowback
株式会社イエローバックの機械学習エンジニアです
はじめに
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 だと実行が難しそうです。