HuggingFace Transformers 4.17 : Get Started : 哲学 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/09/2022 (v4.17.0)
* 本ページは、HuggingFace Transformers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
クラスキャット 人工知能 研究開発支援サービス
◆ クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace Transformers : Gettiing Started : 哲学
Transformers は以下のために構築された自説を曲げない (= opnionated) ライブラリです :
- 大規模な transformer モデルを利用/研究/拡張することを追求する NLP 研究者と教育者
- それらのモデルを再調整して and/or それらをプロダクションでサービス提供することを望むハンズオン実践者
- 事前訓練モデルをダウンロードして与えられた NLP タスクを解くためにそれを使用することを単に望む技術者
ライブラリは 2 つの強力な目標を念頭において設計されました :
- できる限り容易に高速に利用できるものとして :
- 学習しなければならないユーザ向け抽象化の数を強く制限しました、実際に、殆ど抽象化はなく、各モデルを利用するために必要な単に 3 つの標準的なクラス : configuration, models と tokenizer があるだけです。
- これらのクラス総ては共通の from_pretrained() インスタンス化メソッドを使用することで単純で統一された方法で事前訓練済みインスタンスから初期化できます、これは Hugging Face ハブ や貴方自身のセーブされたチェックポイントで提供される事前訓練されたチェックポイントから、 (必要であれば) ダウンロードを処理し、関連するクラス・インスタンスと関連データ (configurations のハイパーパラメータ, tokenizers の語彙とモデルの重み) をキャッシュしてロードします。
- それら 3 つの基底クラスの上に、ライブラリは 2 つの API を提供します : 与えられたタスク上でモデル (加えて関連する tokenizer と configuration) を素早く使用するための pipeline() そして与えられたモデルを素早く訓練または再調整するための Trainer() / Keras.fit です。
- その結果、このライブラリはニューラルネットのためのビルディング・ブロックのモジュール・ツールボックスでは ありません。ライブラリを拡張 / (その上で) 構築することを望むのであれば、通常の Python/PyTorch/TensorFlow/Keras モジュールを単に使用してそしてモデルロード/セーブのような機能を再利用するためにはライブラリの基底クラスから継承してください。
- 学習しなければならないユーザ向け抽象化の数を強く制限しました、実際に、殆ど抽象化はなく、各モデルを利用するために必要な単に 3 つの標準的なクラス : configuration, models と tokenizer があるだけです。
- 元のモデルにできる限り近いパフォーマンスを持つ最先端技術のモデルを提供する :
- 各アーキテクチャに対して少なくとも一つのサンプルを提供します、これはそのアーキテクチャの公式著者により提供された結果を再現します。
- コードは通常は元のコードベースに出来る限り近いです、これはある 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() は、ライブラリ自身から提供される (サポートされるモデルは モデルハブ で見つけられます) かユーザによりローカルに (or サーバ上に) ストアされた事前訓練済みバージョンから model/configuration/tokenizer をインスタンス化させます。
- save_pretrained() は model/configuration/tokenizer をローカルにセーブさせます、その結果それは from_pretrained() を使用して再ロードできます。
以上