テキストの台頭と セマンティック検索 エンジンは、e コマースおよび小売企業が消費者にとってより簡単に検索できるようにしました。 テキストと画像が統合された検索エンジンは、検索ソリューションの柔軟性をさらに高めることができます。 テキストと画像の両方をクエリとして使用できます。 たとえば、ラップトップに何百もの家族の写真のフォルダーがあるとします。 あなたは、親友と一緒に古い家のプールの前で撮った写真をすばやく見つけたいと考えています。 「プールの前に立つ二人」などの会話文をクエリとして、テキストと画像の一体型検索エンジンで検索できます。 クエリを実行するために、画像のタイトルに適切なキーワードを含める必要はありません。
AmazonOpenSearchサービス 今サポートします コサイン類似性 k-NN インデックスのメトリック。 コサイン類似度は、XNUMX つのベクトル間の角度のコサインを測定します。ここで、コサイン角度が小さいほど、ベクトル間の類似度が高いことを示します。 コサイン類似度を使用すると、XNUMX つのベクトル間の向きを測定できるため、特定のセマンティック検索アプリケーションに適しています。
対照的な言語イメージ事前トレーニング (CLIP) さまざまな画像とテキストのペアでトレーニングされたニューラル ネットワークです。 CLIP ニューラル ネットワークは、画像とテキストの両方を同じものに投影できます。 潜在空間つまり、コサイン類似度などの類似度を使用して比較できます。 CLIP を使用して、 エンコード 商品の画像または説明を 埋め込みし、それらを OpenSearch サービスの k-NN インデックスに保存します。 次に、顧客はインデックスをクエリして、関心のある製品を取得できます。
CLIPを使用できます アマゾンセージメーカー エンコードを実行します。 AmazonSageMakerサーバーレス推論 は、機械学習 (ML) モデルのデプロイとスケーリングを容易にする専用の推論サービスです。 SageMaker を使用すると、開発とテスト用にサーバーレスをデプロイしてから、 リアルタイム推論 あなたが生産に行くとき。 SageMaker サーバーレスは、アイドル時間中にインフラストラクチャを 0 にスケールダウンすることで、コストを節約するのに役立ちます。 これは、開発サイクル間のアイドル時間が長い POC の構築に最適です。 使用することもできます Amazon SageMakerバッチ変換 大規模なデータセットから推論を取得します。
この投稿では、SageMaker と OpenSearch Service で CLIP を使用して検索アプリケーションを構築する方法を示します。 コードはオープン ソースであり、ホストされています。 GitHubの.
ソリューションの概要
OpenSearch Service は、テキスト マッチングと埋め込み k-NN 検索を提供します。 このソリューションでは、埋め込み k-NN 検索を使用します。 画像とテキストの両方をクエリとして使用して、インベントリからアイテムを検索できます。 この画像とテキストの統合検索アプリケーションの実装は、次の XNUMX つのフェーズで構成されます。
- k-NN 参照インデックス – このフェーズでは、一連のコーパス ドキュメントまたは製品画像を CLIP モデルに渡して、それらを埋め込みにエンコードします。 テキストと画像の埋め込みは、それぞれコーパスまたは画像の数値表現です。 これらの埋め込みを OpenSearch Service の k-NN インデックスに保存します。 k-NN の根底にある概念は、同様のデータ ポイントが埋め込み空間に近接して存在するということです。 例として、「赤い花」というテキストと「バラ」というテキスト、および赤いバラの画像は類似しているため、これらのテキストと画像の埋め込みは埋め込み空間内で互いに近接しています。
- k-NN インデックス クエリ – これは、アプリケーションの推論フェーズです。 このフェーズでは、深層学習モデル (CLIP) を介してテキスト検索クエリまたは画像検索クエリを送信し、埋め込みとしてエンコードします。 次に、これらの埋め込みを使用して、OpenSearch Service に格納されている参照 k-NN インデックスをクエリします。 k-NN インデックスは、埋め込み空間から同様の埋め込みを返します。 たとえば、「赤い花」というテキストを渡すと、赤いバラの画像の埋め込みが類似アイテムとして返されます。
次の図は、ソリューションのアーキテクチャを示しています。
ワークフローの手順は次のとおりです。
- 作る SageMakerモデル バッチおよびリアルタイム推論用の事前トレーニング済み CLIP モデルから。
- SageMaker バッチ変換ジョブを使用して、製品画像の埋め込みを生成します。
- SageMaker Serverless Inference を使用して、リアルタイムでクエリ画像とテキストを埋め込みにエンコードします。
- Amazon シンプル ストレージ サービス (Amazon S3) は、SageMaker バッチ変換ジョブによって生成された生のテキスト (製品説明) と画像 (製品画像) および画像埋め込みを保存します。
- OpenSearch Service を検索エンジンとして使用して、埋め込みを保存し、同様の埋め込みを見つけます。
- クエリ関数を使用してクエリのエンコードを調整し、k-NN 検索を実行します。
を使用しております Amazon SageMakerスタジオ ノートPC (図には示されていません) を、ソリューションを開発するための統合開発環境 (IDE) として使用します。
ソリューション リソースを設定する
ソリューションを設定するには、次の手順を実行します。
- SageMaker ドメインとユーザープロファイルを作成します。 手順については、の手順 5 を参照してください。 クイックセットアップを使用して Amazon SageMaker ドメインにオンボード.
- OpenSearch Service ドメインを作成します。 手順については、を参照してください。 AmazonOpenSearchServiceドメインの作成と管理.
また、使用することができます AWS CloudFormation 以下のテンプレート GitHub の指示 ドメインを作成します。
から Amazon S3 に Studio を接続できます。 アマゾン バーチャル プライベート クラウド (Amazon VPC) を使用して インターフェイス エンドポイント インターネット経由で接続する代わりに、VPC で。 インターフェイス VPC エンドポイント (インターフェイス エンドポイント) を使用することで、VPC と Studio 間の通信はすべて AWS ネットワーク内で安全に行われます。 Studio ノートブックは、プライベート VPC 経由で OpenSearch Service に接続して、安全な通信を確保できます。
OpenSearch Service ドメインは、保存データの暗号化を提供します。これは、データへの不正アクセスを防止するのに役立つセキュリティ機能です。 ノード間の暗号化は、OpenSearch Service のデフォルト機能に加えて、追加のセキュリティ レイヤーを提供します。 Amazon S3 は、別の暗号化オプションを指定しない限り、新しいオブジェクトごとにサーバー側の暗号化 (SSE-S3) を自動的に適用します。
OpenSearch Service ドメインでは、ID ベースのポリシーをアタッチして、サービスにアクセスできるユーザー、実行できるアクション、および該当する場合はそれらのアクションを実行できるリソースを定義できます。
画像とテキストのペアを埋め込みにエンコードする
このセクションでは、画像とテキストを埋め込みにエンコードする方法について説明します。 これには、データの準備、SageMaker モデルの作成、モデルを使用したバッチ変換の実行が含まれます。
データの概要と準備
Python 3 (データサイエンス) カーネルを備えた SageMaker Studio ノートブックを使用して、サンプルコードを実行できます。
この投稿では、 Amazon Berkeley オブジェクト データセット. このデータセットは、多言語のメタデータと 147,702 の固有のカタログ画像を含む 398,212 の製品リストのコレクションです。 商品の画像と商品名は米国英語のみを使用しています。 デモの目的で、約 1,600 の製品を使用します。 このデータセットの詳細については、 README. データセットはパブリック S3 バケットでホストされています。 Amazon製品の製品説明とメタデータを次の形式で含む16個のファイルがあります。 listings/metadata/listings_<i>.json.gz
. このデモでは最初のメタデータ ファイルを使用します。
あなたが使う パンダ メタデータを読み込み、米国英語のタイトルを持つ製品をデータ フレームから選択します。 Pandas は、Python プログラミング言語の上に構築されたオープンソースのデータ分析および操作ツールです。 という属性を使用します。 main_image_id
イメージを識別します。 次のコードを参照してください。
データ フレームには 1,639 個の製品があります。 次に、アイテム名を対応するアイテム画像にリンクします。 images/metadata/images.csv.gz
画像メタデータが含まれています。 このファイルは、次の列を含む gzip 圧縮された CSV ファイルです。 image_id
, height
, width
, path
. メタデータ ファイルを読み取って、アイテム メタデータとマージできます。 次のコードを参照してください。
SageMaker Studio ノートブック Python 3 カーネル組み込みを使用できます PILライブラリ データセットからサンプル画像を表示するには:
モデルの準備
次に、作成します SageMakerモデル 事前トレーニング済みの CLIP モデルから。 最初のステップは、事前トレーニング済みのモデルの重み付けファイルをダウンロードし、それを model.tar.gz
ファイルを作成し、S3 バケットにアップロードします。 事前トレーニング済みモデルのパスは、 CLIPレポ. 事前訓練された レスネット-50 このデモでは (RN50) モデル。 次のコードを参照してください。
次に、CLIP モデルの推論エントリ ポイント スクリプトを提供する必要があります。 CLIP は次を使用して実装されます パイトーチ、だからあなたは SageMaker PyTorch フレームワーク。 PyTorch は、研究のプロトタイピングから本番環境へのデプロイまでを加速するオープンソースの ML フレームワークです。 SageMaker を使用して PyTorch モデルをデプロイする方法については、次を参照してください。 PyTorch モデルをデプロイする. 推論コードは、次の XNUMX つの環境変数を受け入れます。 MODEL_NAME
および ENCODE_TYPE
. これにより、異なる CLIP モデルを簡単に切り替えることができます。 を使用しております ENCODE_TYPE
画像またはテキストをエンコードするかどうかを指定します。 ここでは、 model_fn
, input_fn
, predict_fn
, output_fn
オーバーライドする関数 デフォルトの PyTorch 推論ハンドラー。 次のコードを参照してください。
このソリューションでは、モデルの推論中に追加の Python パッケージが必要になるため、 requirements.txt
モデルをホストするときに SageMaker が追加のパッケージをインストールできるようにするためのファイル:
あなたが使用 PyTorchModel クラス モデルアーティファクトの Amazon S3 の場所と推論エントリポイントの詳細の情報を含むオブジェクトを作成します。 このオブジェクトを使用して、バッチ変換ジョブを作成したり、モデルをオンライン推論用のエンドポイントにデプロイしたりできます。 次のコードを参照してください。
アイテム画像を埋め込みにエンコードするためのバッチ変換
次に、CLIP モデルを使用してアイテム画像を埋め込みにエンコードし、SageMaker バッチ変換を使用してバッチ推論を実行します。
ジョブを作成する前に、次のコード スニペットを使用して、アイテムの画像を Amazon Berkeley オブジェクト データセットのパブリック S3 バケットから独自のバケットにコピーします。 操作にかかる時間は 10 分未満です。
次に、アイテムの画像に対してバッチ方式で推論を実行します。 SageMaker バッチ変換ジョブは、CLIP モデルを使用して、入力 Amazon S3 の場所に保存されているすべての画像をエンコードし、出力埋め込みを出力 S3 フォルダーにアップロードします。 作業時間は約10分。
Amazon S3 から変数に埋め込みをロードして、後でデータを OpenSearch Service に取り込むことができるようにします。
ML を活用した統合検索エンジンを作成する
このセクションでは、埋め込みのある k-NN 検索を使用する検索エンジンを作成する方法について説明します。 これには、OpenSearch Service クラスターの構成、アイテムの埋め込みの取り込み、フリー テキストおよび画像検索クエリの実行が含まれます。
k-NN 設定を使用して OpenSearch Service ドメインをセットアップする
前に、OpenSearch クラスターを作成しました。 次に、カタログ データと埋め込みを格納するためのインデックスを作成します。 次の構成を使用して、インデックス設定を構成し、k-NN 機能を有効にすることができます。
この例では、 Python Elasticsearch クライアント OpenSearch クラスターと通信し、データをホストするためのインデックスを作成します。 実行できます %pip install elasticsearch
ノートブックでライブラリをインストールします。 次のコードを参照してください。
画像埋め込みデータを OpenSearch Service に取り込む
ここで、データセットをループして、項目データをクラスターに取り込みます。 このプラクティスのデータ取り込みは 60 秒以内に完了する必要があります。 また、単純なクエリを実行して、データがインデックスに正常に取り込まれたかどうかを確認します。 次のコードを参照してください。
リアルタイム クエリを実行する
商品画像の埋め込みをインベントリとして含む OpenSearch Service インデックスが機能するようになったので、クエリの埋め込みを生成する方法を見てみましょう。 テキストと画像の埋め込みをそれぞれ処理するには、XNUMX つの SageMaker エンドポイントを作成する必要があります。
また、エンドポイントを使用して画像とテキストをエンコードする XNUMX つの関数も作成します。 のために encode_text
関数、追加 this is
アイテム名をアイテム説明の文に変換するには、アイテム名の前に を付けます。 memory_size_in_mb
下線を提供するために6 GBに設定されています トランスフォーマー および レスネット モデル。 次のコードを参照してください。
最初に、使用する画像をプロットできます。
簡単なクエリの結果を見てみましょう。 OpenSearch Service から結果を取得した後、アイテム名と画像のリストを取得します。 dataset
:
1.0 つの画像が同じであるため、最初のアイテムのスコアは XNUMX です。 その他の項目は、OpenSearch Service インデックスにあるさまざまな種類のメガネです。
テキストを使用してインデックスをクエリすることもできます。
これで、インデックスから XNUMX つのウォーター グラスの写真を取得できます。 CLIPエンコーダーを使用すると、同じ潜在空間内で画像とテキストを見つけることができます。 もう XNUMX つの例は、インデックスで「pizza」という単語を検索することです。
クリーンアップ
従量制モデルのサーバーレス推論は、頻度の低い、または予測不可能なトラフィック パターンに対する費用対効果の高いオプションです。 厳格な場合 サービスレベルアグリーメント(SLA)、またはコールド スタートに耐えられない場合は、リアルタイム エンドポイントの方が適しています。 使用する マルチモデル or マルチコンテナ エンドポイントは、多数のモデルを展開するためのスケーラブルで費用対効果の高いソリューションを提供します。 詳細については、次を参照してください。 Amazon SageMakerの価格.
サーバーレス エンドポイントが不要になったら削除することをお勧めします。 この演習を終了したら、次の手順でリソースを削除できます (これらのリソースは AWSマネジメントコンソール、または AWS SDK または SageMaker SDK を使用):
- 作成したエンドポイントを削除します。
- 必要に応じて、登録済みのモデルを削除します。
- オプションで、SageMaker 実行ロールを削除します。
- オプションで、S3 バケットを空にして削除します。
まとめ
この投稿では、SageMaker と OpenSearch サービスの k-NN インデックス機能を使用して k-NN 検索アプリケーションを作成する方法を示しました。 から事前にトレーニングされた CLIP モデルを使用しました。 OpenAI インプリメンテーション。
投稿の OpenSearch Service インジェスト実装は、プロトタイピングにのみ使用されます。 Amazon S3 から OpenSearch Service に大規模にデータを取り込みたい場合は、 Amazon SageMaker処理ジョブ 適切なインスタンス タイプとインスタンス数で。 別のスケーラブルな埋め込み取り込みソリューションについては、次を参照してください。 Novartis AG は、Amazon OpenSearch Service K-Nearest Neighbor (KNN) と Amazon SageMaker を使用して、検索とレコメンデーションを強化しています (パート 3/4).
CLIPが提供する ゼロショット これにより、事前にトレーニングされたモデルを使用せずに直接採用することができます 転移学習 モデルを微調整します。 これにより、CLIP モデルの適用が簡素化されます。 製品画像と説明テキストのペアがある場合、転移学習を使用して独自のデータでモデルを微調整し、モデルのパフォーマンスをさらに向上させることができます。 詳細については、次を参照してください。 自然言語教師からの伝達可能な視覚モデルの学習 と CLIP GitHub リポジトリシトリー。
著者について
ケビン・デュ AWS のシニア データ ラボ アーキテクトであり、顧客が機械学習 (ML) 製品と MLOps プラットフォームの開発を促進するのを支援することに専念しています。 新興企業と企業向けの ML 対応製品の構築に XNUMX 年以上の経験を持つ彼は、顧客が ML ソリューションの製品化を合理化するのを支援することに重点を置いています。 余暇には、料理とバスケットボール観戦を楽しんでいます。
アナーニャ・ロイ は、オーストラリアのシドニーを拠点とする AI と機械学習を専門とするシニア データ ラボ アーキテクトです。 彼女はさまざまな顧客と協力して、アーキテクチャのガイダンスを提供し、データラボの関与を通じて効果的な AI/ML ソリューションを提供できるよう支援してきました。 AWS の前は、シニア データ サイエンティストとして働き、通信会社、銀行、フィンテックなどのさまざまな業界で大規模な ML モデルを扱っていました。 AI / ML の経験により、複雑なビジネス上の問題に対して効果的なソリューションを提供することができ、最先端のテクノロジーを活用してチームの目標達成を支援することに情熱を注いでいます。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/implement-unified-text-and-image-search-with-a-clip-model-using-amazon-sagemaker-and-amazon-opensearch-service/
- :は
- ][p
- $UP
- 1
- 10
- 100
- 11
- 7
- 8
- 9
- a
- できる
- 私たちについて
- 加速する
- 受け入れる
- アクセス
- 達成する
- 越えて
- 行動
- NEW
- 採用
- 後
- AG
- 契約
- AI
- AI / ML
- すべて
- Amazon
- AmazonOpenSearchサービス
- アマゾンセージメーカー
- 分析
- および
- 別の
- 適用可能な
- 申し込み
- 適切な
- 約
- 建築の
- 建築
- です
- 引数
- 周りに
- AS
- At
- アタッチ
- オーストラリア
- 自動的に
- AWS
- 銀行
- ベース
- バスケットボール
- BE
- なぜなら
- バークリー
- BEST
- より良いです
- の間に
- ボディ
- ビルド
- 建物
- 内蔵
- 内蔵
- ビジネス
- ビジネス
- by
- 呼ばれます
- 缶
- 機能
- カタログ
- CD
- チェック
- 選択
- クライアント
- 閉じる
- クラスタ
- コード
- コレクション
- コラム
- 伝える
- コミュニケーション
- 比べ
- コンプリート
- 複雑な
- コンセプト
- 実施
- お問合せ
- 接続する
- 接続
- 消費者
- 含む
- 含まれています
- コンテンツ
- 会話
- 対応する
- 費用
- コスト効率の良い
- 可能性
- 作ります
- 作成した
- 作成
- Credentials
- カップ
- Customers
- 最先端
- サイクル
- データ
- データ分析
- データポイント
- データサイエンス
- データサイエンティスト
- データセット
- 十年
- 専用の
- 深いです
- 深い学習
- デフォルト
- 定義
- 配信する
- 実証します
- 実証
- 展開します
- 展開する
- 展開
- 説明
- 希望
- 細部
- デベロッパー
- 開発する
- 開発
- デバイス
- 異なります
- 次元
- 直接に
- ディスプレイ
- 異なる
- ドキュメント
- ドメイン
- ドメイン
- ドント
- ダウン
- ダウンロード
- 間に
- 各
- 容易
- 簡単に
- eコマース
- 効果的な
- enable
- 暗号化
- エンドポイント
- 婚約
- エンジン
- エンジン
- 英語
- 確保
- 企業
- 完全に
- エントリ
- 環境
- エラー
- 例
- 実行
- 運動
- 体験
- 余分な
- 家族
- 特徴
- 特徴
- フィギュア
- File
- もう完成させ、ワークスペースに掲示しましたか?
- 仕上げ
- 名
- 柔軟性
- フォーカス
- フォロー中
- 次
- 形式でアーカイブしたプロジェクトを保存します.
- 発見
- FRAME
- フレームワーク
- 無料版
- 友人
- から
- フロント
- function
- 機能的な
- 機能性
- 機能
- さらに
- 生成する
- 生成された
- 取得する
- Gitの
- GitHubの
- ガラス
- Go
- 目標
- 行く
- 良い
- ガイダンス
- ハンドル
- 持ってる
- ヘッダーの
- 高さ
- 助けます
- 助け
- ことができます
- こちら
- より高い
- ヒット
- ヒット
- host
- 主催
- ホスティング
- 認定条件
- How To
- HTML
- HTTP
- HTTPS
- 何百
- i
- 識別する
- アイドル
- IDX
- 画像
- 画像検索
- 画像
- 実装する
- 実装
- 実装
- 実装
- import
- 改善します
- in
- include
- 含ま
- index
- インデックス
- 索引
- 産業
- 情報
- インフラ関連事業
- install
- を取得する必要がある者
- 説明書
- 統合された
- 興味がある
- インタフェース
- インターネット
- インベントリー
- IT
- リーディングシート
- ITS
- ジョブ
- Jobs > Create New Job
- JPG
- JSON
- ラボ
- 言語
- ノートパソコン
- 大
- 大規模
- 起動する
- 層
- 学習
- 活用
- 図書館
- ような
- LINK
- リスト
- アップロード履歴
- 負荷
- ローディング
- 場所
- 長い
- より長いです
- 見て
- 機械
- 機械学習
- 製
- 作る
- 管理
- 管理する
- 操作
- 方法
- 手段
- だけど
- 措置
- マージ
- Meta
- メトリック
- 分
- ML
- MLOps
- モデル
- 他には?
- 名
- 名
- ナチュラル
- 必要
- ネットワーク
- ニューラルネットワーク
- 新作
- 次の
- ノート
- 番号
- オブジェクト
- オブジェクト
- of
- 提供
- 古い
- on
- オンライン
- 開いた
- オープンソース
- 操作
- オプション
- OS
- その他
- 出力
- オーバーライド
- 概要
- 自分の
- パッケージ
- 足
- パンダ
- 部
- 情熱的な
- path
- パターン
- のワークプ
- 完璧
- 実行する
- パフォーマンス
- 実行
- 相
- 画像
- ピクチャー
- ピース
- ピザ
- プラットフォーム
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- PoC
- ポイント
- ポイント
- ポリシー
- プール
- 可能
- ポスト
- 電力
- パワード
- 練習
- 予測
- 予測
- 準備中
- 防ぐ
- 事前の
- プライベート
- 問題
- 処理
- プロダクト
- 生産
- 製品
- プロフィール
- プログラミング
- プロジェクト
- プロパティ
- プロトタイピング
- 提供します
- は、大阪で
- 公共
- 目的
- 置きます
- Python
- パイトーチ
- クイック
- すぐに
- 範囲
- Raw
- 読む
- リアル
- への
- おすすめ
- 記録
- レッド
- 正規表現
- 地域
- 登録された
- 削除します
- 必要
- 研究
- リソース
- 応答
- REST
- 結果
- 結果
- 小売
- return
- 収益
- 上昇
- 職種
- ROSE
- ラン
- セージメーカー
- 同じ
- Save
- ド電源のデ
- 規模
- スケーリング
- 科学
- 科学者
- スコア
- SDDK
- を検索
- 検索エンジン
- 検索エンジン
- 秒
- セクション
- 安全に
- しっかりと
- セキュリティ
- シニア
- 文
- 役立つ
- サーバレス
- サービス
- セッション
- セッションに
- 設定
- 形状
- すべき
- 示す
- 同様の
- 簡単な拡張で
- サイズ
- より小さい
- So
- 溶液
- ソリューション
- 一部
- ソース
- スペース
- 特化した
- 特定の
- スタンド
- 開始
- スタートアップ
- 手順
- ステップ
- ストレージ利用料
- 店舗
- 保存され
- 流線
- 厳格な
- 研究
- 提出する
- 首尾よく
- そのような
- サポート
- スイッチ
- シドニー
- SYS
- 取り
- チーム
- テクノロジー
- 電話会社
- template
- test
- それ
- 情報
- アプリ環境に合わせて
- それら
- ボーマン
- 三
- 介して
- 時間
- <font style="vertical-align: inherit;">回数</font>
- 役職
- タイトル
- 〜へ
- トークン
- ツール
- top
- トーチ
- トーチビジョン
- トラフィック
- 訓練された
- 転送
- 最適化の適用
- 翻訳する
- true
- 統一
- ユニーク
- 予測できない
- us
- つかいます
- ユーザー
- 値
- 多様
- 確認する
- 、
- 詳しく見る
- バーチャル
- 見ている
- 水
- WELL
- which
- 誰
- 幅
- Wikipedia
- 意志
- 以内
- 無し
- Word
- ワーキング
- でしょう
- X
- You
- あなたの
- ゼファーネット