ホーム » 「HuggingFace Transformers 4.17」タグがついた投稿 (ページ 3)

タグアーカイブ: HuggingFace Transformers 4.17

HuggingFace Transformers 4.17 : Get Started : 用語集

HuggingFace Transformers 4.17 : Get Started : 用語集 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/10/2022 (v4.17.0)

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

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

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

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

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

 

HuggingFace Transformers : Get Started : 用語集

一般用語

  • autoencoding モデル : MLM 参照

  • autoregressive モデル : CLM 参照

  • CLM : 因果 (= causal) 言語モデリング、モデルがテキストを順番に読みそして次の単語を予測しなければならない、事前訓練済みタスクです。それは通常はセンテンス全体を読むことにより成されますが、特定の時間ステップで未来のトークンを隠すためにモデル内のマスクを使用します。

  • 深層学習 : 幾つかの層を持つニューラルネットワークを使用する機械学習アルゴリズム

  • MLM : masked 言語モデリング、モデルは (通常は幾つかのトークンをランダムにマスクすることにより成される) テキストの破損した (= corrupted) バージョンを見て、元のテキストを予測しなければならない事前訓練済みタスクです。

  • multimodal (多様性) : テキストと別の種類の入力 (例えば画像) を結合するタスク。

  • NLG: 自然言語生成 (= generation)、テキスト生成に関連する総てのタスク (例えば transformer と話す、翻訳)。

  • NLP : 自然言語処理、「テキストを処理する」と言うための一般的な方法です。

  • NLU : 自然言語理解 (= understanding)、テキスト内にあるものの理解に関連する総てのタスク (例えばテキスト全体、個々の単語の分類)。

  • 事前訓練済みモデル : あるデータ (例えば総ての Wikipedia) 上で事前訓練されたモデル。事前訓練方法は自己教師あり目的を含みます、これはテキストを読んで次の単語を予測しようとする (CLM 参照) か、幾つかの単語をマスクしてそれらを予測しようとすることであり得ます (MLM 参照)。

  • RNN : リカレント・ニューラルネットワーク、テキストを処理するために層に渡るループを使用するタイプのモデル。

  • self-attention : 入力の各要素は入力のどの別の要素に注意を払うべきか を明らかにします。

  • seq2seq or sequence-to-sequence : (BartT5 のような) 翻訳モデルや要約モデルのような、入力から新しいシークエンスを生成するモデル。

  • トークン : センテンスの一部、通常は単語ですが、部分単語 (非一般的単語はしばしば部分単語に分割されます) や句読点シンボルでもあり得ます。

  • transformer : self-attention ベースの深層学習モデル・アーキテクチャ。

 

モデル入力

総てのモデルは異なりますが他のものとの類似性を有します。従って殆どのモデルは同じ入力を用います、それはここで使用サンプルとともに詳述されます。

 

入力 ID

入力 id はしばしば入力としてモデルに渡される唯一の必須パラメータです。それらはトークン・インデックスで、モデルにより入力として使用されるシークエンスを構築するトークンの数値表現です。

各 tokenizer は異なって動作しますが基礎的なメカニズムは同じままです。ここに BERT tokenzier を使用するサンプルがあります、これは WordPiece tokenizer です :

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("bert-base-cased")

sequence = "A Titan RTX has 24GB of VRAM"

tokenizer はシークエンスを tokenzier 語彙で利用可能なトークンに分割する処理をします。

tokenized_sequence = tokenizer.tokenize(sequence)

トークンは単語か部分単語のいずれかです。ここでは例えば、”VRAM” はモデル語彙にないので、それは “V”, “RA” と “M” に分割されます。それらのトークンが別々の単語ではなく同じ単語の一部であることを示すために、“RA” と “M” のために double-hash プレフィックスが追加されます。

print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

そしてこれらのトークンはモデルにより理解可能な ID に変換できます。これはセンテンスを直接 tokenizer に供給することにより成されます、これは最高のパフォーマンスのために Tokenizers の Rust 実装を活用しています。

inputs = tokenizer(sequence)

tokenizer は対応するモデルが正しく動作するために必要な総ての引数を持つ辞書を返します。トークンインデックスはキー “inputs_ids” のもとにあります :

encoded_sequence = inputs["input_ids"]
print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]

tokenizer は (関連モデルがそれらに依存する場合)「特殊トークン」を自動的に追加することに注意してください、これはモデルが時に使用する特殊な ID です。

前の id のシークエンスをデコードする場合、

decoded_sequence = tokenizer.decode(encoded_sequence)

次を見ます :

print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]

これは BertModel がその入力に想定する方法であるからです。

 

Attention マスク

attention マスクはシークエンスをまとめてバッチ処理するときに使用されるオプションの引数です。

この引数はどのトークンが注意を払われるべきか、そしてどれがそうでないかをモデルに示します。

例えば、これらの 2 つのセンテンスを考えます :

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("bert-base-cased")

sequence_a = "This is a short sequence."
sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."

encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
encoded_sequence_b = tokenizer(sequence_b)["input_ids"]

エンコードされたバージョンは異なる長さを持ちます :

len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)

従って、それらをそのままで同じテンソル内に一緒に配置することはできません。最初のシークエンスは 2 番目のものの長さにまでパディングされる必要があるか、あるいは 2 番目のものが最初のものの長さにまで切り詰められる必要があります。

最初のケースでは、ID のリストは padding インデックスにより拡張されます。リストを tokenizer に渡してこのようにパディングすることを要求することができます :

padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)

最初のセンテンスの右側にそれを 2 番目のものと同じ長さにするために 0 が追加されたことが分かります。

padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]

そしてこれは PyTorch や TensorFlow のテンソルに変換できます。attention マスクはパディングされたインデックスの位置を示す二値テンソルで、その結果モデルはそれらに注意を払いません。BertTokenizer については、1 は注意されるべき値を示し、その一方で 0 はパディングされた値を示します。この attention マスクはキー “attention_mask” のもとで tokenizer により返される辞書内にあります。

padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

 

トークン型 ID

幾つかのモデルの目的はセンテンスのペアの分類や質問応答を行なうことです。

これらは 2 つの異なるシークエンスが単一の “input_ids” エントリ内に結合されることを必要とします、これは通常は classifier ([CLS]) と separator ([SEP]) トークンのような特殊トークンの助けにより遂行されます。例えば、BERT モデルはその 2 つのシークエンス入力を次のように構築します :

# [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]

そのようなセンテンスを自動的に生成するために、このように 2 つのセンテンスを tokenizer に (前のように、リストではなく、) 2 つの引数として渡すことにより、tokenizer を利用できます :

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("bert-base-cased")
sequence_a = "HuggingFace is based in NYC"
sequence_b = "Where is HuggingFace based?"

encoded_dict = tokenizer(sequence_a, sequence_b)
decoded = tokenizer.decode(encoded_dict["input_ids"])

これは次を返します :

print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]

幾つかのモデルについては、1 つのシークエンスがどこで終わりそしてもう 1 つがどこから始まるかを理解するためにこれで十分です。けれども、BERT のような他のモデルはまたトークン型 ID も配備します (セグメント ID とも呼ばれます)。それらはモデルの 2 つのタイプのシークエンスを識別する二値マスクとして表されます。

tokenizer はこのマスクを “token_type_ids” エントリとして返します :

encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]

最初のシークエンス、質問のために使用される「コンテキスト」は 0 で表される総てのトークンを持ち、その一方で「質問」に相当する 2 番目のシークエンスは 1 で表される総てのトークンを持ちます。

XLNetModel のような幾つかのモデルは 2 で表される追加のトークンを使用します。

 

位置 ID

(RNN に) 埋め込まれた各トークンの位置を持つ RNN とは違い、transformer は各トークンの位置を知りません。そのため、トークンのリスト内の各トークンの位置を識別するために位置 ID (position_ids) がモデルにより使用されます。

これらはオプションのパラメータです。position_ids がモデルに渡されない場合、ID は絶対的位置の埋め込みとして自動的に作成されます。

絶対的な位置埋め込みは範囲 [0, config.max_position_embeddings – 1] 内で選択されます。幾つかのモデルは sinusoidal (正弦波) 位置埋め込み or 相対的位置埋め込みのような他のタイプの位置埋め込みを利用します。

 

ラベル

ラベルはオプション引数で、モデルが損失自体を計算するために渡すことができます。これらのラベルはモデルの期待される予測であるべきです : それは予測と期待値 (ラベル) の間の損失を計算するために標準的な損失を利用します。

これらのラベルはモデルヘッドに従って異なります、例えば :

  • シークエンス分類モデル (e.g., BertForSequenceClassification) については、モデルはシークエンス全体の期待されるラベルに対応するバッチの各値を持つ次元 (batch_size) のテンソルを想定します。

  • トークン分類モデル (e.g., BertForTokenClassification) については、モデルは各個々のトークンの期待されるラベルに対応する各値を持つ次元 (batch_size, seq_length) のテンソルを想定します。

  • masked 言語モデリング (e.g., BertForMaskedLM) については、モデルは各個々のトークンの期待されるラベルに対応する各値を持つ次元 (batch_size, seq_length) のテンソルを想定します : masked トークンのためのトークン ID であるラベルの場合、値は残りのためには無視されます (通常は -100)。

  • sequence to sequence タスク (e.g., BartForConditionalGeneration, MBartForConditionalGeneration) については、モデルは各入力シークエンスに関連するターゲット・シークエンスに対応する各値を持つ次元 (batch_size, tgt_seq_length) のテンソルを想定します。訓練の間、BART と T5 の両者は適切な decoder_input_ids と decoder attention マスクを内部的に作成します。それらは通常は供給される必要はありません。これは Encoder-Decoder フレームワークを利用するモデルには当てはまりません。各特定のモデルのラベル上の詳細については各モデルのドキュメントを見てください。

ベースモデル (e.g. BertModel) はラベルを受け取りません、何故ならばこれらはベース transformer モデルで、単純に特徴を出力するだけだからです

 

Decoder 入力 ID

この入力はエンコーダ・デコーダモデル特有で、デコーダに供給される入力 ID を含みます。これらの入力は翻訳や要約のような、sequence to sequence タスクのために使用されるべきで、通常は各モデルに固有の方法で構築されます。

殆どのエンコーダ・デコーダモデル (BART, T5) はラベルから独自に decoder_input_ids を作成します。そのようなモデルでは、ラベルを渡すことは訓練を扱うために好まれる方法です。

sequence to sequence 訓練のためにそれらがこれらの入力 ID をどのように処理するかを見るには各モデルの docs を確認してください。

 

順伝播 Chunking

transformer の各残差 attention ブロックでは self-attention 層には通常は 2 つの順伝播層が続きます。順伝播層の中間の埋め込みサイズはしばしばモデルの隠れサイズよりも大きいです (e.g., bert-base-uncased に対して)。

サイズ [batch_size, sequence_length] の入力について、中間の順伝播埋め込み [batch_size, sequence_length, config.intermediate_size] をストアするために必要なメモリはメモリ使用量の大きな割合を占める可能性があります。

 

以上



HuggingFace Transformers 4.17 : Get Started : 哲学

HuggingFace Transformers 4.17 : Get Started : 哲学 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/09/2022 (v4.17.0)

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

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

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに 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, modelstokenizer があるだけです。

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

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

    • その結果、このライブラリはニューラルネットのためのビルディング・ブロックのモジュール・ツールボックスでは ありません。ライブラリを拡張 / (その上で) 構築することを望むのであれば、通常の 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() は、ライブラリ自身から提供される (サポートされるモデルは モデルハブ で見つけられます) かユーザによりローカルに (or サーバ上に) ストアされた事前訓練済みバージョンから model/configuration/tokenizer をインスタンス化させます。

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

以上



HuggingFace Transformers 4.17 : Get Started : クイック・ツアー

HuggingFace Transformers 4.17 : Get Started : クイック・ツアー (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/09/2022 (v4.17.0)

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

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

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

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

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

 

HuggingFace Transformers 4.17 : Get Started : クイック・ツアー

Get up and running with Transformers! 素早い推論のために pipeline() を利用して始めましょう、そしてテキスト, ビジョン, or 音声タスクを解決するために AutoClass で事前訓練済みモデルと tokenizer を素早くロードしましょう。

 

Pipeline

与えられたタスクに対して事前訓練済みモデルを使用するためには pipeline() が最も簡単な方法です。

pipeline() は多くの一般的なタスクを out of the box にサポートします :

テキスト :

  • センチメント分析 : 与えられたテキストの両極性 (= polarity) を分類する。
  • テキスト生成 (in English) : 与えられた入力からテキストを生成する。
  • 固有表現認識 (NER) : 各単語をそれが表すエンティティ (person, date, location 等) でラベル付けします
  • 質問応答 : あるコンテキストと質問が与えられたとき、コンテキストから答えを抽出します。
  • マスクされたテキストを埋める (Fill-mask) : マスクされた単語を含むテキストが与えられたとき、ブランクを埋めます。
  • 要約 : テキストか文書の長いシークエンスの要約を生成します。
  • 翻訳 : テキストを別の言語に翻訳します。
  • 特徴抽出 : テキストのテンソル表現を作成します。

画像 :

  • 画像分類 : 画像を分類する。
  • 画像セグメンテーション : 画像の総てのピクセルを分類する。
  • 物体検出 : 画像内の物体を検出する。

音声 :

  • 音声分類 : 与えられた音声のセグメントにラベルを割り当てる。
  • 自動発話認識 (ASR) : 音声データをテキストに文字起こしする。

 

pipeline() と関連タスクの詳細は、ここ でドキュメントを参照してください。

 

パイプラインの使用方法

以下のサンプルでは、センチメント分析のために pipeline() を利用ます。

まだインストールしていない場合には、以下の依存性をインストールしてください :

PyTorch
pip install torch
TensorFlow
pip install torch

pipeline() をインポートして完了させたいタスクを指定します :

from transformers import pipeline

classifier = pipeline("sentiment-analysis")

pipeline はセンチメント分析のためのデフォルトの事前訓練済みモデルと tokenzier をダウンロードしてキャッシュします。そしてターゲットテキストで分類器を使用できます :

classifier("We are very happy to show you the 🤗 Transformers library.")
[{'label': 'POSITIVE', 'score': 0.9998}]

複数のセンテンスについては、センテンスのリストを pipeline() に渡します、これは辞書のリストを返します :

results = classifier(["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."])
for result in results:
    print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
label: POSITIVE, with score: 0.9998
label: NEGATIVE, with score: 0.5309

 
pipeline() はまたデータセット全体に対してイテレートすることもできます。🤗 データセット・ライブラリをインストールすることから始めます :

pip install datasets 

解決したいタスクと使用したいモデルで pipeline() を作成します。テンソルを CUDA デバイスに置くためにデバイスパラメータを 0 に設定します :

from transformers import pipeline

speech_recognizer = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h", device=0)

次に、イテレートしたいデータセット (詳細は 🤗 Datasets クイックスタート 参照) をロードします。例えば、SUPERB データセットをロードしましょう :

import datasets

dataset = datasets.load_dataset("superb", name="asr", split="test")

データセット全体をパイプラインに渡すことができます :

files = dataset["file"]
speech_recognizer(files[:4])
[{'text': 'HE HOPED THERE WOULD BE STEW FOR DINNER TURNIPS AND CARROTS AND BRUISED POTATOES AND FAT MUTTON PIECES TO BE LADLED OUT IN THICK PEPPERED FLOWER FAT AND SAUCE'},
 {'text': 'STUFFERED INTO YOU HIS BELLY COUNSELLED HIM'},
 {'text': 'AFTER EARLY NIGHTFALL THE YELLOW LAMPS WOULD LIGHT UP HERE AND THERE THE SQUALID QUARTER OF THE BROTHELS'},
 {'text': 'HO BERTIE ANY GOOD IN YOUR MIND'}]

(音声やビジョンでのような) 入力が大きい大規模なデータセットについては、総ての入力をメモリにロードするリストの代わりに generator を渡すことを望むでしょう。詳細は パイプライン・ドキュメント を見てください。

 

パイプラインで別のモデルと tokenizer を使用する

pipeline() は モデルハブ から任意のモデルを提供できるので、他のユースケースに pipeline() を適応させることは容易です。例えば、フランス語テキストを扱えるモデルを望む場合、適切なモデルのためにフィルタリングするためにモデルハブでタグを使用します。フィルタリングされたトップの結果はセンチメント分析のために再調整されたマルチリンガル BERT モデル を返します。Great, let’s use this model!

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"

事前訓練済みモデルと関連するトークナイザーをロードするために AutoModelForSequenceClassification と AutoTokenizer を使用します (AutoClass については後述) :

PyTorch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
TensorFlow
from transformers import AutoTokenizer, TFAutoModelForSequenceClassification

model = TFAutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

そして pipeline() でモデルとトークナイザーを指定して、ターゲットテキストに分類器を適用できます :

classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
classifier("Nous sommes très heureux de vous présenter la bibliothèque 🤗 Transformers.")
[{'label': '5 stars', 'score': 0.7273}]

貴方のユースケースのためのモデルを見つけられない場合、貴方のデータで事前訓練済みモデルを再調整する必要があります。その方法を学習するには 再調整チュートリアル を見てください。最後に、事前訓練済みモデルを再調整した後には、NLP を皆のために民主化するためにそれをモデルハブでコミュニティと共有する (ここ のチュートリアル参照) ことを考えてください!🤗

 

AutoClass

内部的には、AutoModelForSequenceClassificationAutoTokenizer クラスは pipeline() を駆動するために一緒に動作しています。AutoClass は事前訓練済みモデルのアーキテクチャををその名前かパスから自動的に取得するショートカットです。タスクのための適切な AutoClass と関連するトークナイザーを AutoTokenizer で選択する必要があるだけです。

サンプルに戻り pipeline() の結果を複製するために AutoClass をどのように使用できるかを見ましょう。

 

AutoTokenizer

トークナイザーはテキストをモデルが理解可能な形式に前処理する役割を負います。最初に、トークナイザーはテキストをトークンと呼ばれる単語に分割します。単語を分割する方法やレベルを含む、トークン化プロセスを規定する複数のルールがあります (トークン化については ここ で更に学習してください)。覚えておくべき最も重要なことは、モデルがそれで事前訓練されたトークン化ルールを使用していることを確実にするために同じモデル名でトークナイザーをインスタンス化する必要があることです。

AutoTokenizer でトークナイザーをロードします :

from transformers import AutoTokenizer

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
tokenizer = AutoTokenizer.from_pretrained(model_name)

次に、トークナイザーはモデルへの入力としてテンソルを構築するためにトークンを数値に変換します。これはモデルの語彙として知られています。

テキストをトークナイザーに渡します :

encoding = tokenizer("We are very happy to show you the 🤗 Transformers library.")
print(encoding)
{'input_ids': [101, 11312, 10320, 12495, 19308, 10114, 11391, 10855, 10103, 100, 58263, 13299, 119, 102],
 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

トークナイザーは以下を含む辞書を返します :

  • input_ids : トークンの数値表現。
  • atttention_mask : どのトークンが注目されるべきかを示す。

丁度 pipeline() のように、トークナイザーは入力のリストを受け取ります。更に、トークナイザーはまた均一な長さのバッチを返すためにテキストをパディングして切り詰めます :

PyTorch
pt_batch = tokenizer(
    ["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."],
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="pt",
)
TensorFlow
tf_batch = tokenizer(
    ["We are very happy to show you the 🤗 Transformers library.", "We hope you don't hate it."],
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="tf",
)

トークン化の詳細は 前処理 チュートリアルを読んでください。

 

AutoModel

🤗 Transformers は事前訓練済みインスタンスをロードする単純で統一された方法を提供します。これは、AutoTokenizer をロードするように AutoModel をロードできることを意味します。唯一の違いはタスクに対して正しい AutoModel を選択することです。テキスト – or シークエンス – 分類を行なっていますので、AutoModelForSequenceClassification をロードします。TensorFlow の同値は単純に TFAutoModelForSequenceClassification です :

PyTorch
from transformers import AutoModelForSequenceClassification

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
pt_model = AutoModelForSequenceClassification.from_pretrained(model_name)
TensorFlow
from transformers import TFAutoModelForSequenceClassification

model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
tf_model = TFAutoModelForSequenceClassification.from_pretrained(model_name)

どの AutoModel クラスをどのタスクに対して使用するかについては タスク概要 を見てください。

 
これで前処理した入力のバッチをモデルに直接渡すことができます。PyTorch モデルを使用している場合には、** を追加することで辞書をアンパックしてください。TensorFlow については、辞書キーを直接テンソルに渡してください。

PyTorch
pt_outputs = pt_model(**pt_batch)
TensorFlow
tf_outputs = tf_model(tf_batch)

モデルは logits 属性内で最後の活性を出力します。確率を取得するためには softmax 関数を logits に適用します :

PyTorch
from torch import nn

pt_predictions = nn.functional.softmax(pt_outputs.logits, dim=-1)
print(pt_predictions)
tensor([[0.0021, 0.0018, 0.0115, 0.2121, 0.7725],
        [0.2084, 0.1826, 0.1969, 0.1755, 0.2365]], grad_fn=)
TensorFlow
import tensorflow as tf

tf_predictions = tf.nn.softmax(tf_outputs.logits, axis=-1)
print(tf_predictions)
tf.Tensor(
[[0.00206 0.00177 0.01155 0.21209 0.77253]
 [0.20842 0.18262 0.19693 0.1755  0.23652]], shape=(2, 5), dtype=float32)

総ての 🤗 Transformers モデルは (PyTorch or TensorFlow) は (softmax のような) 最終的な活性化関数の前にテンソルを出力します、最後の活性化関数は損失と融合されることが多いからです。

モデルは標準的な torch.nn.Module or a tf.keras.Model ですので、通常の訓練ループでそれらを使用できます。けれども、より簡単にするため、 🤗 Transformers は PyTorch のために Trainer クラスを提供しています、これは分散訓練, 混合精度, 等のための機能を追加します。TensorFlow については、Keras からの fit メソッドを利用できます。詳細は 訓練チュートリアル を参照してください。

🤗 Transformers モデル出力は特殊なデータクラスなので、それらの属性は IDE で自動補完されます。モデル出力はまたタプルか辞書のようにも動作します (e.g. 整数, スライス, 文字列でインデックスできます)、その場合には None の属性は無視されます。

 

モデルのセーブ

モデルが再調整されたら、PreTrainedModel.save_pretrained() を使用してそれをそのトークナイザーと共にセーブできます :

PyTorch
pt_save_directory = "./pt_save_pretrained"
tokenizer.save_pretrained(pt_save_directory)
pt_model.save_pretrained(pt_save_directory)
TensorFlow
tf_save_directory = "./tf_save_pretrained"
tokenizer.save_pretrained(tf_save_directory)
tf_model.save_pretrained(tf_save_directory)

モデルを再度利用する準備ができたときには、それを PreTrainedModel.from_pretrained() で再ロードします :

PyTorch
pt_model = AutoModelForSequenceClassification.from_pretrained("./pt_save_pretrained")
TensorFlow
tf_model = TFAutoModelForSequenceClassification.from_pretrained("./tf_save_pretrained")

一つの特にクールな 🤗 Transformers の機能はモデルをセーブしてそれを PyTorch か TensorFlow モデルのいずれかとして再ロードする機能です。from_pt or from_tf パラメータはモデルを一つのフレームワークから他方に変換できます :

PyTorch
from transformers import AutoModel

tokenizer = AutoTokenizer.from_pretrained(tf_save_directory)
pt_model = AutoModelForSequenceClassification.from_pretrained(tf_save_directory, from_tf=True)
TensorFlow
from transformers import TFAutoModel

tokenizer = AutoTokenizer.from_pretrained(pt_save_directory)
tf_model = TFAutoModelForSequenceClassification.from_pretrained(pt_save_directory, from_pt=True)
 

以上



HuggingFace Transformers 4.17 : 概要

HuggingFace Transformers 4.17 : 概要 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/04/2022 (v4.17.0)

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

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

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

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

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

 

 

HuggingFace Transformers 4.17 : 概要

JAX, PyTorch と TensorFlow のための最先端の機械学習

Transformers は、テキスト、ビジョンと音声のような様々な様相のタスクを遂行する数千の事前訓練済みモデルを提供しています。

これらのモデルを以下で適用できます :

  • テキスト – 100 言語以上で、テキスト分類, 情報抽出, 質問応答, 要約, 翻訳, テキスト生成のようなタスクのために。
  • 画像 – 画像分類、物体検出 と セグメンテーションのようなタスクのために。
  • 音声 – 発話認識と音声分類のようなタスクのために。

Transformer モデルはまた テーブル質問応答, 光学文字認識, スキャンされた文書からの情報抽出, 動画分類, そして視覚的質問応答 のような、組み合わされた様々な様相 上のタスクも遂行します。

Transformers はそれらの事前訓練済みモデルを素早くダウンロードして与えられたテキスト上で利用し、それらを貴方自身のデータセット上で再調整し、それからそれらを私達の モデル・ハブ 上でコミュニティと共有するための API を提供します。同時に、アーキテクチャを定義する各 python モジュールは完全にスタンドアロンで、素早い研究実験を可能にするために変更できます。

Transformers は 3 つの最もポピュラーな深層学習ライブラリ – Jax, PyTorch と TensorFlow により、それらの間のシームレスな統合によって支援されます。他のものでそれらを推論のためにロードする前にその一つでモデルを訓練することは簡単です。

 

オンライン・デモ

私達のモデルの殆どを モデルハブ からのそれらのページで直接テストすることができます。public と private モデルのために プライベートモデル・ホスティング、バージョニング & 推論 API もまた供給します。

ここに幾つかサンプルがあります :

自然言語処理 :

コンピュータビジョン

音声 :

Hugging Face チームにより構築された Write With Transformer はこのレポジトリのテキスト生成機能の公式デモです。

 

クイック・ツアー

与えられた入力 (テキスト, 画像, 音声, …) 上でモデルを直ちに利用するため、パイプライン API を提供しています。パイプラインは事前訓練済みモデルをそのモデル訓練の間に使用された前処理と一緒にグループ化します。ここにポジティブ vs ネガティブ・テキストを分類するためのパイプラインを素早く利用する方法があります :

>>> from transformers import pipeline

# Allocate a pipeline for sentiment-analysis
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('We are very happy to introduce pipeline to the transformers repository.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

コードの 2 番目の行はパイプラインで使用された事前訓練済みモデルをダウンロードしてキャッシュします、一方で 3 番目の行はそれを与えられたテキスト上で評価します。ここでは答えは 99.97% の信頼度で「ポジティブ」です。

多くの NLP タスクは (使用準備ができている) 事前訓練済みのパイプラインを持ちます。例えば、コンテキストが与えられたとき質問への回答を容易に抽出できます :

>>> from transformers import pipeline

# Allocate a pipeline for question-answering
>>> question_answerer = pipeline('question-answering')
>>> question_answerer({
...     'question': 'What is the name of the repository ?',
...     'context': 'Pipeline has been included in the huggingface/transformers repository'
... })
{'score': 0.30970096588134766, 'start': 34, 'end': 58, 'answer': 'huggingface/transformers'}

答えに加えて、ここで使用される事前訓練済みモデルは (トークン化されたセンテンスにおける答えの開始位置と終了位置とともに) その信頼度スコアを返しました。このチュートリアル でパイプライン API によりサポートされるタスクについて更に学習できます。

与えられたタスク上で任意の事前訓練済みモデルをダウンロードして利用するには、3 行のコードを必要とするだけです。ここに PyToch バージョンがあります :

>>> from transformers import AutoTokenizer, AutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
>>> model = AutoModel.from_pretrained("bert-base-uncased")

>>> inputs = tokenizer("Hello world!", return_tensors="pt")
>>> outputs = model(**inputs)

そしてここに TensorFlow のための同値なコードがあります :

>>> from transformers import AutoTokenizer, TFAutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("bert-base-uncased")

>>> inputs = tokenizer("Hello world!", return_tensors="tf")
>>> outputs = model(**inputs)

トークナイザーは事前訓練済みのモデルが想定する前処理の総ての責任を負い、そして (上のサンプルでのように) 単一の文字列かリスト上で直接呼び出せます。それは辞書を出力します、これは下流コードで利用するか、あるいは ** 引数 unpacking 演算子を使用して単純にモデルに渡すことができます。

モデル自身は通常の Pytorch nn.ModuleTensorFlow tf.keras.Model で (貴方のバックエンドに依存します)、これらは普通に利用できます。このチュートリアル は古典的な PyTorch or TensorFlow 訓練ループにそのようなモデルをどのように統合するか、あるいは新しいデータセット上で素早く再調整するために Trainer API をどのように使用するかを説明しています。

 

何故私は transformers を使用するべきでしょう?

  1. 使いやすい最先端のモデル :
    • 自然言語理解 & 生成、コンピュータビジョン、そして音声タスク上の高パフォーマンス。
    • 教育者と実践者のための入門への低い障壁。
    • 学習すべき 3 つのクラスだけを持つ、ユーザが直面する少ない抽象化。
    • 事前訓練済みモデルの総てを使用するための統一 API。

  2. より低い計算コスト、より小さいカーボンフットプリント (二酸化炭素排出量) :
    • 研究者は常に再訓練する代わりに訓練済みモデルを共有できます。
    • 実践者は計算時間とプロダクション・コストを削減することができます。
    • 幾つかは100 言語以上の、20,000 超の事前訓練済みモデルを持つ数十のアーキテクチャ。

  3. モデルのライフタイムの総てのパートのために適切なフレームワークを選択する :
    • 3 行のコードで最先端のモデルを訓練します。
    • TF2.0/PyTorch/JAX フレームワーク間で単一モデルを自在に移動する。
    • 訓練、評価、プロダクションのための適切なフレームワークをシームレスに選択する。

  4. 貴方のニーズに合わせてモデルやサンプルを容易にカスタマイズする :
    • 元の著者により公開された結果を再現するための各アーキテクチャのためのサンプル。
    • できる限り一貫してモデル内部を公開する。
    • モデルファイルは素早い実験のためにライブラリから独立的に利用できる。

 

何故 transformers を利用するべきではないのでしょう?

  • このライブラリはニューラルネットのためのビルディングブロックのモジュール・ツールボックスではありません。研究者が追加の抽象化/ファイルに深入りすることなくモデルの各々の上で素早く iterate できるようにように、モデルファイルのコードは意図的な追加の抽象によりリファクタリングされません。

  • 訓練 API は任意のモデル上で動作することを意図されていませんがライブラリにより提供されるモデルで動作するように最適化されています。一般的な機械学習ループのためには、他のライブラリを利用するべきです。

  • 私達は可能な限り多くのユースケースを提示する努力をする一方で、examples フォルダ のスクリプトは単なるそれ : サンプルです。それらは貴方の特定の問題上でそのままでは動作しないでしょうし、それらを貴方のニーズに適応させるためにコードの数行を変更する必要があることが想定されます。

 

モデル・アーキテクチャ

Transformers により提供される 総てのモデルチェックポイント は huggingface.co モデルハブ からシームレスに統合されていて、そこではそれらは ユーザ組織 により直接アップロードされています。

チェックポイントの現在の数 : モデル 35,704 (as of 4/08/2022)

Transformers は現在以下のアーキテクチャを提供しています (それらの各々の高位な要約については ここ を参照) :

  1. ALBERT (from Google Research and the Toyota Technological Institute at Chicago) released with the paper ALBERT: A Lite BERT for Self-supervised Learning of Language Representations, by Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.

  2. BART (from Facebook) released with the paper BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension by Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov and Luke Zettlemoyer.

  3. BARThez (from École polytechnique) released with the paper BARThez: a Skilled Pretrained French Sequence-to-Sequence Model by Moussa Kamal Eddine, Antoine J.-P. Tixier, Michalis Vazirgiannis.

  4. BARTpho (from VinAI Research) released with the paper BARTpho: Pre-trained Sequence-to-Sequence Models for Vietnamese by Nguyen Luong Tran, Duong Minh Le and Dat Quoc Nguyen.

  5. BEiT (from Microsoft) released with the paper BEiT: BERT Pre-Training of Image Transformers by Hangbo Bao, Li Dong, Furu Wei.

  6. BERT (from Google) released with the paper BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding by Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova.

  7. BERTweet (from VinAI Research) released with the paper BERTweet: A pre-trained language model for English Tweets by Dat Quoc Nguyen, Thanh Vu and Anh Tuan Nguyen.

  8. BERT For Sequence Generation (from Google) released with the paper Leveraging Pre-trained Checkpoints for Sequence Generation Tasks by Sascha Rothe, Shashi Narayan, Aliaksei Severyn.

  9. BigBird-RoBERTa (from Google Research) released with the paper Big Bird: Transformers for Longer Sequences by Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed.

  10. BigBird-Pegasus (from Google Research) released with the paper Big Bird: Transformers for Longer Sequences by Manzil Zaheer, Guru Guruganesh, Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontanon, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed.

  11. Blenderbot (from Facebook) released with the paper Recipes for building an open-domain chatbot by Stephen Roller, Emily Dinan, Naman Goyal, Da Ju, Mary Williamson, Yinhan Liu, Jing Xu, Myle Ott, Kurt Shuster, Eric M. Smith, Y-Lan Boureau, Jason Weston.

  12. BlenderbotSmall (from Facebook) released with the paper Recipes for building an open-domain chatbot by Stephen Roller, Emily Dinan, Naman Goyal, Da Ju, Mary Williamson, Yinhan Liu, Jing Xu, Myle Ott, Kurt Shuster, Eric M. Smith, Y-Lan Boureau, Jason Weston.

  13. BORT (from Alexa) released with the paper Optimal Subarchitecture Extraction For BERT by Adrian de Wynter and Daniel J. Perry.

  14. ByT5 (from Google Research) released with the paper ByT5: Towards a token-free future with pre-trained byte-to-byte models by Linting Xue, Aditya Barua, Noah Constant, Rami Al-Rfou, Sharan Narang, Mihir Kale, Adam Roberts, Colin Raffel.

  15. CamemBERT (from Inria/Facebook/Sorbonne) released with the paper CamemBERT: a Tasty French Language Model by Louis Martin*, Benjamin Muller*, Pedro Javier Ortiz Suárez*, Yoann Dupont, Laurent Romary, Éric Villemonte de la Clergerie, Djamé Seddah and Benoît Sagot.

  16. CANINE (from Google Research) released with the paper CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation by Jonathan H. Clark, Dan Garrette, Iulia Turc, John Wieting.

  17. ConvNeXT (from Facebook AI) released with the paper A ConvNet for the 2020s by Zhuang Liu, Hanzi Mao, Chao-Yuan Wu, Christoph Feichtenhofer, Trevor Darrell, Saining Xie.

  18. CLIP (from OpenAI) released with the paper Learning Transferable Visual Models From Natural Language Supervision by Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever.

  19. ConvBERT (from YituTech) released with the paper ConvBERT: Improving BERT with Span-based Dynamic Convolution by Zihang Jiang, Weihao Yu, Daquan Zhou, Yunpeng Chen, Jiashi Feng, Shuicheng Yan.

  20. CPM (from Tsinghua University) released with the paper CPM: A Large-scale Generative Chinese Pre-trained Language Model by Zhengyan Zhang, Xu Han, Hao Zhou, Pei Ke, Yuxian Gu, Deming Ye, Yujia Qin, Yusheng Su, Haozhe Ji, Jian Guan, Fanchao Qi, Xiaozhi Wang, Yanan Zheng, Guoyang Zeng, Huanqi Cao, Shengqi Chen, Daixuan Li, Zhenbo Sun, Zhiyuan Liu, Minlie Huang, Wentao Han, Jie Tang, Juanzi Li, Xiaoyan Zhu, Maosong Sun.

  21. CTRL (from Salesforce) released with the paper CTRL: A Conditional Transformer Language Model for Controllable Generation by Nitish Shirish Keskar*, Bryan McCann*, Lav R. Varshney, Caiming Xiong and Richard Socher.

  22. Data2Vec (from Facebook) released with the paper Data2Vec: A General Framework for Self-supervised Learning in Speech, Vision and Language by Alexei Baevski, Wei-Ning Hsu, Qiantong Xu, Arun Babu, Jiatao Gu, Michael Auli.

  23. DeBERTa (from Microsoft) released with the paper DeBERTa: Decoding-enhanced BERT with Disentangled Attention by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen.

  24. DeBERTa-v2 (from Microsoft) released with the paper DeBERTa: Decoding-enhanced BERT with Disentangled Attention by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen.

  25. Decision Transformer (from Berkeley/Facebook/Google) released with the paper Decision Transformer: Reinforcement Learning via Sequence Modeling by Lili Chen, Kevin Lu, Aravind Rajeswaran, Kimin Lee, Aditya Grover, Michael Laskin, Pieter Abbeel, Aravind Srinivas, Igor Mordatch.

  26. DiT (from Microsoft Research) released with the paper DiT: Self-supervised Pre-training for Document Image Transformer by Junlong Li, Yiheng Xu, Tengchao Lv, Lei Cui, Cha Zhang, Furu Wei.

  27. DeiT (from Facebook) released with the paper Training data-efficient image transformers & distillation through attention by Hugo Touvron, Matthieu Cord, Matthijs Douze, Francisco Massa, Alexandre Sablayrolles, Hervé Jégou.

  28. DETR (from Facebook) released with the paper End-to-End Object Detection with Transformers by Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko.

  29. DialoGPT (from Microsoft Research) released with the paper DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation by Yizhe Zhang, Siqi Sun, Michel Galley, Yen-Chun Chen, Chris Brockett, Xiang Gao, Jianfeng Gao, Jingjing Liu, Bill Dolan.

  30. DistilBERT (from HuggingFace), released together with the paper DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter by Victor Sanh, Lysandre Debut and Thomas Wolf. The same method has been applied to compress GPT2 into DistilGPT2, RoBERTa into DistilRoBERTa, Multilingual BERT into DistilmBERT and a German version of DistilBERT.

  31. DPR (from Facebook) released with the paper Dense Passage Retrieval for Open-Domain Question Answering by Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, and Wen-tau Yih.

  32. DPT (from Intel Labs) released with the paper Vision Transformers for Dense Prediction by René Ranftl, Alexey Bochkovskiy, Vladlen Koltun.

  33. EncoderDecoder (from Google Research) released with the paper Leveraging Pre-trained Checkpoints for Sequence Generation Tasks by Sascha Rothe, Shashi Narayan, Aliaksei Severyn.

  34. ELECTRA (from Google Research/Stanford University) released with the paper ELECTRA: Pre-training text encoders as discriminators rather than generators by Kevin Clark, Minh-Thang Luong, Quoc V. Le, Christopher D. Manning.

  35. FlauBERT (from CNRS) released with the paper FlauBERT: Unsupervised Language Model Pre-training for French by Hang Le, Loïc Vial, Jibril Frej, Vincent Segonne, Maximin Coavoux, Benjamin Lecouteux, Alexandre Allauzen, Benoît Crabbé, Laurent Besacier, Didier Schwab.

  36. FNet (from Google Research) released with the paper FNet: Mixing Tokens with Fourier Transforms by James Lee-Thorp, Joshua Ainslie, Ilya Eckstein, Santiago Ontanon.

  37. Funnel Transformer (from CMU/Google Brain) released with the paper Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processing by Zihang Dai, Guokun Lai, Yiming Yang, Quoc V. Le.

  38. GLPN (from KAIST) released with the paper Global-Local Path Networks for Monocular Depth Estimation with Vertical CutDepth by Doyeon Kim, Woonghyun Ga, Pyungwhan Ahn, Donggyu Joo, Sehwan Chun, Junmo Kim.

  39. GPT (from OpenAI) released with the paper Improving Language Understanding by Generative Pre-Training by Alec Radford, Karthik Narasimhan, Tim Salimans and Ilya Sutskever.

  40. GPT-2 (from OpenAI) released with the paper Language Models are Unsupervised Multitask Learners by Alec Radford*, Jeffrey Wu*, Rewon Child, David Luan, Dario Amodei** and Ilya Sutskever**.

  41. GPT-J (from EleutherAI) released in the repository kingoflolz/mesh-transformer-jax by Ben Wang and Aran Komatsuzaki.

  42. GPT Neo (from EleutherAI) released in the repository EleutherAI/gpt-neo by Sid Black, Stella Biderman, Leo Gao, Phil Wang and Connor Leahy.

  43. Hubert (from Facebook) released with the paper HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units by Wei-Ning Hsu, Benjamin Bolte, Yao-Hung Hubert Tsai, Kushal Lakhotia, Ruslan Salakhutdinov, Abdelrahman Mohamed.

  44. I-BERT (from Berkeley) released with the paper I-BERT: Integer-only BERT Quantization by Sehoon Kim, Amir Gholami, Zhewei Yao, Michael W. Mahoney, Kurt Keutzer.

  45. ImageGPT (from OpenAI) released with the paper Generative Pretraining from Pixels by Mark Chen, Alec Radford, Rewon Child, Jeffrey Wu, Heewoo Jun, David Luan, Ilya Sutskever.

  46. LayoutLM (from Microsoft Research Asia) released with the paper LayoutLM: Pre-training of Text and Layout for Document Image Understanding by Yiheng Xu, Minghao Li, Lei Cui, Shaohan Huang, Furu Wei, Ming Zhou.

  47. LayoutLMv2 (from Microsoft Research Asia) released with the paper LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding by Yang Xu, Yiheng Xu, Tengchao Lv, Lei Cui, Furu Wei, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Wanxiang Che, Min Zhang, Lidong Zhou.

  48. LayoutXLM (from Microsoft Research Asia) released with the paper LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding by Yiheng Xu, Tengchao Lv, Lei Cui, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Furu Wei.

  49. LED (from AllenAI) released with the paper Longformer: The Long-Document Transformer by Iz Beltagy, Matthew E. Peters, Arman Cohan.

  50. Longformer (from AllenAI) released with the paper Longformer: The Long-Document Transformer by Iz Beltagy, Matthew E. Peters, Arman Cohan.

  51. LUKE (from Studio Ousia) released with the paper LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention by Ikuya Yamada, Akari Asai, Hiroyuki Shindo, Hideaki Takeda, Yuji Matsumoto.

  52. mLUKE (from Studio Ousia) released with the paper mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models by Ryokan Ri, Ikuya Yamada, and Yoshimasa Tsuruoka.

  53. LXMERT (from UNC Chapel Hill) released with the paper LXMERT: Learning Cross-Modality Encoder Representations from Transformers for Open-Domain Question Answering by Hao Tan and Mohit Bansal.

  54. M2M100 (from Facebook) released with the paper Beyond English-Centric Multilingual Machine Translation by Angela Fan, Shruti Bhosale, Holger Schwenk, Zhiyi Ma, Ahmed El-Kishky, Siddharth Goyal, Mandeep Baines, Onur Celebi, Guillaume Wenzek, Vishrav Chaudhary, Naman Goyal, Tom Birch, Vitaliy Liptchinsky, Sergey Edunov, Edouard Grave, Michael Auli, Armand Joulin.

  55. MarianMT Machine translation models trained using OPUS data by Jörg Tiedemann. The Marian Framework is being developed by the Microsoft Translator Team.

  56. MaskFormer (from Meta and UIUC) released with the paper Per-Pixel Classification is Not All You Need for Semantic Segmentation by Bowen Cheng, Alexander G. Schwing, Alexander Kirillov.

  57. MBart (from Facebook) released with the paper Multilingual Denoising Pre-training for Neural Machine Translation by Yinhan Liu, Jiatao Gu, Naman Goyal, Xian Li, Sergey Edunov, Marjan Ghazvininejad, Mike Lewis, Luke Zettlemoyer.

  58. MBart-50 (from Facebook) released with the paper Multilingual Translation with Extensible Multilingual Pretraining and Finetuning by Yuqing Tang, Chau Tran, Xian Li, Peng-Jen Chen, Naman Goyal, Vishrav Chaudhary, Jiatao Gu, Angela Fan.

  59. Megatron-BERT (from NVIDIA) released with the paper Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro.

  60. Megatron-GPT2 (from NVIDIA) released with the paper Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro.

  61. MPNet (from Microsoft Research) released with the paper MPNet: Masked and Permuted Pre-training for Language Understanding by Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, Tie-Yan Liu.

  62. MT5 (from Google AI) released with the paper mT5: A massively multilingual pre-trained text-to-text transformer by Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, Aditya Siddhant, Aditya Barua, Colin Raffel.

  63. Nyströmformer (from the University of Wisconsin – Madison) released with the paper Nyströmformer: A Nyström-Based Algorithm for Approximating Self-Attention by Yunyang Xiong, Zhanpeng Zeng, Rudrasis Chakraborty, Mingxing Tan, Glenn Fung, Yin Li, Vikas Singh.

  64. Pegasus (from Google) released with the paper PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization by Jingqing Zhang, Yao Zhao, Mohammad Saleh and Peter J. Liu.

  65. Perceiver IO (from Deepmind) released with the paper Perceiver IO: A General Architecture for Structured Inputs & Outputs> by Andrew Jaegle, Sebastian Borgeaud, Jean-Baptiste Alayrac, Carl Doersch, Catalin Ionescu, David Ding, Skanda Koppula, Daniel Zoran, Andrew Brock, Evan Shelhamer, Olivier Hénaff, Matthew M. Botvinick, Andrew Zisserman, Oriol Vinyals, João Carreira.

  66. PhoBERT (from VinAI Research) released with the paper PhoBERT: Pre-trained language models for Vietnamese by Dat Quoc Nguyen and Anh Tuan Nguyen.

  67. PLBart (from UCLA NLP) released with the paper Unified Pre-training for Program Understanding and Generation by Wasi Uddin Ahmad, Saikat Chakraborty, Baishakhi Ray, Kai-Wei Chang.

  68. PoolFormer (from Sea AI Labs) released with the paper MetaFormer is Actually What You Need for Vision by Yu, Weihao and Luo, Mi and Zhou, Pan and Si, Chenyang and Zhou, Yichen and Wang, Xinchao and Feng, Jiashi and Yan, Shuicheng.

  69. ProphetNet (from Microsoft Research) released with the paper ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training by Yu Yan, Weizhen Qi, Yeyun Gong, Dayiheng Liu, Nan Duan, Jiusheng Chen, Ruofei Zhang and Ming Zhou.

  70. QDQBert (from NVIDIA) released with the paper Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation by Hao Wu, Patrick Judd, Xiaojie Zhang, Mikhail Isaev and Paulius Micikevicius.

  71. REALM (from Google Research) released with the paper REALM: Retrieval-Augmented Language Model Pre-Training by Kelvin Guu, Kenton Lee, Zora Tung, Panupong Pasupat and Ming-Wei Chang.

  72. Reformer (from Google Research) released with the paper Reformer: The Efficient Transformer by Nikita Kitaev, Łukasz Kaiser, Anselm Levskaya.

  73. RemBERT (from Google Research) released with the paper Rethinking embedding coupling in pre-trained language models by Hyung Won Chung, Thibault Févry, Henry Tsai, M. Johnson, Sebastian Ruder.

  74. RegNet (from META Platforms) released with the paper Designing Network Design Space by Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dollár.

  75. ResNet (from Microsoft Research) released with the paper Deep Residual Learning for Image Recognition by Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun.

  76. RoBERTa (from Facebook), released together with the paper RoBERTa: A Robustly Optimized BERT Pretraining Approach by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov.

  77. RoFormer (from ZhuiyiTechnology), released together with the paper RoFormer: Enhanced Transformer with Rotary Position Embedding by Jianlin Su and Yu Lu and Shengfeng Pan and Bo Wen and Yunfeng Liu.

  78. SegFormer (from NVIDIA) released with the paper SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers by Enze Xie, Wenhai Wang, Zhiding Yu, Anima Anandkumar, Jose M. Alvarez, Ping Luo.

  79. SEW (from ASAPP) released with the paper Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition by Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi.

  80. SEW-D (from ASAPP) released with the paper Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition by Felix Wu, Kwangyoun Kim, Jing Pan, Kyu Han, Kilian Q. Weinberger, Yoav Artzi.

  81. SpeechToTextTransformer (from Facebook), released together with the paper fairseq S2T: Fast Speech-to-Text Modeling with fairseq by Changhan Wang, Yun Tang, Xutai Ma, Anne Wu, Dmytro Okhonko, Juan Pino.

  82. SpeechToTextTransformer2 (from Facebook), released together with the paper Large-Scale Self- and Semi-Supervised Learning for Speech Translation by Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.

  83. Splinter (from Tel Aviv University), released together with the paper Few-Shot Question Answering by Pretraining Span Selection by Ori Ram, Yuval Kirstain, Jonathan Berant, Amir Globerson, Omer Levy.

  84. SqueezeBert (from Berkeley) released with the paper SqueezeBERT: What can computer vision teach NLP about efficient neural networks? by Forrest N. Iandola, Albert E. Shaw, Ravi Krishna, and Kurt W. Keutzer.

  85. Swin Transformer (from Microsoft) released with the paper Swin Transformer: Hierarchical Vision Transformer using Shifted Windows by Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang, Stephen Lin, Baining Guo.

  86. T5 (from Google AI) released with the paper Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer by Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu.

  87. T5v1.1 (from Google AI) released in the repository google-research/text-to-text-transfer-transformer by Colin Raffel and Noam Shazeer and Adam Roberts and Katherine Lee and Sharan Narang and Michael Matena and Yanqi Zhou and Wei Li and Peter J. Liu.

  88. TAPAS (from Google AI) released with the paper TAPAS: Weakly Supervised Table Parsing via Pre-training by Jonathan Herzig, Paweł Krzysztof Nowak, Thomas Müller, Francesco Piccinno and Julian Martin Eisenschlos.

  89. Transformer-XL (from Google/CMU) released with the paper Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context by Zihang Dai*, Zhilin Yang*, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov.

  90. TrOCR (from Microsoft), released together with the paper TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models by Minghao Li, Tengchao Lv, Lei Cui, Yijuan Lu, Dinei Florencio, Cha Zhang, Zhoujun Li, Furu Wei.

  91. UniSpeech (from Microsoft Research) released with the paper UniSpeech: Unified Speech Representation Learning with Labeled and Unlabeled Data by Chengyi Wang, Yu Wu, Yao Qian, Kenichi Kumatani, Shujie Liu, Furu Wei, Michael Zeng, Xuedong Huang.

  92. UniSpeechSat (from Microsoft Research) released with the paper UNISPEECH-SAT: UNIVERSAL SPEECH REPRESENTATION LEARNING WITH SPEAKER AWARE PRE-TRAINING by Sanyuan Chen, Yu Wu, Chengyi Wang, Zhengyang Chen, Zhuo Chen, Shujie Liu, Jian Wu, Yao Qian, Furu Wei, Jinyu Li, Xiangzhan Yu.

  93. VAN (from Tsinghua University and Nankai University) released with the paper Visual Attention Network by Meng-Hao Guo, Cheng-Ze Lu, Zheng-Ning Liu, Ming-Ming Cheng, Shi-Min Hu.

  94. ViLT (from NAVER AI Lab/Kakao Enterprise/Kakao Brain) released with the paper ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision by Wonjae Kim, Bokyung Son, Ildoo Kim.

  95. Vision Transformer (ViT) (from Google AI) released with the paper An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale by Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby.

  96. ViTMAE (from Meta AI) released with the paper Masked Autoencoders Are Scalable Vision Learners by Kaiming He, Xinlei Chen, Saining Xie, Yanghao Li, Piotr Dollár, Ross Girshick.

  97. VisualBERT (from UCLA NLP) released with the paper VisualBERT: A Simple and Performant Baseline for Vision and Language by Liunian Harold Li, Mark Yatskar, Da Yin, Cho-Jui Hsieh, Kai-Wei Chang.

  98. WavLM (from Microsoft Research) released with the paper WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing by Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin Qian, Yao Qian, Jian Wu, Michael Zeng, Furu Wei.

  99. Wav2Vec2 (from Facebook AI) released with the paper wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations by Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli.

  100. Wav2Vec2Phoneme (from Facebook AI) released with the paper Simple and Effective Zero-shot Cross-lingual Phoneme Recognition by Qiantong Xu, Alexei Baevski, Michael Auli.

  101. XGLM (From Facebook AI) released with the paper Few-shot Learning with Multilingual Language Models by Xi Victoria Lin, Todor Mihaylov, Mikel Artetxe, Tianlu Wang, Shuohui Chen, Daniel Simig, Myle Ott, Naman Goyal, Shruti Bhosale, Jingfei Du, Ramakanth Pasunuru, Sam Shleifer, Punit Singh Koura, Vishrav Chaudhary, Brian O’Horo, Jeff Wang, Luke Zettlemoyer, Zornitsa Kozareva, Mona Diab, Veselin Stoyanov, Xian Li.

  102. XLM (from Facebook) released together with the paper Cross-lingual Language Model Pretraining by Guillaume Lample and Alexis Conneau.

  103. XLM-ProphetNet (from Microsoft Research) released with the paper ProphetNet: Predicting Future N-gram for Sequence-to-Sequence Pre-training by Yu Yan, Weizhen Qi, Yeyun Gong, Dayiheng Liu, Nan Duan, Jiusheng Chen, Ruofei Zhang and Ming Zhou.

  104. XLM-RoBERTa (from Facebook AI), released together with the paper Unsupervised Cross-lingual Representation Learning at Scale by Alexis Conneau*, Kartikay Khandelwal*, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, Edouard Grave, Myle Ott, Luke Zettlemoyer and Veselin Stoyanov.

  105. XLM-RoBERTa-XL (from Facebook AI), released together with the paper Larger-Scale Transformers for Multilingual Masked Language Modeling by Naman Goyal, Jingfei Du, Myle Ott, Giri Anantharaman, Alexis Conneau.

  106. XLNet (from Google/CMU) released with the paper ​XLNet: Generalized Autoregressive Pretraining for Language Understanding by Zhilin Yang*, Zihang Dai*, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le.

  107. XLSR-Wav2Vec2 (from Facebook AI) released with the paper Unsupervised Cross-Lingual Representation Learning For Speech Recognition by Alexis Conneau, Alexei Baevski, Ronan Collobert, Abdelrahman Mohamed, Michael Auli.

  108. XLS-R (from Facebook AI) released with the paper XLS-R: Self-supervised Cross-lingual Speech Representation Learning at Scale by Arun Babu, Changhan Wang, Andros Tjandra, Kushal Lakhotia, Qiantong Xu, Naman Goyal, Kritika Singh, Patrick von Platen, Yatharth Saraf, Juan Pino, Alexei Baevski, Alexis Conneau, Michael Auli.

  109. YOSO (from the University of Wisconsin – Madison) released with the paper You Only Sample (Almost) Once: Linear Cost Self-Attention Via Bernoulli Sampling by Zhanpeng Zeng, Yunyang Xiong, Sathya N. Ravi, Shailesh Acharya, Glenn Fung, Vikas Singh.

  110. 新しいモデルを寄贈することを望みますか?新しいモデルを追加するプロセスに導く 詳細なガイドとテンプレート を追加しました。レポジトリの templates フォルダでそれらを見つけることができます。貴方の PR を始める前にフィードバックを集めるために contributing ガイドライン を確認してそしてメンテナーにコンタクトするか issue をオープンすることを確実にしてください。

各モデルが Flax, PyTorch or TensorFlow の実装を持つか、あるいは Tokenizer により支援された関連する tokenizer を持つかを確認するためには、このテーブル を参照してください。

これらの実装は幾つかのデータセット上でテストされ (examples スクリプト参照) そして元の実装のパフォーマンスに一致するはずです。ドキュメントの Examples セクションでパフォーマンス上の更なる詳細を見つけられます。

 

更に学習する

セクション 説明
ドキュメント Full API ドキュメントとチュートリアル
タスク概要 Transformers によりサポートされるタスク
前処理チュートリアル モデルのためのデータを準備する Tokenizer クラスを使用する
訓練と再調整 PyTorch/TensorFlow 訓練ループと Trainer API で Transformers により提供されるモデルを使用する
クイックツアー: 再調整/使用方法スクリプト 広範囲なタスク上でモデルを再調整するためのサンプル・スクリプト
モデル共有とアップロード 貴方の再調整済みモデルをアップロードしてコミュニティで共有する
マイグレーション pytorch-transformers or pytorch-pretrained-bert から Transformers にマイグレートする

 

Citation

(訳注: 原文 を参照してください。)

 

以上



ClassCat® Chatbot

人工知能開発支援
クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com

カテゴリー