近年、自然言語理解 (NLU) は、モデルの改善とクラウドベースのインフラストラクチャの拡張性とコスト効率によって促進され、ビジネス価値をますます見出しています。 具体的には、 トランスフォーマー 深層学習アーキテクチャ。多くの場合、次の形式で実装されます。 ベルト モデルの開発は大きな成功を収めてきましたが、これらのモデルのトレーニング、微調整、最適化は困難な問題であることが判明しています。 おかげ AWSとHugging Faceのコラボレーション、NLU モデルのトレーニングと最適化がより簡単になりました。 アマゾンセージメーカー SageMaker Python SDK を使用しますが、これらのモデルのラベル付きデータを調達するのは依然として難しく、時間がかかります。
特にビジネス上の関心のある NLU 問題の XNUMX つは、質問応答のタスクです。 この投稿では、次を使用してカスタムの質問応答データセットを構築する方法を示します。 Amazon SageMakerグラウンドトゥルース ハグフェイス質問応答 NLU モデルをトレーニングします。
質問応答の課題
質問応答では、回答が含まれる場合と含まれない場合があるテキストの本文が与えられると、モデルがクエリに対する回答を自動的に生成します。 たとえば、「SageMaker Ground Truth はどのようなワークフローをサポートしていますか?」という質問があったとします。 モデルは、次の段落の「注釈の統合と監査」セグメントを識別できる必要があります。
SageMaker Ground Truth は、注釈の統合と監査ワークフローを通じてラベルの品質を向上させるのに役立ちます。 アノテーションの統合は、XNUMX つ以上のデータ ラベラーからラベル入力を収集し、それらを結合して機械学習モデル用の XNUMX つのデータ ラベルを作成するプロセスです。 組み込みの監査およびレビューのワークフローにより、作業者はラベルの検証を実行し、精度を向上させるために調整を行うことができます。
この問題は、単にキーワード検索を実行するのではなく、モデルが質問の意味を理解する必要があるため、困難です。 この分野の正確なモデルは、インテリジェントなチャットボットを強化し、高品質の音声アシスタント製品を提供し、パーソナライズされた製品の質問応答を通じてオンライン ストアの収益を促進することで、顧客サポート コストを削減できます。 この分野の大規模なデータセットの XNUMX つは、 スタンフォード質問応答データセット (SQuAD)これは、短いテキストの一節を含むモデルを提示し、そのパッセージ内の回答テキスト スパンの位置を予測することをモデルに要求する多様な質問応答データセットです。 SQuAD は、ウィキペディアの一連の記事に対してクラウド ワーカーによって提示された質問で構成される読解データセットです。すべての質問に対する答えは、対応する文章の一部のテキストであるか、そうでなければ回答不可能とマークされています。
SQuAD をビジネス ユースケースに適応させる際の 2.0 つの課題は、ドメイン固有のカスタム データセットを生成することです。 新しい質問と回答のデータセットを作成するこのプロセスには、アノテーターがスパンを強調表示し、それらのスパンに質問を追加できるようにする特殊なユーザー インターフェイスが必要です。 また、回答不可能な質問を含む SQuAD XNUMX 形式をサポートするには、不可能な質問の追加もサポートできなければなりません。 これらの不可能な質問は、与えられたパッセージを使用してどのクエリに答えることができないかをモデルがさらに理解するのに役立ちます。 の カスタムワーカーテンプレート Ground Truth では、質問と回答のデータセットを作成するためのカスタマイズされたアノテーション エクスペリエンスを作業者に提供することで、これらのデータセットの生成を簡素化します。
ソリューションの概要
このソリューションは、カスタム アノテーション ユーザー インターフェイスを使用してドメイン固有のカスタム質問と回答のデータセットにラベルを付ける Ground Truth ラベル付けジョブを作成および管理します。 私たちは SageMaker を使用して、 Hugging Face
カスタム質問応答データセット上で PyTorch を使用して構築された BERT モデル。
提供されているものをデプロイすることでソリューションを実装できます。 AWS CloudFormation AWS アカウントのテンプレート。 AWS CloudFormation は、 AWSラムダ 注釈ユーザー インターフェイスの事前注釈および注釈の統合をサポートする関数。 また、 Amazon シンプル ストレージ サービス (Amazon S3) バケットと AWS IDおよびアクセス管理 ラベル付けジョブの作成時に使用する (IAM) ロール。
この投稿では、次の方法を説明します。
- 独自の質問応答データセットを作成するか、Ground Truth を使用して既存のデータセットを拡張します
- Hugging Face データセットを使用してテキストを結合し、トークン化する
- SageMaker トレーニングを使用して質問応答データに基づいて BERT モデルを微調整する
- モデルを SageMaker エンドポイントにデプロイし、結果を視覚化します
注釈ユーザーインターフェイス
新しいものを使用しています カスタムワーカータスクテンプレート Ground Truth を使用して、既存の SQuAD データセットに新しいアノテーションを追加します。 このソリューションは、ワーカー タスク テンプレートに加えて、アノテーション前の Lambda 関数 (ユーザー インターフェイスへのデータの入力を処理する) とアノテーション後の Lambda 関数 (ラベル付けが完了した後にユーザー インターフェイスから結果を抽出する) を提供します。
このカスタム ワーカー タスク テンプレートを使用すると、右側のウィンドウでテキストを強調表示し、強調表示されたテキストに関連する対応する質問を左側のウィンドウに追加できます。 右側のペインで強調表示されたテキストは、以前に作成した質問に追加することもできます。 また、状況に応じて不可能な問題を追加することもできます。 分隊2.0 フォーマット。 不可能な質問により、モデルはパッセージがクエリに答えることができない場合に、信頼性の低い誤検知の数を減らすことができます。
このユーザー インターフェイスは、SQuAD 2.0 データセットと同じ JSON スキーマを使用します。つまり、複数の記事と段落にわたって操作でき、 前へ および Next ボタン。 ユーザー インターフェイスにより、各アノテーターがタスク送信ステップ中に完了する必要があるラベル付け作業を簡単に監視および決定できます。
注釈 UI が単一の中に含まれているため、 液体 HTML ファイルを使用すると、基本的な JavaScript の知識があれば、ラベル付けエクスペリエンスをカスタマイズできます。 変更することもできます 液体タグ 追加情報をラベル付け UI に渡すことができ、テンプレート自体を変更して、より詳細な作業者の指示を含めることもできます。
推定費用
このソリューションの導入には、人によるラベル付けコストを考慮しないと、最大で約 20 ドルのコストが発生する可能性があります。 Amazon S3、Lambda、SageMaker、および Ground Truth はすべて、 AWS無料利用枠、追加の使用料がかかります。 詳細については、次の価格ページを参照してください。
- Amazon S3 の料金
- AWSLambdaの価格
- Amazon SageMakerの価格
- Amazon SageMaker データのラベル付け料金 – この料金は、使用する労働力の種類によって異なります。 Ground Truth を初めて使用する場合は、プライベート ワークフォースを使用し、ラベル付けジョブの構成をテストするワーカーとして自分自身を含めることをお勧めします。
前提条件
このソリューションを実装するには、次の前提条件を満たしている必要があります。
- An AWSアカウント.
- グラウンド トゥルースに精通している。 詳細については、次を参照してください。 Amazon SageMakerGroundTruthを使用してデータにラベルを付ける.
- AWS CloudFormation に精通していること。 詳細については、 AWS CloudFormation ユーザーガイド.
- SageMaker 労働人口. このデモンストレーションでは、民間の労働力を使用します。 SageMaker コンソールでワークフォースを作成できます。
次の GIF は、プライベート ワークフォースを作成する方法を示しています。 手順については、を参照してください。 労働力のラベリングページを使用してAmazon Cognito労働力を作成する.
CloudFormation スタックを起動する
ソリューションの構造を理解したので、それをアカウントにデプロイして、サンプル ワークフローを実行できるようにします。 ラベル付けパイプラインに関連するすべてのデプロイメント手順は、AWS CloudFormation によって管理されます。 これは、AWS CloudFormation が事前アノテーションおよびアノテーション統合 Lambda 関数と、入出力データを保存するための S3 バケットを作成することを意味します。
AWSリージョンでスタックを起動できます us-east-1
AWSCloudFormationコンソールで 発射スタック ボタン。 別のリージョンでスタックを起動するには、のREADMEにある手順を使用してください。 GitHubリポジトリ.
ノートを操作する
ソリューションがアカウントにデプロイされると、という名前のノートブック インスタンスが作成されます。 gt-hf-squad-notebook
あなたのアカウントで利用可能です。 ノートブックの操作を開始するには、次の手順を実行します。
- Amazon SageMaker コンソールで、ノートブック インスタンスのページに移動します。
- 選択する JupyterLabを開く をクリックしてインスタンスを開きます。
- インスタンス内でリポジトリを参照します。
hf-gt-custom-qa
そしてノートを開いてくださいhf_squad_finetuning.ipynb
. - 選択する
conda_pytorch_p38
あなたのカーネルとして。
ノートブック インスタンスを作成してノートブックを開いたので、ノートブック内でセルを実行してソリューションを操作できます。 この投稿の残りの部分では、ノートブックの各セクションに追加の詳細を記載します。
データをダウンロードして検査する
SQuADデータセット トレーニング データセットとテストおよび開発データセットが含まれています。 ノートブックは SQuAD2.0 データセットをダウンロードしますが、ノートブックのセルを変更することで、使用する SQuAD のバージョンを選択できます。 データをダウンロードして検査する.
SQuAD は、Pranav Rajpurkar、Jian Zhang、Konstantin Lopyrev、Percy Liang によって作成されました。 詳細については、を参照してください。 原紙 および データセット。 SQuAD は、以下に基づいて著者によってライセンスされています。 クリエイティブ コモンズ 表示 - 継承 4.0 国際公衆ライセンス.
SQuAD の質問と回答のペアの例を見てみましょう。
段落タイトル: 免疫システム
免疫システムは、病気から身を守るための生物内の多くの生物学的構造とプロセスからなるシステムです。 免疫システムが適切に機能するためには、ウイルスから寄生虫に至るまで、病原体として知られるさまざまな病原体を検出し、それらを生物自体の健康な組織から区別する必要があります。 多くの種では、免疫系は、自然免疫系と適応免疫系、体液性免疫と細胞性免疫などのサブシステムに分類できます。 ヒトでは、血液脳関門、血液脳脊髄液関門、および同様の脳液関門が、脳を保護する神経免疫系から末梢免疫系を分離しています。
質問: 免疫システムは生物を何から守りますか?
答え:病気
モデルをロードする
SQuAD で質問と回答のペアの例を確認したので、質問応答用に微調整できるモデルをダウンロードできます。 Hugging Face を使用すると、大規模な事前トレーニングを受けたベース モデルを簡単にダウンロードし、別の下流タスク用に再初期化できます。 この場合、ダウンロードするのは、 distilbert-base-uncased
モデルを作成し、それを使用して質問応答に再利用します。 AutoModelForQuestionAnswering
ハグフェイスからのクラス。 また、 AutoTokenizer
クラスを使用して、モデルの事前トレーニングされたトークナイザーを取得します。 この投稿の後半では、使用するモデルについて詳しく説明します。
BERT 入力の表示
BERT では、テキスト データを数値表現に変換する必要があります。 トークン。 さまざまなトークナイザーが利用可能です。 次のトークンは、設定された語彙を使用してインスタンス化する BERT 用に特別に設計されたトークナイザーによって作成されました。 各トークンは語彙内の単語にマップされます。 変化した免疫システムの質問と、推論のために BERT に提供するコンテキストを見てみましょう。
モデル推論
BERT が入力として受け取るものを理解したところで、モデルから推論結果を取得する方法を見てみましょう。 次のコードは、以前に生成されたトークン化された入力を使用し、モデルから推論結果を返す方法を示しています。 BERT が生のテキストを入力として受け入れることができないのと同様に、生のテキストを出力として生成することもできません。 BERT が回答として識別した段落内の開始点と終了点を特定することで、BERT の出力を翻訳します。 次に、その出力をトークンにマッピングし、英語のテキストに戻します。
翻訳結果は以下の通りです。
質問: 免疫システムは生物を何から守りますか?
答え:病気
オーグメントSquad
次に、追加のラベル付きデータを取得するために、 カスタムワーカータスクテンプレート グラウンドトゥルースで。 まず、SQuAD 形式で新しい記事を作成します。 ノートブックはこのファイルをリポジトリから Amazon S3 にコピーしますが、実行前に自由に編集してください。 オーグメントSquad 細胞。 SQuAD の形式は次のコードに示されています。 各 SQuAD JSON ファイルには、 data
鍵。 各記事には、 title
フィールドと XNUMX つ以上の段落。 これらの段落には、と呼ばれるテキストのセグメントが含まれています。 context
および関連する質問については、 qas
リスト。 アノテーションを最初から付けているため、 qas
リストは空であり、コンテキストを提供するだけです。 ユーザー インターフェイスは段落と記事の両方をループできるため、各ワーカー タスクを必要に応じて大きくしたり小さくしたりできます。
サンプル SQuAD データ ファイルを生成した後、Ground Truth を作成する必要があります。 拡張マニフェストファイル これは入力データを指します。 これを行うには、「」を含む JSON 行形式のファイルを生成します。source
」キーは、入力 SQuAD データを保存した Amazon S3 内の場所に対応します。
ラベル付けポータルにアクセスする
ジョブを Ground Truth に送信すると、生成されたラベル付けジョブを Ground Truth コンソールで表示できます。
ラベル付けを実行するには、前提条件の手順の一部として作成したワーカー ポータル アカウントにログインする必要があります。 数分間の前処理の後、ジョブはワーカー ポータルで利用できるようになります。 タスクを開くと、Q&A 注釈用のカスタム ワーカー テンプレートが表示されます。 質問を追加するには、コンテキスト内のテキストのセクションを強調表示してから、 質問を追加.
ラベル付けジョブのステータスを確認する
送信後、実行できます。 ラベル付けジョブのステータスを確認する セルをクリックして、ラベル付けジョブが完了したかどうかを確認します。 完了するまで待ってから、次のセルに進みます。
ラベル付きデータをロードする
ラベル付け後、出力マニフェストにはラベル属性名のエントリが含まれます (この場合は squad-1626282229
) トレーニング中に使用できる SQuAD 形式のデータへの S3 URI が含まれています。 次の出力マニフェストの内容を参照してください。
マニフェストの各行は、単一のワーカー タスクに対応します。
SQuAD列車セットをロードする
ハグフェイスには データセットパッケージ これにより、SQuAD をダウンロードして前処理する機能が提供されますが、カスタムの質問と回答を追加するには、少し処理する必要があります。 SQuAD は一連のトピックを中心に構成されています。 各トピックにはさまざまな異なるコンテキスト ステートメントがあり、各コンテキスト ステートメントには質問と回答のペアがあります。 トレーニング用に独自の質問を作成したいため、質問を SQuAD と組み合わせる必要があります。 幸いなことに、注釈はすでに SQuAD 形式になっているため、ラベルの例を取得して、新しいトピックとして既存の SQuAD データに追加できます。
ハグ顔データセット オブジェクトを作成する
データを Hugging Face のデータセット形式に変換するには、いくつかのオプションがあります。 使用できます ロードデータセット この場合、データセット オブジェクトとして読み込まれる CSV、JSON、またはテキスト ファイルを指定できます。 供給することもできます load_dataset
処理スクリプトを使用して、ファイルを目的の形式に変換します。 この投稿では、代わりに Dataset.from_dict()
このメソッドを使用すると、データセット オブジェクトを作成するためのメモリ内辞書を提供できます。 データセットの特徴も定義します。 を使用して機能を表示できます Hugging Face のデータセット ビューア、次のスクリーンショットに示すように。
弊社の特徴は以下の通りです。
- ID – テキストのID
- タイトル – トピックに関連付けられたタイトル
- コンテキスト – モデルが答えを見つけるために検索する必要があるコンテキスト ステートメント
- 質問 – モデルが尋ねられている質問
- 回答 – 受け入れられた回答テキストとコンテキストステートメント内の場所
Hugging Face データセットを使用すると、このスキーマを簡単に定義できます。
データセット オブジェクトを作成した後、次のことを行う必要があります。 トークン化する テキスト。 モデルは生のテキストを入力として受け入れることができないため、テキストを理解できる数値入力に変換する必要があります。 トークン化。 トークン化はモデル固有であるため、微調整するモデルを理解しましょう。 私たちが使用しているのは、 distilbert-base-uncased モデル。 これは BERT に非常によく似ています。入力エンベディング、マルチヘッド アテンションを使用します (この操作の詳細については、「 図解トランス)、フィードフォワード層ですが、パラメータは元の BERT 基本モデルの半分です。 次の初期モデル レイヤーを参照してください。
モデルのタイトルの各コンポーネントを分析してみましょう。 名前 distilbert
は、これが BERT 基本モデルの蒸留版であり、と呼ばれるプロセスを通じて取得されるという事実を示します。 知識蒸留。 知識の蒸留により、トレーニング データだけでなく、より大きな事前トレーニング済み教師モデルからの同じトレーニング セットへの応答にも基づいて、より小規模な学生モデルをトレーニングすることができます。 base
はモデルのサイズを指します。この場合、モデルは (BERT 大型モデルとは対照的に) BERT 基本モデルから抽出されました。 uncased
トレーニングの対象となったテキストを指します。 この場合、テキストでは大文字と小文字が区別されませんでした。 トレーニングされたテキストはすべて小文字でした。 の uncased
この側面は、テキストをトークン化する方法に直接影響します。 ありがたいことに、Hugging Face では、変圧器モデルのダウンロードに簡単にアクセスできることに加えて、モデルに付随するトークナイザーも提供しています。 また、カスタマイズされたトークナイザーもダウンロードしました。 distilbert-base-uncased model
これを使ってテキストを変換します。
データセット クラスのもう XNUMX つの特徴は、マップ関数と並行して前処理とトークン化を実行できることです。 処理関数を定義し、それをmapメソッドに渡します。
質問に答えるために、Hugging Face にはいくつかのコンポーネントが必要です (これらのコンポーネントは 用語集):
- 注意マスク – どのトークンに注意を払うべきかをモデルに示すマスク。主に実際のテキストとパディングトークンを区別するために使用されます。
- 開始位置 – 本文中の解答の開始位置
- 終了位置 – 本文中の解答の終了位置
- 入力 ID – トークンを語彙にマッピングするトークン インデックス
トークナイザーはテキストをトークン化しますが、回答の開始位置と終了位置を明示的に取得する必要があるため、カスタム前処理関数を定義しました。 入力の準備ができたので、トレーニングを開始しましょう。
トレーニング ジョブを開始する
ノートブックでトレーニングを実行できますが、Q&A モデルを適切な時間内にトレーニングするために必要なインスタンスのタイプ (p3 インスタンスと p4 インスタンス) はかなり強力です。 これらのインスタンスは、ノートブックを実行したり永続的に実行するには過剰になる傾向があります。 アマゾン エラスティック コンピューティング クラウド (Amazon EC2) インスタンス。 ここで SageMaker トレーニングが登場します。SageMaker トレーニングを使用すると、トレーニング ジョブの期間中のみ稼働している指定されたインスタンスでトレーニング ジョブを起動できます。 これにより、4 個の NVIDIA A24 GPU を備えた p8d.100xlarge のような大規模なインスタンスで実行できるようになりますが、オフにし忘れた場合に多額の請求が発生することを心配する必要はありません。 また、次のような他の SageMaker 機能にも簡単にアクセスできます。 SageMakerの実験 ML トレーニングの実行を追跡するため、および SageMakerデバッガー トレーニングジョブを理解してプロファイリングするために。
現地研修
まず、Hugging Face でのモデルのトレーニングがローカルでどのように機能するかを理解してから、SageMaker で実行するために行う調整について見ていきましょう。
ハグフェイスはトレーナークラスを利用することでトレーニングを簡単にします。 トレーナー クラスを使用すると、モデル、トレーニングおよび検証データセット、ハイパーパラメーター、さらにはトークナイザーを渡すことができます。 モデルとトレーニングおよび検証セットがすでにあるため、ハイパーパラメータを定義するだけで済みます。 これは、 TrainingArguments
クラス。 これにより、学習率、バッチ サイズ、エポック数、さらには重みの減衰や学習率のスケジューリング戦略などの詳細なパラメーターなどを指定できるようになります。 定義した後、 TrainingArguments
、モデル、トレーニング セット、検証セット、および引数を渡して、トレーナー クラスをインスタンス化できます。 その後、単に呼び出すことができます trainer.train()
をクリックしてモデルのトレーニングを開始します。 次のコード ブロックは、ローカル トレーニングを実行する方法を示しています。
S3にデータを送信する
SageMaker トレーニングで同じことを行うのは簡単です。 最初のステップは、モデルがアクセスできるようにデータを Amazon S3 に配置することです。 SageMaker トレーニングではデータ ソースを指定できます。 Amazon S3 などのソースを使用できます。 AmazonElasticファイルシステム (Amazon EFS)、または 光沢のためのAmazonFSx 高性能のデータ取り込みを実現します。 私たちの場合、拡張された SQuAD データセットはそれほど大きくないため、Amazon S3 が適切な選択です。 トレーニング データを Amazon S3 のフォルダーにアップロードし、SageMaker がトレーニング インスタンスを起動すると、指定した場所からデータをダウンロードします。
モデルをインスタンス化します
トレーニング ジョブを開始するには、組み込みの Hugging Face 推定器を使用できます。 SageMaker SDK。 SageMaker は、estimator クラスを使用して、トレーニング ジョブのパラメーターと、トレーニングに使用するインスタンスの数とタイプを定義します。 SageMaker トレーニングは、Docker コンテナの使用を中心に構築されています。 SageMaker のデフォルトのコンテナを使用することも、トレーニング用に独自のカスタム コンテナを提供することもできます。 Hugging Face モデルの場合、SageMaker には、Hugging Face トレーニング ジョブを実行するために必要なすべての依存関係を備えた組み込みの Hugging Face コンテナがあります。 必要なのは、Hugging Face コンテナがエントリ ポイントとして使用するトレーニング スクリプトを定義することだけです。
このトレーニング スクリプトでは、引数を定義し、トレーニング コードと同様にハイパーパラメータのセットの形式でエントリ ポイントに渡します。 トレーニング コードはローカルで実行している場合と同じです。 単純に使用できます TrainingArguments
そしてそれらをトレーナー オブジェクトに渡します。 唯一の違いは、モデルの出力場所を指定する必要があることです。 /opt/ml/model
これにより、SageMaker トレーニングがそれを取得し、パッケージ化し、Amazon S3 に送信できるようになります。 次のコード ブロックは、Hugging Face 推定器をインスタンス化する方法を示しています。
モデルを微調整する
特定のトレーニング ジョブでは、3.8 つの V4 GPU で構成される p100xlarge インスタンスを使用します。 トレーナー クラスはマルチ GPU インスタンスでのトレーニングを自動的にサポートするため、これを考慮した追加のセットアップは必要ありません。 バッチ サイズ 16、学習率 4e5 で XNUMX つのエポックにわたってモデルをトレーニングします。 また、モデルの精度に影響を与えることなく数値精度を下げることができる領域で混合精度を使用する混合精度トレーニングも有効にしています。 これにより、利用可能なメモリとトレーニング速度が向上します。 トレーニング ジョブを開始するには、 fit
弊社からの方法 huggingface_estimator
とに提供されます。
モデルのトレーニングが完了したら、モデルをローカルにダウンロードし、ノートブックのメモリにロードしてテストできます。これはノートブックで実証されています。 ここでは、SageMaker エンドポイントとしてデプロイする別のオプションに焦点を当てます。
トレーニング済みモデルをデプロイする
SageMaker を使用すると、トレーニング用のユーティリティを提供するだけでなく、データ サイエンティストや ML エンジニアがトレーニングされたモデルに REST エンドポイントを簡単にデプロイできるようになります。 SageMaker 内外でトレーニングされたモデルをデプロイできます。 詳細については、以下を参照してください。 Amazon SageMaker にモデルをデプロイする.
私たちのモデルは SageMaker でトレーニングされているため、エンドポイントとしてデプロイするのに適した形式になっています。 トレーニングと同様に、モデル、サービス提供コード、エンドポイントとしてデプロイするインスタンスの数とタイプを定義する SageMaker モデル クラスを定義します。 また、トレーニングと同様に、サービス提供は Docker コンテナに基づいており、組み込みの SageMaker コンテナのいずれかを使用することも、独自のコンテナを提供することもできます。 この投稿では、組み込みの PyTorch サービス コンテナーを使用するため、エンドポイントを起動して実行するには、いくつかのことを定義するだけで済みます。 サービス提供コードには XNUMX つの関数が必要です。
- モデル_fn – エンドポイントがモデルをロードする方法を定義します (これは XNUMX 回だけ実行され、その後の予測のためにメモリに保存されます)
- 入力_fn – 入力がどのように逆シリアル化され、処理されるかを定義します
- 予測_fn – モデルが入力に対してどのように予測を行うかを定義します
- 出力_fn – エンドポイントが出力データをどのようにフォーマットし、リクエストを行っているクライアントに送り返すかを定義します。
これらの関数を定義した後、エンドポイントをデプロイし、コンテキスト ステートメントと質問を渡し、予測された答えを返すことができます。
モデルの結果を視覚化する
コンテキスト ステートメントを送信して回答を受信できる SageMaker エンドポイントをデプロイしたため、元の SQuAD ビューア内に戻って結果の推論を視覚化し、モデルがパッセージ コンテキストで見つけたものをより適切に視覚化できます。 これを行うには、推論の結果を再フォーマットして SQuAD 形式に戻し、ワーカー テンプレートの Liquid タグを SQuAD 形式の JSON に置き換えます。 次に、次のスクリーンショットに示すように、ワーカー テンプレート内で結果の UI を iframe して、単一のノートブックのコンテキスト内で結果を繰り返し確認できます。 左側の各質問をクリックすると、そのクエリに一致する右側のテキストの範囲が強調表示されます。 質問が選択されていない場合、以下に示すように、すべてのテキスト スパンが右側で強調表示されます。
クリーンアップ
将来の料金が発生しないようにするには、 クリーンアップ ノートブックのセクションをクリックして、SageMaker エンドポイント、生データセットと処理済みデータセットを含む S3 オブジェクト、CloudFormation スタックを含むすべてのリソースを削除します。 削除が完了したら、現在のノートブック スクリプトをホストしているノートブック インスタンスを必ず停止して削除してください。
まとめ
この投稿では、Ground Truth を使用して独自の質問応答データセットを作成し、それを SQuAD と組み合わせて、SageMaker を使用して独自の質問応答モデルをトレーニングおよびデプロイする方法を学びました。 ノートブックを完了すると、カスタム Q&A データセットでトレーニングされた SageMaker エンドポイントがデプロイされます。 SageMaker エンドポイントは標準の REST API を通じて利用できるため、このエンドポイントは本番 NLU ワークフローに統合する準備ができています。 SQuAD 2.0 形式の注釈付きカスタム データセットもあるので、既存のモデルを再トレーニングしたり、他の質問応答モデル アーキテクチャのトレーニングを試したりすることができます。 最後に、ワーカー テンプレートをローカル ノートブックにロードすることで、推論の結果を迅速に視覚化するメカニズムが得られます。
試してみる ノートブック、独自の質問でそれを拡張し、NLU ユースケースに合わせて独自のカスタム質問応答モデルをトレーニングして展開します。
幸せな建物!
著者について
ジェレミー・フェルトラッコ アマゾンウェブサービスのアマゾンMLソリューションラボのソフトウェア開発エンジニアです。 彼は、コンピュータービジョン、ロボット工学、機械学習のバックグラウンドを利用して、AWSのお客様がAIの採用を加速できるよう支援しています。
ヴィディヤ・サーガル・ラヴィパティ のマネージャーです Amazon MLソリューションラボ、彼は大規模な分散システムでの豊富な経験と機械学習への情熱を活用して、さまざまな業界のAWSのお客様がAIとクラウドの採用を加速できるよう支援しています。 以前は、Amazonのコネクティビティサービスの機械学習エンジニアであり、パーソナライズおよび予知保全プラットフォームの構築を支援していました。
アイザック・プリヴィテラ は、Amazon Machine Learning Solutions Labのシニアデータサイエンティストであり、顧客のビジネス上の問題に対処するために、特注の機械学習およびディープラーニングソリューションを開発しています。 彼は主にコンピュータービジョンの分野で働いており、AWSのお客様が分散トレーニングとアクティブラーニングを利用できるようにすることに重点を置いています。
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- 私たちについて
- 加速する
- アクセス
- 従った
- 会計
- 正確な
- 越えて
- アクティブ
- 添加
- NEW
- 住所
- 養子縁組
- エージェント
- AI
- すべて
- 許可
- 既に
- Amazon
- Amazon Webサービス
- 量
- 別の
- 回答
- API
- 建築
- AREA
- 引数
- 周りに
- 記事
- 物品
- アシスタント
- 注意
- 監査
- 増強された
- 著者
- 自動化
- オートマチック
- 利用できます
- AWS
- 背景
- バリア
- 障壁
- 開始
- さ
- 以下
- ビル
- ビット
- ブロック
- ボディ
- 国境
- ビルド
- 内蔵
- ビジネス
- コール
- 取得することができます
- キャプチャー
- 例
- 挑戦する
- 挑戦
- 課金
- 選択する
- class
- クラウド
- コード
- 収集
- コンポーネント
- 計算
- コンピュータ
- 接続性
- 領事
- 圧密
- コンテナ
- コンテナ
- 含まれています
- 中身
- 請負業者
- 対応する
- コスト
- 作ります
- 作成した
- 作成します。
- 作成
- 電流プローブ
- カスタム
- 顧客
- カスタマーサービス
- Customers
- データ
- データサイエンティスト
- より深い
- 配信する
- 実証します
- 実証
- 依存
- 展開します
- 展開
- 展開する
- 展開
- 設計
- 詳細な
- 細部
- 決定する
- 開発
- 異なります
- 難しい
- 直接に
- 病気
- 配布
- デッカー
- そうではありません
- ダウン
- ダウンロード
- ダウンロード
- 運転
- 間に
- 簡単に
- 有効にする
- エンドポイント
- エンジニア
- エンジニア
- 英語
- 評価
- 例
- 既存の
- 体験
- 抽出物
- 顔
- 特徴
- 特徴
- 最後に
- 名
- フォーカス
- 焦点
- フォロー中
- フォーム
- 形式でアーカイブしたプロジェクトを保存します.
- フォワード
- 発見
- 無料版
- function
- さらに
- 未来
- 生成する
- 生成
- 世代
- GitHubの
- 行く
- 良い
- 助けます
- ことができます
- 高品質
- 特徴
- 強調表示された
- 非常に
- ホスティング
- 認定条件
- How To
- HTTPS
- 巨大な
- 人間
- 人間
- 何百
- 識別する
- 識別
- アイデンティティ
- 画像
- 実装する
- 実装
- 不可能
- 改善します
- (株)
- include
- 含ま
- 含めて
- ますます
- 産業を変えます
- 情報
- インフラ関連事業
- 統合
- インテリジェント-
- 関心
- インタフェース
- 世界全体
- 直観的な
- IT
- 自体
- JavaScriptを
- ジョブ
- Jobs > Create New Job
- キー
- 知識
- 既知の
- ラボ
- ラベリング
- ラベル
- 言語
- 大
- より大きい
- 起動する
- 学んだ
- 学習
- コメントを残す
- レバレッジ
- ライセンス供与
- 可能性が高い
- LINE
- 液体
- リスト
- 負荷
- ローディング
- ローカル
- 局部的に
- 場所
- 機械
- 機械学習
- 作る
- 作成
- マネージド
- マネージャー
- 地図
- マッピング
- ゲレンデマップ
- マーケティング
- mask
- マッチング
- 意味
- 手段
- メモリ
- 混合
- ML
- モデル
- モニター
- 他には?
- 最も
- の試合に
- ナチュラル
- ノート
- 数
- 得
- 提供
- オファー
- オンライン
- 開いた
- 開設
- 操作する
- オペレーティング
- 操作
- 最適化
- 最適化
- オプション
- オプション
- 注文
- 組織
- その他
- さもないと
- 自分の
- 部
- 特定の
- 特に
- 支払う
- 実行
- 個人化
- プラットフォーム
- ポイント
- ポイント
- ポータル
- 位置
- 正の
- 強力な
- 予測する
- 予測
- 価格設定
- プライベート
- 問題
- 問題
- プロセス
- ラボレーション
- 処理
- プロダクト
- 生産
- 製品
- プロファイリング
- 提供します
- は、大阪で
- 提供
- 公共
- 質問と回答
- 品質
- 質問
- すぐに
- Raw
- リーディング
- 合理的な
- 受け取ります
- 減らします
- 倉庫
- 表現
- リソース
- REST
- 結果
- return
- 収入
- レビュー
- ロボット工学
- 円形
- ラン
- ランニング
- スケーラビリティ
- 科学者
- 科学者たち
- SDDK
- を検索
- セキュリティ
- セグメント
- セグメンテーション
- セグメント
- 選択
- サービス
- サービング
- セッションに
- ショート
- 示す
- 同様の
- 簡単な拡張で
- サイズ
- スキル
- 小さい
- So
- ソフトウェア
- ソフトウェア開発
- 固体
- 溶液
- ソリューション
- 一部
- スペース
- 特別
- 専門の
- 特に
- スタック
- 標準
- start
- ステートメント
- 文
- ストレージ利用料
- 店舗
- 戦略
- 構造化された
- 学生
- 成功した
- 供給
- サポート
- サポート
- システム
- タスク
- test
- 介して
- 時間
- 時間がかかる
- 役職
- トークン
- トークン化
- トークン化された
- トークン
- トピック
- トーチ
- 追跡
- トレーニング
- 最適化の適用
- ui
- わかる
- 理解する
- us
- つかいます
- 活用する
- 値
- 多様
- ベンダー
- Verification
- 対
- 垂直
- ビデオ
- 詳しく見る
- ウイルス
- ビジョン
- ボイス
- wait
- ウェブ
- Webサービス
- この試験は
- while
- 誰
- Wikipedia
- 以内
- 無し
- 仕事
- 労働者
- 労働人口
- 作品
- 寄生虫
- 年