言い換えられたテキストを特定することは、多くのユースケースでビジネス上の価値があります。 たとえば、文の言い換えを識別することにより、テキスト要約システムは冗長な情報を削除できます。 別の用途は、盗用された文書を特定することです。 この投稿では、 ハグ顔 トランスオン アマゾンセージメーカー いくつかのステップで言い換えられた文のペアを特定します。
真に堅牢なモデルは、使用されている言語が完全に異なる場合でも言い換えられたテキストを識別でき、また、使用されている言語に語彙の重複が多い場合にも相違点を識別できます。 この投稿では、後者の側面に焦点を当てます。 具体的には、語彙の重複が多く、意味が大きく異なる、または正反対である XNUMX つの文の違いを識別できるモデルをトレーニングできるかどうかを検討します。 たとえば、次の文はまったく同じ単語ですが、反対の意味を持ちます。
- ニューヨークからパリまで飛行機に乗りました
- パリからニューヨーク行きの飛行機に乗りました
ソリューションの概要
次の大まかな手順を説明します。
- 環境をセットアップします。
- データを準備します。
- データセットをトークン化します。
- モデルを微調整します。
- モデルをデプロイして推論を実行します。
- モデルのパフォーマンスを評価します。
環境のセットアップを省略したい場合は、次のノートブックを使用できます。 GitHubの SageMaker でコードを実行します。
Hugging Face と AWS は、SageMaker での Hugging Face モデルのトレーニングをさらに容易にするパートナーシップを 2022 年初めに発表しました。 この機能は、Hugging Face の開発を通じて利用可能です。 AWS ディープラーニング コンテナ (DLC)。 これらのコンテナには、Hugging Face Transformers、Tokenizer、および Datasets ライブラリが含まれており、これらのリソースをトレーニングや推論ジョブに使用できるようになります。 利用可能な DLC イメージのリストについては、を参照してください。 利用可能なディープラーニングコンテナの画像。 これらは維持され、セキュリティ パッチで定期的に更新されます。 これらの DLC と フェイスPythonSDKを抱き締める 以下では GitHubレポ.
PAWS データセット
言い換えることなく高度な語彙の重複を示す効率的な文ペアのデータセットが不足していることに気づきました。 PAWS 2019 年にリリースされたデータセットは、自然言語処理 (NLP) コミュニティに言い換え検出モデルのトレーニングと評価のための新しいリソースを提供することを目的としていました。 PAWS 文ペアは、次の XNUMX つのステップで生成されます。 Wikipedia と Quoraの質問ペア (QQP) データセット。 言語モデルは、まず文ペア内の単語を同じ Bag of Words (BOW) と交換して、文ペアを生成します。 次に、逆翻訳ステップにより、BOW の重複が多いが異なる語順を使用した言い換えが生成されます。 最終的な PAWS データセットには、合計 108,000 個の人間ラベル付きペアと 656,000 個のノイズラベル付きペアが含まれています。
この投稿では、 PAWS-Wiki ラベル付き (最終版) ハグフェイスからのデータセット。 Hugging Face はすでにデータ分割を実行しており、その結果、トレーニング データセットには 49,000 の文のペアが、検証データセットとテスト データセットにはそれぞれ 8,000 の文のペアが生成されます。 トレーニング データセットからの 1 つの文ペアの例を次の例に示します。 ラベル XNUMX は、XNUMX つの文が互いの言い換えであることを示します。
文 1 | 文 2 | ラベル |
交換可能ですが、2 台の車両の車体部分は似ていません。 | 似ていますが、2 台の車両のボディ部分は交換できません。 | 0 |
カッツは 1947 年にスウェーデンで生まれ、1 歳のときにニューヨーク市に移りました。 | カッツは 1947 年にスウェーデンで生まれ、XNUMX 歳のときにニューヨークに移りました。 | 1 |
前提条件
次の前提条件を満たしている必要があります。
- AWS アカウントをお持ちでない場合は、アカウントにサインアップしてください。 詳細については、「」を参照してください。 Amazon SageMaker の前提条件をセットアップする.
- 使い始める SageMakerノートブックインスタンス.
- 権利を設定する AWS IDおよびアクセス管理 (IAM) 権限。 詳細については、「」を参照してください。 SageMakerの役割.
環境をセットアップする
モデルの微調整のためにデータの調査と準備を開始する前に、環境をセットアップする必要があります。 まず、SageMaker ノートブック インスタンスを起動しましょう。 AWS アカウントで AWS リージョンを選択し、指示に従ってください。 SageMaker ノートブック インスタンスを作成する。 ノートブック インスタンスが起動するまでに数分かかる場合があります。
ノートブック インスタンスの実行中に、 conda_pytorch_p38
カーネルタイプとして。 Hugging Face データセットを使用するには、まず Hugging Face ライブラリをインストールしてインポートする必要があります。
次に、SageMaker セッションを確立しましょう。 デフォルトを使用します Amazon シンプル ストレージ サービス PAWS データセットとモデルアーティファクトを保存するための SageMaker セッションに関連付けられた (Amazon S3) バケット:
データを準備する
PAWS データセットの Hugging Face バージョンをロードできます。 load_dataset()
指図。 この呼び出しでは、Hugging Face GitHub リポジトリから PAWS Python 処理スクリプトをダウンロードしてインポートします。次に、スクリプトに保存されている元の URL から PAWS データセットをダウンロードし、データをドライブ上の Arrow テーブルとしてキャッシュします。 次のコードを参照してください。
事前トレーニングされた BERT モデルの微調整を始める前に、ターゲット クラスの分布を見てみましょう。 このユースケースでは、PAWS データセットにはバイナリ ラベルがあります (0 は文のペアが言い換えではないことを示し、1 は言い換えであることを示します)。 次のコードに示すように、クラス分布を表示するための縦棒グラフを作成してみましょう。 トレーニング セットにわずかなクラスの不均衡の問題があることがわかります (陰性サンプル 56% 対 陽性サンプル 44%)。 ただし、不均衡は十分に小さいため、クラスの不均衡緩和手法の採用を回避できます。
データセットをトークン化する
微調整を始める前に、データセットをトークン化する必要があります。 出発点として、 roberta-base
変成器。 私たちが選んだのは roberta-base
これは、英語データの大規模なコーパスで事前トレーニングされた汎用トランスフォーマーであり、さまざまな NLP タスクで高いパフォーマンスを頻繁に示しているためです。 このモデルは最初に論文で紹介されました RoBERTa:ロバストに最適化されたBERT事前トレーニングアプローチ.
文に対してトークン化を実行します。 roberta-base
Hugging Face のトークナイザー。バイトレベルのバイト ペア エンコーディングを使用してドキュメントをトークンに分割します。 RoBERTa トークナイザーの詳細については、以下を参照してください。 ロベルタトークナイザー。 入力は文のペアであるため、両方の文を同時にトークン化する必要があります。 ほとんどの BERT モデルでは、入力が固定のトークン化された入力長を持つ必要があるため、次のパラメーターを設定します。 max_len=128
& truncation=True
。 次のコードを参照してください。
BERT モデルを微調整するための最後の前処理ステップは、トークン化されたトレーニング データセットと検証データセットを PyTorch テンソルに変換し、S3 バケットにアップロードすることです。
モデルを微調整する
データの準備が完了したので、事前トレーニングされたデータを微調整する準備が整いました。 roberta-base
言い換え識別タスクのモデル。 SageMaker Hugging Face Estimator クラスを使用して、XNUMX つのステップで微調整プロセスを開始できます。 最初のステップは、トレーニング ハイパーパラメーターとメトリック定義を指定することです。 メトリクス定義変数は、Hugging Face Estimator にモデルのトレーニング ログからどのタイプのメトリクスを抽出するかを指示します。 ここでは、各トレーニング エポックで検証セットのメトリクスを抽出することに主に興味があります。
XNUMX 番目のステップでは、Hugging Face Estimator をインスタンス化し、微調整プロセスを開始します。 .fit()
方法:
指定されたハイパーパラメータを使用した微調整プロセスには約 30 分かかります。
モデルをデプロイして推論を実行する
SageMaker は、ユースケースに応じて複数の導入オプションを提供します。 一度に XNUMX つの予測を行う永続的なリアルタイム エンドポイントの場合は、次の使用をお勧めします。 SageMakerリアルタイムホスティングサービス。 トラフィックの急増の間にアイドル期間があり、コールド スタートを許容できるワークロードがある場合は、次の使用をお勧めします。 サーバーレス推論。 サーバーレス エンドポイントは、コンピューティング リソースを自動的に起動し、トラフィックに応じてスケールインまたはスケールアウトするため、インスタンス タイプを選択したり、スケーリング ポリシーを管理したりする必要がなくなります。 微調整されたハグ顔モデルをリアルタイム推論エンドポイントとサーバーレス推論エンドポイントの両方にデプロイする方法を示します。
リアルタイム推論エンドポイントへのデプロイ
を使用して、SageMaker 内のリアルタイム推論ホスティングにトレーニング オブジェクトをデプロイできます。 .deploy()
方法。 受け入れられるパラメータの完全なリストについては、を参照してください。 ハグフェイスモデル。 まず、次のパラメーターを渡して、モデルを XNUMX つのインスタンスにデプロイしましょう。 initial_instance_count
, instance_type
, endpoint_name
。 次のコードを参照してください。
モデルのデプロイには数分かかります。 モデルがデプロイされたら、未確認のテスト データセットからサンプル レコードを推論のためにエンドポイントに送信できます。
サーバーレス推論エンドポイントへのデプロイ
トレーニング オブジェクトをサーバーレス エンドポイントにデプロイするには、まずサーバーレス構成ファイルを指定する必要があります。 memory_size_in_mb
& max_concurrency
引数:
memory_size_in_mb
サーバーレス エンドポイントの合計 RAM サイズを定義します。 最小 RAM サイズは 1024 MB (1 GB) で、最大 6144 MB (6 GB) まで拡張できます。 一般に、モデルのサイズと少なくとも同じサイズのメモリ サイズを選択することを目指す必要があります。 max_concurrency
単一のエンドポイントに対して同時に処理できる同時呼び出しの数 (最大 50 個の同時呼び出し) の割り当てを定義します。
また、Hugging Face 推論画像 URI を指定する必要があります。これは、次のコードを使用して取得できます。
サーバーレス構成ファイルが完成したので、リアルタイム推論エンドポイントと同じ方法でサーバーレス エンドポイントを作成できます。 .deploy()
方法:
エンドポイントは数分以内に作成されます。
モデル推論を実行する
予測を行うには、 [CLS]
& [SEP]
特別なトークンを取得し、その後入力をモデル エンドポイントに送信します。 リアルタイム推論とサーバーレス推論の構文は同じです。
次の例では、モデルが入力文のペアに言い換え文が含まれているかどうかを正しく分類できることがわかります。
以下はリアルタイム推論の例です。
以下はサーバーレス推論の例です。
モデルのパフォーマンスを評価する
モデルを評価するには、前述のコードを拡張して、8,000 件の未確認のテスト レコードをすべてリアルタイム エンドポイントに送信しましょう。
次に、抽出された予測を使用して分類レポートを作成できます。
以下のテストスコアが得られます。
観察できるのは、 roberta-base
の組み合わせマクロ平均 F1 スコアは 92% で、言い換えである文の検出ではわずかに優れています。 の roberta-base
モデルのパフォーマンスは良好ですが、少なくとも XNUMX つの他のモデルを使用してモデルのパフォーマンスを計算することをお勧めします。
次の表で比較します。 roberta-base
同じテスト セットでのパフォーマンス結果を、別の微調整されたトランスフォーマーと比較した場合 paraphrase-mpnet-base-v2
、言い換え識別タスク用に特別に事前トレーニングされた文変換機能です。 どちらのモデルも ml.p3.8xlarge インスタンスでトレーニングされました。
結果は次のことを示しています roberta-base
SageMaker でのリアルタイム推論ホスティングを使用したトレーニングと推論時間はほぼ同じで、F1 スコアが 1% 高くなりました。 モデル間の性能差は比較的小さいですが、 roberta-base
パフォーマンス メトリクスがわずかに優れており、トレーニング時間と推論時間がほぼ同じであるため、最終的には が勝者となります。
精度 | リコール | F1スコア | トレーニング時間(有料) | 推論時間 (完全なテストセット) | |
ロバータベース | 0.92 | 0.93 | 0.92 | 18 minutes | 2 minutes |
言い換え-mpnet- ベースv2 |
0.92 | 0.91 | 0.91 | 17 minutes | 2 minutes |
クリーンアップ
モデル エンドポイントの使用が完了したら、将来の料金の発生を避けるためにそれらを削除できます。
まとめ
この投稿では、SageMaker の Hugging Face トランスフォーマーを使用して言い換え識別モデルを迅速に構築する方法について説明しました。 XNUMX つの事前トレーニング済みトランスフォーマーを微調整しました。 roberta-base
& paraphrase-mpnet-base-v2
、PAWS データセット (語彙の重複が多い文のペアが含まれる) を使用します。 リアルタイム推論とサーバーレス推論の導入の利点を実証し、説明しました。後者は、急激なワークロードをターゲットにし、スケーリング ポリシーの管理の必要性を排除する新機能です。 8,000 レコードを含む未確認のテスト セットで、両方のモデルが 1% を超える F90 スコアを達成したことを実証しました。
このソリューションを拡張するには、次の点を考慮してください。
- 独自のカスタム データセットを使用して微調整してみてください。 十分なトレーニング ラベルがない場合は、この投稿で示したような微調整されたモデルのパフォーマンスをカスタム テスト データセットで評価できます。
- この微調整されたモデルを、XNUMX つの文 (またはテキストのブロック) が互いの言い換えであるかどうかに関する情報を必要とする下流アプリケーションに統合します。
幸せな建物!
著者について
バラクリシュナムーシー 彼は AWS プロフェッショナル サービスのデータ サイエンティストであり、顧客のビジネス上の問題を解決するために機械学習を適用することに楽しんでいます。 彼は自然言語処理のユースケースを専門とし、ソフトウェア、金融、ヘルスケアなどの業界の顧客と協力してきました。 自由時間には、新しい食べ物に挑戦したり、コメディやドキュメンタリーを見たり、オレンジ セオリーで運動したり、水辺で過ごすこと (パドルボード、シュノーケリング、できればダイビングも近いうちにしたい) を楽しんでいます。
イヴァン・クイ はAWSProfessional Servicesのデータサイエンティストであり、お客様がAWSで機械学習を使用してソリューションを構築およびデプロイするのを支援しています。 彼は、ソフトウェア、金融、製薬、ヘルスケアなど、さまざまな業界の顧客と協力してきました。 自由な時間には、読書を楽しんだり、家族と過ごしたり、株式ポートフォリオを最大限に活用したりしています。
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- 私たちについて
- アクセス
- 達成
- 越えて
- すべて
- 既に
- Amazon
- 発表の
- 別の
- 申し込み
- 適用
- 約
- 引数
- 利用できます
- AWS
- さ
- 利点
- ボディ
- 国境
- ビルド
- ビジネス
- コール
- できる
- 自動車
- 例
- 課金
- 選択する
- 市町村
- class
- 分類
- コード
- コラム
- 組み合わせた
- コミュニティ
- 完全に
- 計算
- 信頼
- コンテナ
- 含まれています
- 可能性
- 作ります
- 作成した
- カスタム
- 顧客
- Customers
- データ
- データサイエンティスト
- 実証します
- 実証
- によっては
- 展開します
- 展開
- 展開
- 細部
- 検出
- 開発
- 異なります
- ディストリビューション
- ドキュメンタリー
- ドキュメント
- ダウンロード
- ドライブ
- 効率的な
- エンドポイント
- 英語
- 環境
- 確立する
- 評価する
- 例
- 展示
- 詳細
- 顔
- 家族
- 特徴
- ファイナンス
- 名
- フライト
- フォーカス
- フォロー中
- フード
- 無料版
- フル
- function
- 機能性
- 未来
- 一般的用途
- 一般に
- 生成する
- GitHubの
- 良い
- 大きい
- ヘルスケア
- 高さ
- ことができます
- こちら
- ハイ
- より高い
- ホスティング
- 認定条件
- How To
- HTTPS
- 識別
- 識別する
- 識別
- アイデンティティ
- 画像
- include
- 含めて
- 産業
- 情報
- install
- 興味がある
- 問題
- IT
- Jobs > Create New Job
- ラベル
- 言語
- 大
- 起動する
- 学習
- 図書館
- リスト
- 負荷
- 機械
- 機械学習
- 作る
- 管理します
- メモリ
- メトリック
- ML
- モデル
- 他には?
- 最も
- の試合に
- ナチュラル
- 負
- ニューヨーク
- ニューヨーク市
- ノート
- オファー
- 最適化
- オプション
- 注文
- その他
- 自分の
- 紙素材
- パリ
- パートナーシップ
- 通過
- パッチ
- パフォーマンス
- 期間
- 薬剤
- ポイント
- ポリシー
- ポートフォリオ
- 正の
- 練習
- 予測
- 予測
- 問題
- プロセス
- 処理
- プロ
- 提供します
- 質問
- Quoraの
- RAM
- ランド
- リーディング
- への
- 推奨する
- 記録
- リリース
- レポート
- 倉庫
- 必要とする
- リソースを追加する。
- リソース
- 結果
- return
- ラン
- ランニング
- 規模
- スケーリング
- 科学者
- セキュリティ
- 選択
- サーバレス
- サービス
- セッションに
- 設定
- 同様の
- 簡単な拡張で
- サイズ
- 小さい
- ソフトウェア
- 固体
- 溶液
- ソリューション
- 解決する
- 特別
- 専門にする
- 特に
- 支出
- スピン
- split
- start
- 開始
- 開始
- 株式
- ストレージ利用料
- 店舗
- 続いて
- 供給
- Sweden
- ターゲット
- タスク
- テクニック
- 伝える
- test
- 介して
- 時間
- トークン化
- トークン化された
- トークン
- top
- トーチ
- トラフィック
- トレーニング
- インタビュー
- us
- つかいます
- 値
- 多様
- 詳しく見る
- 水
- この試験は
- かどうか
- Wikipedia
- 以内
- 無し
- 言葉
- 働いていました
- ワーキング
- 働く