HuggingFace Transformers 4.5 : Gettiing Started : 哲学

HuggingFace Transformers 4.5 : Gettiing Started : 哲学 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 05/05/2021 (4.5.1)

* 本ページは、HuggingFace Transformers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

無料 Web セミナー開催中 クラスキャット主催 人工知能 & ビジネス Web セミナー

人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。
スケジュールは弊社 公式 Web サイト でご確認頂けます。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
  • ウェビナー運用には弊社製品「ClassCat® Webinar」を利用しています。
クラスキャットは人工知能・テレワークに関する各種サービスを提供しております :

人工知能研究開発支援 人工知能研修サービス テレワーク & オンライン授業を支援
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。)

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
E-Mail:sales-info@classcat.com  ;  WebSite: https://www.classcat.com/  ;  Facebook

 

HuggingFace Transformers : Gettiing Started : 哲学

Transformers は以下のために構築された自説を曲げない (= opnionated) ライブラリです :

  • 大規模な transformer モデルを利用/研究/拡張することを追求する NLP 研究者と教育者
  • それらのモデルを再調整して and/or それらをプロダクションでサービス提供することを望むハンズオン実践者
  • 事前訓練モデルをダウンロードして与えられた NLP タスクを解くためにそれを利用することを単に望む技術者

ライブラリは 2 つの強力な目標を念頭において設計されました :

  • できる限り容易に高速に利用できるものとして :
    • 学習しなければならないユーザ向け抽象の数を強く制限しました、実際に、殆ど抽象はなく、各モデルを利用するために必要な単に 3 つの標準的なクラス : configuration, modelstokenizer があるだけです。

    • これらのクラス総ては共通の from_pretrained() インスタンス化メソッドを使用することで単純で統一された方法で事前訓練インスタンスから初期化できます、これは Hugging Face ハブ や貴方自身のセーブされたチェックポイント上で提供される事前訓練されたチェックポイントから、 (必要であれば) ダウンロードを処理し、関連するクラス・インスタンスと関連データ (configurations のハイパーパラメータ, tokenizers の語彙とモデルの重み) をキャッシュしてロードします。

    • それら 3 つの基底クラスの上に、ライブラリは 2 つの API を提供します : 与えられたタスク上でモデル (加えて関連する tokenizer と configuration) を素早く使用するための pipeline() そして与えられたモデルを素早く訓練または再調整するための Trainer() / TFTrainer() です。

    • 結果として、このライブラリはニューラルネットのためのビルディング・ブロックのモジュール・ツールボックスでは ありません。ライブラリを拡張 / (その上で) 構築することを望むのであれば、通常の Python/PyTorch/TensorFlow/Keras モジュールを単に利用してそしてモデルロード/セーブのような機能を再利用するためにはライブラリの基底クラスから継承してください。

  • 元のモデルにできる限り近いパフォーマンスを持つ最先端技術のモデルを提供する :
    • 各アーキテクチャ毎に少なくとも一つのサンプルを提供します、これはそのアーキテクチャの公式作者により提供された結果を再生成します。

    • コードは通常は元のコードベースに出来る限り近いです、これはある PyTorch コードは pytorchic ではないかもしれないことを意味します、何故ならばそれは変換された TensorFlow コードの結果そしてその逆である可能性があるからです。

幾つかの他のゴール :

  • モデルの内部をできる限り一貫性を持って公開する :
    • 単一の API を使用して、full 隠れ状態と attention 重みへのアクセスを与えます。
    • tokenizer と基底モデルの API はモデル間で容易に切り替えられるように標準化されています。

  • これらのモデルを再調整/調査するために見込みのあるツールの主観的な選択を組み入れます :
    • 再調整のため語彙と埋め込みに新しいトークンを追加するための単純で/一貫した方法。
    • transformer ヘッドをマスクして刈り取る (= prune) 単純な方法。

  • PyTorch と TensorFlow 2.0 間を容易に切り替え、一つのフレームワークを使用して訓練して他方を使用して推論することを可能にします。

 

主要コンセプト

ライブラリは各モデルに対して 3 つのタイプのクラスを中心に構築されます :

  • BertModel のような Model クラス、これは 30+ PyTorch モデル (torch.nn.Module) や Keras モデル (tf.keras.Model) で、ライブラリで提供される事前訓練重みで動作します。

  • BertConfig のような Configuration クラス、これはモデルを構築するために必要なパラメータ総てをストアします。これらを貴方自身でインスタンス化する必要は必ずしもありません。特に、どのような変更もなしに事前訓練モデルを使用している場合、モデルの作成は configuration のインスタンス化を自動的に処理します (これはモデルの一部です)。

  • BertTokenizer のような Tokenizer クラス、これは各モデルのための語彙をストアして、モデルに供給されるトークン埋め込みインデックスのリスト内のエンコード/デコード文字列のためのメソッドを提供します。

これらのクラス総ては 2 つのメソッドを使用して事前訓練インスタンスからインスタンス化してローカルにセーブできます :

  • from_pretrained() は、ライブラリ自身から提供される (サポートされるモデルは ここ のリストで提供されます) かユーザによりローカルにストアされた事前訓練バージョンから model/configuration/tokenizer をインスタンス化させます。

  • save_pretrained() は model/configuration/tokenizer をローカルにセーブさせます、その結果それは from_pretrained() を使用して再ロードできます。
 

以上