翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
BlazingText アルゴリズム
Amazon SageMaker AI BlazingText アルゴリズムは、Word2vec およびテキスト分類アルゴリズムの高度に最適化された実装を提供します。Word2vec アルゴリズムは、感情分析、名前付きエンティティ認識、機械翻訳など、多くの下流の自然言語処理 (NLP) タスクに役立ちます。テキスト分類は、ウェブ検索、情報検索、ランク付け、およびドキュメント分類を実行するアプリケーションにとって重要なタスクです。
Word2vec アルゴリズムは、単語を高品質の分散ベクトルにマッピングします。結果として得られる単語のベクトル表現は、単語埋め込みと呼ばれます。意味的に類似している単語は、互いに接近しているベクトルに対応します。単語の埋め込みでは、そのような方法で単語間の意味関係をキャプチャします。
多くの自然言語処理 (NLP) アプリケーションは、ドキュメントの大規模なコレクションでトレーニングすることによって単語の埋め込みを学習します。これらのトレーニング済みベクトル表現は、セマンティクスおよび単語の分散に関する情報を提供します。通常、その後限られた量のデータでトレーニングされる他のモデルの一般化可能性が向上します。Word2vec アルゴリズムのほとんどの実装は、マルチコア CPU アーキテクチャ向けに最適化されていません。これにより、大規模なデータセットに対するスケーリングが困難になります。
BlazingText アルゴリズムを使用すると、大規模なデータセットに簡単に拡張できます。Word2vec と同様に、Skip-Gram および Continuous Bag-of-Words (CBOW) トレーニングアーキテクチャーが提供されます。教師ありの複数クラス、複数ラベルのテキスト分類アルゴリズムの BlazingText の実装は、カスタム CUDA
BlazingText アルゴリズムは並列化できません。トレーニングに関連するパラメータの詳細については、「Docker Registry Paths for SageMaker Built-in Algorithms」(SageMaker 組み込みアルゴリズムの Docker レジストリパス) を参照してください。
SageMaker AI BlazingText アルゴリズムには以下の機能があります。
-
高度に最適化された CUDA カーネルを使用する、マルチコア CPU または GPU 上の fastText テキスト分類子あるいは GPU 上の Word2Vec の加速されたトレーニング。詳細については、BlazingText: Scaling and Accelerating Word2Vec using Multiple GPUs (BlazingText: 複数の GPU を使用した Word2Vec のスケーリングと加速)
を参照してください。 -
文字 n グラムのベクトル表現を学習することによって、サブワード情報で強化された単語ベクトル
。このアプローチにより BlazingText は、文字 n グラム (サブワード) ベクトルの和としてベクトルを表すことで、未定義 (OOV) 語の意味のあるベクトルを生成することができます。 -
複数の CPU ノード間でのより高速なトレーニングと分散計算を可能にする Word2Vec アルゴリズムの
batch_skipgram
mode
。batch_skipgram
mode
は、Negative Sample Sharing (負のサンプル共有) 戦略を使用してミニバッチングを行い、レベル 1 の BLAS オペレーションをレベル 3 の BLAS オペレーションに変換します。これにより、最新のアーキテクチャーの multiply-add 手順が効率的に活用されます。詳細については、Parallelizing Word2Vec in Shared and Distributed Memory (共有および分散メモリでの Word2Vec の並列処理)を参照してください。
要約すると、BlazingText ではさまざまなタイプのインスタンスで以下のモードがサポートされています。
モード |
Word2Vec (教師なし学習) |
テキスト分類 (教師あり学習) |
---|---|---|
単一の CPU インスタンス |
|
|
単一の GPU インスタンス (1 つ以上の GPU を含む) |
|
1 つの GPU による |
複数の CPU インスタンス |
Batch Skip-gram |
なし |
BlazingText で行われる計算の詳細については、BlazingText: Scaling and Accelerating Word2Vec using Multiple GPUs (BlazingText: 複数の GPU を使用した Word2Vec のスケーリングと加速)
トピック
BlazingText アルゴリズムの入出力インターフェイス
BlazingText アルゴリズムは、スペースで区切られたトークンを含む単一の事前処理済みテキストファイルを想定しています。ファイルの各行には単一の文が含まれている必要があります。複数のテキストファイルに対するトレーニングを行う必要がある場合は、それらを 1 つのファイルに連結して、それぞれのチャネルにファイルをアップロードします。
トレーニングと検証のデータ形式
Word2Vec アルゴリズムのトレーニングと検証のデータ形式
Word2Vec トレーニングの場合は、トレーニングチャネルでファイルをアップロードしてください。他のチャネルはサポートされていません。ファイルには 1 行に 1 つのトレーニング文が含まれている必要があります。
テキスト分類アルゴリズムのトレーニングと検証のデータ形式
教師ありモードの場合は、ファイルモードまたは拡張マニフェストテキスト形式でトレーニングできます。
ファイルモードでトレーニングする
supervised
モードの場合は、トレーニング/検証ファイルに、1 行に 1 つのトレーニング文だけでなく、ラベルも含まれている必要があります。ラベルは、文字列 __label__ を前に付けた単語です。以下はトレーニング/検証ファイルの例です。
__label__4 linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp . __label__2 bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
注記
文中のラベルの順序は関係ありません。
トレーニングチャネルでトレーニングファイルをアップロードし、必要に応じて検証チャネルで検証ファイルをアップロードします。
拡張マニフェストテキスト形式でトレーニングする
CPU インスタンスの教師ありモードは拡張マニフェスト形式もサポートしているため、RecordIO ファイルを作成しなくてもパイプモードでトレーニングを実行できます。この形式を使用する一方で、文のリストとそれに対応するラベルを含む S3 マニフェストファイルを生成する必要があります。マニフェストファイル形式は、各行が 1 つのサンプルを表す JSON Linessource
タグを使用して指定し、ラベルは label
タグを使用して指定できます。source
タグと label
タグの両方を、リクエストで指定されている AttributeNames
パラメータ値の下で指定する必要があります。
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}
ラベルの JSON 配列を指定することで、マルチラベルのトレーニングもサポートされます。
{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}
拡張マニフェストファイルの詳細については、トレーニングジョブの拡張マニフェストファイルを参照してください。
モデルアーティファクトと推論
Word2Vec アルゴリズムのモデルアーティファクト
Word2Vec トレーニングの場合、モデルアーティファクトは、単語からベクトルへのマッピングを含む vectors.txt と、ホスティング、推論、またはその両方のために BlazingText によって使用されるバイナリである vectors.bin から構成されます。vectors.txt は、Gensim や Spacy などの他のツールと互換性のある形式でベクトルを保存します。たとえば、Gensim ユーザーは次のコマンドを実行して vectors.txt ファイルをロードできます。
from gensim.models import KeyedVectors word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) word_vectors.most_similar(positive=['woman', 'king'], negative=['man']) word_vectors.doesnt_match("breakfast cereal dinner lunch".split())
評価パラメータが True
に設定されている場合は、追加のファイル eval.json が作成されます。このファイルには、WS-353 データセットに対する類似度の評価結果 (スピアマンの順位相関係数を使用) が含まれています。WS-353 データセットから、トレーニングコーパスに存在しない単語数が報告されます。
推論リクエストのために、モデルは文字列のリストを含む JSON ファイルを受け取り、ベクトルのリストを返します。単語が語彙内で見つからない場合、推論はゼロのベクトルを返します。トレーニング中にサブワードが True
に設定された場合、モデルは未定義 (OOV) 語のベクトルを生成できます。
JSON リクエスト例
Mime タイプ: application/json
{ "instances": ["word1", "word2", "word3"] }
テキスト分類アルゴリズムのモデルアーティファクト
教師ありトレーニングの出力では、BlazingText ホスティングで使用できる model.bin ファイルが作成されます。推論のために、BlazingText モデルは文のリストを含む JSON ファイルを受け入れ、対応する予測ラベルと確率スコアのリストを返します。各シーケンスはスペースで区切られたトークン、単語、またはその両方の文字列であることが想定されます。
JSON リクエスト例
Mime タイプ: application/json
{ "instances": ["the movie was excellent", "i did not like the plot ."] }
デフォルトでは、サーバーは 1 つの予測、つまり最も高い確率の予測のみを返します。上位 k 個の予測を取得するには、次のように設定で k を設定します。
{ "instances": ["the movie was excellent", "i did not like the plot ."], "configuration": {"k": 2} }
BlazingText の場合、 content-type
パラメータと accept
パラメータは等しくなければなりません。バッチ変換の場合は、どちらも application/jsonlines
である必要があります。これらが異なる場合、Accept
フィールドは無視されます。入力の形式は次のとおりです。
content-type: application/jsonlines {"source": "source_0"} {"source": "source_1"} if you need to pass the value of k for top-k, then you can do it in the following way: {"source": "source_0", "k": 2} {"source": "source_1", "k": 3}
出力の形式は次のとおりです。
accept: application/jsonlines {"prob": [prob_1], "label": ["__label__1"]} {"prob": [prob_1], "label": ["__label__1"]} If you have passed the value of k to be more than 1, then response will be in this format: {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]} {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}
教師あり (テキスト分類) モードと教師なし (Word2Vec) モードの両方で、BlazingText によって生成されたバイナリ (*.bin) は fastText によって相互消費される可能性があり、その逆も同様です。BlazingText によって生成されたバイナリを fastText で使用できます。同様に、fastText で作成されたモデルバイナリを、BlazingText を使用してホストすることができます。
次に、fastText を使用して BlazingText で生成されたモデルを使用する方法の例を示します。
#Download the model artifact from S3 aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz #Unzip the model archive tar -xzf model.tar.gz #Use the model archive with fastText fasttext predict ./model.bin test.txt
ただし、バイナリは CPU とシングル GPU のトレーニングでのみサポートされ、マルチ GPU のトレーニングではバイナリは生成されません。
BlazingText アルゴリズムの EC2 インスタンスの推奨事項
cbow
モードおよび skipgram
モードの場合、BlazingText は 1 つの CPU と 1 つの GPU インスタンスをサポートします。これらのモードは両方とも、subwords
埋め込みの学習をサポートします。精度を犠牲にすることなく最高速度を達成するには、ml.p3.2xlarge インスタンスを使用することをお勧めします。
batch_skipgram
モードの場合、BlazingText は 1 つまたは複数の CPU インスタンスをサポートします。複数のインスタンスでトレーニングする場合、CreateTrainingJob
に渡す S3DataSource
オブジェクトの S3DataDistributionType
フィールドの値を FullyReplicated
に設定します。BlazingText は、マシン間でのデータの分散を処理します。
教師ありテキスト分類モードの場合は、トレーニングデータセットが 2 GB 未満のときには、C5 インスタンスが推奨されます。より大きなデータセットの場合、単一の GPU を備えたインスタンスを使用します。BlazingText は、トレーニングと推論の P2、P3、G4dn、G5 インスタンスをサポートしています。
BlazingText サンプルノートブック
単語ベクトルを生成するために SageMaker AI BlazingText アルゴリズムをトレーニングおよびデプロイするサンプルノートブックについては、「BlazingText を使用した Word2Vec 単語表現の学習 BlazingText