keep-loving-pythonのブログ

Pythonを愛し続けたいです(Pythonが流行っている限りですが。。。)

Transformers v4。Breaking changes since v3.x。(Transformersのバージョン差でエラーに出会うことが多いと思うので。。)

情報元 (Dec 1, 2020)

github.com

Breaking changes since v3.x

1. AutoTokenizers and pipelines now use fast (rust) tokenizers by default.

pythonとrustのトークナイザーはほぼ同じAPIを持っていますが、rustのトークナイザーはより完全な機能セットを持っています。主な変更点は、pythonとrustのトークナイザーの間でオーバーフローしたトークンの処理です。

2. SentencePiece is removed from the required dependencies

SentencePiece依存の要件はsetup.pyから解除されました。これは、conda-forgeに依存することなく、anaconda cloud上でチャネルを持つことができるようにするためです。これは、SentencePieceライブラリに依存するトークナイザーが、標準的なトランスフォーマーのインストールで利用できなくなることを意味します。

3. The architecture of the repo has been updated so that each model resides in its folder

過去にも、そしてこれからも新しいモデルが追加されることは、src/transformersディレクトリのファイル数が増え続け、ナビゲートや理解が難しくなることを意味します。そこで、各モデルとそれに付随するファイルをそれぞれのサブディレクトリに置くという選択をしました。

これは、モデルのモジュールを直接使って中間層をインポートする場合、別の経路で行う必要があるため、画期的な変更です。

4. Switching the return_dict argument to True by default

return_dict引数は、標準的なタプルの代わりに、モデル出力を含む名前付きタプルのようなpythonオブジェクトを返すことを可能にします。このオブジェクトは、キーが値を取得するために使用されるように自己文書化されており、また、ユーザがインデックスまたはスライスによってオブジェクトを取得できるようにタプルとして振る舞うことができます。

このタプルの限界は、value0, value1 = outputsのように解凍できないことなので、これは画期的な変更です。

5. Removed some deprecated attributes

非推奨だった属性は、少なくとも1ヶ月間非推奨だった場合、削除されました。非推奨属性の全リストは#8604で見ることができます。

ここでは、これらの属性/メソッド/引数のリストと、その代替となるべきものを示します:

いくつかのモデルで、ラベルが他のモデルと一致するようになりました: