今日のローカルTensorFlowEverywhereイベントの出欠確認!

Wiki40B 言語モデル

TensorFlow.orgで表示 Google Colab で実行 GitHub でソースを表示 ノートブックをダウンロード/a0} TF Hub モデルを見る

TensorFlow HubWiki40B 言語モデルを使用して、ウィキペディアのようなテキストを生成しましょう!

このノートブックでは、次の項目を行う方法を説明します。

  • TF-Hub の Wiki40b-LM コレクションの一部である単一言語モデル 41 個と多言語モデル 2 個を読み込みます。
  • モデルを使用して、特定のテキストピースの複雑さ、レイヤーごとのアクティベーション、および単語埋め込みを取得します。
  • シードテキストのピースからトークンごとにテキストを生成します。

言語モデルは、TensorFlow Datasets で新たに公開された、クリーンアップ済みの Wiki40B データセットでトレーニングされています。トレーニングは、論文「Wiki-40B: Multilingual Language Model Dataset」に基づいてセットアップされています。

セットアップ

Installing Dependencies

Imports

言語を選択する

TF-Hub から読み込む言語モデルと、生成されるテキストの長さを選択しましょう。

Using the https://tfhub.dev/google/wiki40b-lm-en/1 model to generate sequences of max length 20.

モデルを構築する

使用するトレーニング済みのモデルの構成が完了したので、最大 max_gen_len のテキストを生成するように構成することにしましょう。TF-Hub から言語モデルを読み込み、スターターテキストピースをフィードし、生成されるたびにインタラクティブにトークンをフィードする必要があります。

Load the language model pieces

Construct the per-token generation graph

Build the statically unrolled graph for max_gen_len tokens

テキストを生成する

テキストを生成しましょう!言語モデルを促すテキストの seed を設定します。

事前定義済みのシードを使うか、別のオプションとして独自のシードを入力することができます。このテキストは、言語モデルが次に何を生成するのかを促すための言語モデルのシードとして使用されます。

生成される記事の特別な部分の前に、次の特別なトークンを使用することができます。_START_ARTICLE_ は、記事の始まりを示し、_START_SECTION_ はセクションの始まりを示し、_START_PARAGRAPH_ は記事のテキストを生成します。

Predefined Seeds

Enter your own seed (Optional).

Generating text from seed:

_START_ARTICLE_
1882 Prince Edward Island general election
_START_PARAGRAPH_
The 1882 Prince Edward Island election was held on May 8, 1882 to elect members of the House of Assembly of the province of Prince Edward Island, Canada.

Initialize session.

Generate text

The official results from this election were "E.P., Plaint, pre measure, a

また、モデルのほかの出力を見ることも可能です。複雑さ、トークン ID、中間アクティベーション、および埋め込みがあります。

ppl_result
array([23.50764], dtype=float32)
token_ids_result
array([[   8,    3, 6794, 1579, 1582,  721,  489,  448,    8,    5,   26,
        6794, 1579, 1582,  721,  448,   17,  245,   22,  166, 2928, 6794,
          16, 7690,  384,   11,    7,  402,   11, 1172,   11,    7, 2115,
          11, 1579, 1582,  721,    9,  646,   10]], dtype=int32)
activations_result.shape
(12, 1, 39, 768)
embeddings_result
array([[[ 0.12262525,  5.548009  ,  1.4743135 , ...,  2.4388404 ,
         -2.2788858 ,  2.172028  ],
        [-2.3905468 , -0.97108954, -1.5513545 , ...,  8.458472  ,
         -2.8723319 ,  0.6534524 ],
        [-0.83790785,  0.41630274, -0.8740793 , ...,  1.6446769 ,
         -0.9074106 ,  0.3339265 ],
        ...,
        [-0.8054745 , -1.2495526 ,  2.6232922 , ...,  2.893288  ,
         -0.91287214, -1.1259722 ],
        [ 0.64944506,  3.3696785 ,  0.09543293, ..., -0.7839227 ,
         -1.3573489 ,  1.862214  ],
        [-1.2970612 ,  0.5961366 ,  3.3531897 , ...,  3.2853985 ,
         -1.6212384 ,  0.30257902]]], dtype=float32)