マルチモーダルデータ管理は、大規模モデルを使用して、画像などのデータにスマートタギングとセマンティックインデキシングを適用します。これにより、モデルトレーニングとデータ分析のために、データサブセットを検索、フィルター、エクスポートできます。
1. 概要
マルチモーダルデータ管理では、マルチモーダル大規模言語モデルと埋め込みモデルを使用して、画像などのマルチモーダルデータを前処理できます。このプロセスは、スマートタギングとセマンティックインデックス作成を通じて豊富なメタデータを生成します。このメタデータを使用して、データアノテーションやトレーニングなどの下流タスク向けに、特定のデータサブセットを検索およびフィルターできます。さらに、Platform for AI (PAI) データセットは包括的な OpenAPI を提供し、カスタムプラットフォームとの統合を簡素化します。次の図は、製品アーキテクチャを示しています。

2. 制限
PAI のマルチモーダルデータ管理には、次の制限があります:
-
リージョン: この機能は、次のリージョンでサポートされています: China (Hangzhou)、China (Shanghai)、China (Shenzhen)、China (Ulanqab)、China (Beijing)、China (Guangzhou)、Singapore、Germany (Frankfurt)、US (Virginia)、China (Hong Kong)、Japan (Tokyo)、Indonesia (Jakarta)、US (Silicon Valley)、Malaysia (Kuala Lumpur)、Korea (Seoul)。
-
ストレージタイプ: PAI のマルチモーダルデータ管理は、Object Storage Service (OSS) に保存されているデータのみをサポートします。
-
ファイル形式: この機能は、jpg、jpeg、png、gif、bmp、tiff、webp 形式の画像ファイルのみをサポートします。
-
ファイル数: 単一のデータセットバージョンは、最大 1,000,000 ファイルをサポートします。この制限を引き上げるには、PAI のアカウントマネージャーにお問い合わせください。
-
モデル:
-
タギングモデル: Model Studio プラットフォームの Qwen-VL-Max/Plus モデルを使用できます。
-
インデックス作成モデル: tongyi-embedding-vision-plus などの Model Studio のマルチモーダル埋め込みモデルや、PAI モデルギャラリーの GME モデルを使用できます。これらのモデルは PAI-EAS にデプロイする必要があります。
-
-
メタデータストレージ:
-
メタデータ: PAI は、組み込みのメタデータベースにメタデータを安全に保存します。
-
埋め込みベクトル: 埋め込みベクトルは、次のベクトルデータベースに保存できます:
-
Elasticsearch (Vector Search Edition、バージョン 8.17.0 以降)
-
OpenSearch (Vector Search Edition)
-
Milvus (バージョン 2.4 以降)
-
Hologres
-
Lindorm (Vector Engine Edition)
-
-
-
データセット処理モード: スマートタギングタスクとセマンティックインデックス作成タスクは、フルモードとインクリメンタルモードで実行できます。
3. ワークフロー

3.1 前提条件
3.1.1 PAI の有効化と権限の付与
-
ルートアカウントを使用して Platform for AI (PAI) を有効化し、ワークスペースを作成します。PAI コンソールにログオンし、左上隅でリージョンを選択してから、製品を承認して有効化します。
-
アカウントを承認します。ルートアカウントを使用する場合は、この手順をスキップできます。RAM ユーザーを使用する場合は、ワークスペース管理者ロールが必要です。アカウント承認の詳細については、ワークスペースの作成と管理の「メンバーロールの設定」セクションをご参照ください。
3.1.2 Model Studio の API キーの取得
Model Studio を有効化して API キーを作成するには、API キーの取得をご参照ください。
3.1.3 ベクトルデータベースの作成
ベクトルデータベースインスタンスの作成
マルチモーダルデータセット管理は、現在、次の Alibaba Cloud ベクトルデータベースをサポートしています。
-
Elasticsearch (Vector Search Edition、バージョン 8.17.0 以降)
-
OpenSearch (Vector Search Edition)
-
Milvus (バージョン 2.4 以降)
-
Hologres (バージョン 4.0.9 以降)
-
Lindorm (Vector Engine Edition)
各ベクトルデータベースのインスタンスを作成するには、それぞれのクラウド製品のドキュメントをご参照ください。
ネットワークとホワイトリストの設定
-
パブリックネットワークアクセス
ベクトルデータベースインスタンスにパブリックエンドポイントがある場合は、次の IP アドレスをインスタンスのパブリックネットワークアクセスホワイトリストに追加します。これにより、マルチモーダルデータ管理サービスがパブリックネットワーク経由でインスタンスにアクセスできるようになります。Elasticsearch のホワイトリストを設定するには、パブリックまたはプライベートネットワークアクセスの IP アドレスホワイトリストの管理をご参照ください。
リージョン
IP アドレス
China (Hangzhou)
47.110.230.142, 47.98.189.92
China (Shanghai)
47.117.86.159, 106.14.192.90
China (Shenzhen)
47.106.88.217, 39.108.12.110
China (Ulanqab)
8.130.24.177, 8.130.82.15
China (Beijing)
39.107.234.20, 182.92.58.94
-
プライベートネットワークアクセス
このオプションを申請するには、チケットを送信してください。
ベクトルインデックステーブルの作成 (オプション)
システムが自動的にインデックステーブルを作成します。カスタムのインデックステーブルを作成する必要がない場合は、この手順をスキップできます。
一部のベクトルデータベースでは、ベクトルインデックステーブルはコレクションまたはインデックスとも呼ばれます。
インデックステーブルのスキーマは、次の定義と一致する必要があります。
このセクションでは、Elasticsearch でセマンティックインデックステーブルを作成する Python の例を示します。他のベクトルデータベースについては、それぞれの製品ドキュメントをご参照ください。
3.2 データセットの作成
-
PAI ワークスペースに移動します。左側のナビゲーションペインで、AI 資産管理 > データセット > データセットの新規作成 を選択してデータセット設定ページに移動します。
-
次の主要なデータセットパラメータを設定します。その他のパラメータはデフォルト値のままにできます。
-
[ストレージクラス]:Object Storage Service (OSS)。
-
[タイプ]:[アドバンスト]。
-
[コンテンツタイプ]: [画像]。
-
[OSS パス]:データセットの OSS ストレージパスを選択します。データセットを準備していない場合は、サンプルデータセット retrieval_demo_data をダウンロードし、OSS にアップロードしてから、マルチモーダルデータ管理機能をお試しいただけます。
説明ファイルまたはフォルダをインポートすると、そのパスのみを記録し、データはコピーしません。
[インポート形式] には、[ファイル] または [フォルダー] を選択できます。[アプリケーション設定] では、[デフォルトのマウントパス] は /mnt/data/ です。
OK をクリックしてデータセットを作成します。
-
3.3 接続の作成
3.3.1 インテリジェントタギング接続の作成
-
PAI ワークスペースに移動し、左側のナビゲーションペインで AI 資産管理 > 接続 > モデルサービス > 接続の新規作成 を選択して、接続の作成ページを開きます。
-
Model Studio 大規模言語モデル (LLM) サービス接続 を選択し、Model Studio の [API キー] を設定します。
-
接続が作成されると、Alibaba Cloud Model Studio Service がリストに表示されます。
3.3.2 セマンティックインデックス作成接続の作成
-
Model Studio セマンティックインデックスモデルサービスを使用する予定の場合は、この手順をスキップできます。左側のナビゲーションペインで、[モデルギャラリー] をクリックし、GME マルチモーダル検索モデルを見つけてデプロイし、EAS サービスを取得します。デプロイには約 5 分かかります。デプロイは、ステータスが 実行中 に変わると完了です。
重要インデックスモデルが不要になったら、サービスを停止して削除し、追加料金が発生しないようにしてください。
GME-2B 検索モデル (2B パラメーター) または GME-7B 検索モデルを選択し、対応する[デプロイ] ボタンをクリックしてデプロイを開始できます。
-
PAI ワークスペースに移動し、左側のナビゲーションペインで AI 資産管理 > 接続 > モデルサービス > 接続の新規作成 を選択して [接続の作成] ページを開きます。
-
Model Studio セマンティックインデックス作成モデルまたはカスタムデプロイされた EAS セマンティックインデックス作成モデルのどちらを選択したかに基づいて、モデル接続情報を設定します。
Model Studio セマンティックインデックス作成モデルを使用
-
接続タイプ: 汎用マルチモーダル埋め込みモデルサービス接続 を選択します。
-
[サービスプロバイダー]:[サードパーティモデルサービス] を選択します。
-
[モデル名]: tongyi-embedding-vision-plus
-
[base_url]:
https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding -
[API キー]:API キーを取得して入力します。
カスタムデプロイされた EAS セマンティックインデックス作成モデルを使用
-
[接続タイプ]: 汎用マルチモーダル埋め込みモデルサービス接続 を選択します。
-
[サービスプロバイダー]: PAI-EAS モデルサービス を選択します。
-
[EAS サービス]: デプロイしたばかりの GME マルチモーダル検索モデルを選択します。サービスプロバイダーが自身のアカウントにない場合は、[サードパーティモデルサービス] を選択します。
[EAS サービスの選択] ダイアログボックスで、ステータスが [実行中] である対象のモデルサービスを選択します。
-
-
接続が作成されると、モデル接続サービスがリストに表示されます。
3.3.3 ベクトルデータベース接続の作成
-
左側のナビゲーションペインで、AI 資産管理 > 接続 > データベース > 接続の新規作成 を選択して、[接続の作成] ページを開きます。
-
マルチモーダル検索サービスは、Milvus、Lindorm、OpenSearch、Elasticsearch、Hologres などのベクトルデータベースをサポートしています。このセクションでは Elasticsearch を例として、データベース接続の作成方法について説明します。検索分析サービス - Elasticsearch を選択し、uri、password などのパラメーターを設定します。詳細については、「データベース接続を作成する」をご参照ください。
各ベクトルデータベースの接続形式は次のとおりです。
Milvus
uri: http://xxx.milvus.aliyuncs.com:19530 database: {your_database} token: root:{password}OpenSearch
uri: http://xxxx.ha.aliyuncs.com username: {username} password: {password}Hologres
host: xxxx.hologres.aliyuncs.com port: {port} database: {your_database} access_key_id: {your_access_key_id} access_key_secret: {your_access_key_secret}Elasticsearch
uri: http://xxxx.elasticsearch.aliyuncs.com:9200 username: {username} password: {password}Lindorm
uri: xxxx.lindorm.aliyuncs.com:{port} username: {username} password: {password} -
接続が作成されると、リストにベクトルデータベース接続が表示されます。
3.4 インテリジェントタギングジョブの作成
3.4.1 インテリジェントタグ定義の作成
左側のナビゲーションウィンドウで、AI 資産管理 > データセット > DataQ スマートタグサービス の 定義 > DataQ スマートタグサービス定義の新規作成 を選択してタグ設定ページを開きます。以下に設定例を示します。
-
[ガイドプロンプト]:あなたは、高速道路と一般道の両方で豊富な経験を持つベテランドライバーです。
-
[タグの定義]:
3.4.2 オフラインインテリジェントタギングジョブの作成
-
データセット をクリックし、データセット名をクリックして、データセットタスク タブをクリックします。
-
「ジョブ」ページで、タスクを作成 > スマートタギング をクリックし、タスクパラメーターを設定します。
-
[データセットバージョン]:v1 など、ラベル付けするバージョンを選択します。
-
[スマートタギングモデル接続]: 作成した Model Studio モデル接続を選択します。
-
[インテリジェントタギングモデル]:対応モデルには Qwen-VL-Max および Qwen-VL-Plus が含まれます。
-
[最大同時実行数]: この値は、EAS モデルサービスの仕様によって決まります。1 つの GPU の場合、推奨される最大同時実行数は 5 です。
-
[DataQ スマートタグサービス の 定義]:作成したばかりのスマートタグ定義を選択します。
-
[タグ付けパターン]: 増分 と フル モードをサポートしています。
-
-
インテリジェントタギングジョブが作成されると、ジョブリストに表示されます。[操作] 列のリンクをクリックして、ログを表示したり、ジョブを停止したりできます。
説明インテリジェントタギングジョブを初めて開始すると、システムがメタデータを構築します。このプロセスには時間がかかる場合があります。
3.5 セマンティックインデックス作成ジョブの作成
-
データセット名をクリックして詳細ページを開き、インデックスの設定 セクションで編集アイコンをクリックします。
-
インデックスを設定します。
-
[インデックスモデル接続]: セクション 3.3.2 で作成したインデックスモデル接続を選択します。
-
[データベース接続のインデックス]:セクション 3.3.3 で作成したインデックスデータベース接続を選択します。
-
[データベーステーブルのインデックス作成]: ベクトルインデックステーブルの作成 (オプション) の手順で作成したインデックス テーブルの名前 (例: dataset_embed_test) を入力します。
保存 をクリックし、次に 即時パージ をクリックします。 これにより、選択したデータセットバージョン内のすべてのファイルのセマンティックインデックスを更新するセマンティックインデックス作成タスクが作成されます。 データセット詳細ページの右上隅にある セマンティクスインデックスタスク をクリックすると、タスク詳細を表示できます。
説明セマンティックインデックス作成ジョブを初めて開始すると、システムがメタデータを構築します。このプロセスには時間がかかる場合があります。
[今すぐ更新] ではなく [キャンセル] をクリックした場合は、次の手順に従って手動でジョブを作成できます。
データセット詳細ページで、データセットタスク タブをクリックしてジョブページに移動します。
タスクを作成 > セマンティクスインデックス をクリックして、データセットバージョンを設定し、EAS モデルサービスの仕様に基づいて最大同時実行数を設定します。単一の GPU の場合、推奨される最大同時実行数は 5 です。[確認] をクリックして、セマンティックインデックスタスクを作成します。
-
3.6 データのプレビュー
-
スマートタギングとセマンティックインデックス作成のタスクが完了したら、データセット詳細ページに移動し、データを表示 をクリックして、そのデータセットバージョンの画像をプレビューします。
-
[データの表示] ページでは、データセットバージョンの画像をプレビューできます。「ギャラリービュー」と「リストビュー」を切り替えることができます。
-
特定の画像をクリックすると、拡大版が表示され、それに含まれるタグが表示されます。
詳細ページには、画像の[メタデータ] (ファイル名、ファイルタイプ、ストレージパス、ファイルサイズ、最終更新日時) と[スマートタグ] ([アルゴリズムタグ]と[ユーザータグ]を含む) が表示されます。
-
サムネイルの左上隅にあるチェックボックスをクリックして選択します。Shift キーを押しながらチェックボックスをクリックすると、複数行のデータを一度に選択することもできます。
選択を行うと、ページ下部に選択項目数が表示され、[手動ラベリング] または [選択をキャンセル] を実行できます。
3.7 基本データ検索 (複合検索)
-
「データ表示」ページの左側のツールバーで、インデックス検索 と タグ検索 を実行できます。Enter キーを押すか、検索 をクリックして開始します。
-
テキストキーワードによる インデックス検索: セマンティックインデックス作成の結果に基づき、キーワードベクトルと画像インデックスベクトルを照合して検索します。[詳細設定] では、top-k やスコアしきい値などのパラメーターを設定できます。
-
[インデックス検索] (画像による): セマンティックインデックス作成の結果に基づき、ローカルコンピューターから画像をアップロードするか、OSS から 1 つ選択し、ベクトルを比較することでデータセット内の一致する画像を検索します。[詳細設定] では、
top-kやスコアのしきい値などのパラメーターを設定できます。 -
タグ検索:スマートタギングの結果に基づき、キーワードと画像タグを照合して画像を検索する機能です。次の検索ロジックを組み合わせることができます:以下のいずれかのタグを含む (OR)、以下のタグをすべて含む (AND)、および以下のいずれかのタグを除外 (NOT)。
-
[メタデータ]: ファイル名、ストレージパス、最終更新日時でファイルを検索できます。
上記のすべての検索条件は、AND 演算子で結合されます。
3.8 高度なデータ検索 (DSL)
詳細検索 では、DSL 取得 を使用できます。 DSL は、複雑な取得条件を表現するためのドメイン固有言語です。 高度な取得シナリオに最適で、グループ化、ブール論理 (AND/OR/NOT)、範囲比較 (>、>=、<、<=)、プロパティの存在 (HAS/NOT HAS)、トークン一致 (:)、完全一致 (=) などの機能をサポートしています。 構文の詳細については、「データセットファイルメタデータのリストを取得する」をご参照ください。
たとえば、次の DSL クエリを入力して画像ファイルをフィルタリングできます:(FileType = "image" OR ContentType = "application/json") AND ThumbnailMode = "h_200" AND MaxResults = 50
3.9 検索結果のエクスポート
この手順の目的は、検索結果をファイルリストインデックスとしてエクスポートし、その後のモデルトレーニングやデータ分析に使用することです。
検索が完了すると、ページの下部にある検索結果のエクスポート ボタンをクリックできます。2 つのエクスポートモードがサポートされています:
3.9.1 ファイルとしてエクスポート
-
ファイルにエクスポート をクリックします。設定ページで、エクスポート内容と出力先 OSS ディレクトリを設定し、OK をクリックします。
エクスポート設定ページで、[エクスポート内容] には [テキスト]、[画像]、[音声]、[動画]、および [人間によるラベル] を選択できます。[エクスポートタイプ] で [エクスポートファイル] を選択し、[エクスポートパス] を宛先の OSS ディレクトリに設定します。
-
エクスポートの進捗状況を表示するには、左側のナビゲーションペインでAI 資産管理 > タスク > データセットタスクを選択します。
-
エクスポートした結果を使用します。エクスポートが完了したら、エクスポートした結果ファイルと元のデータセットを、DLC や DSW インスタンスなどの適切なトレーニング環境にマウントできます。その後、コードを記述してエクスポートした結果ファイルのインデックスを読み取り、元のデータセットからターゲットファイルをロードして、モデルトレーニングや分析を行うことができます。
3.9.2 論理データセットバージョンへのエクスポート
Premium データセットの検索結果を、別の論理データセットのバージョンにインポートできます。その後、データセット SDK を使用して、その論理データセットバージョンのデータを使用できます。
-
論理データセットへのエクスポート をクリックしてターゲット論理データセットを選択し、OK をクリックします。
「エクスポート」ダイアログボックスで、[ターゲットデータセット] と [ベースデータセットバージョン] を選択し、[インポート範囲] (すべてのファイルまたは選択したファイル) を設定します。[インポートモード] では、[マージして上書き] を選択し、インポートするタグタイプ ([スマートタグ] または [手動ラベル]) を選択できます。
選択可能な論理データセットがない場合は、次のセクションの説明に従って作成します。
-
論理データセットを使用します。インポートジョブが完了すると、ターゲット論理データセットにエクスポートしたメタデータが含まれます。SDK を使用してデータをロードして使用できます。SDK の使用方法については、データセット詳細ページをご参照ください。
from pai_datasets.load import load_dataset dataset = load_dataset(dataset_id="xxx", dataset_version="v1", region="cn-hangzhou", cache_dir=CACHE_DIR, keep_in_memory=True)SDK をインストールするには、次のコマンドを実行します。
pip install https://pai-sdk.oss-cn-shanghai.aliyuncs.com/dataset/pai_dataset_sdk-1.0.0-py3-none-any.whl
4. カスタムセマンティックインデックス作成モデルのファインチューニング (任意)
カスタムのセマンティック検索モデルをファインチューニングできます。モデルが EAS に正常にデプロイされた後、「3.3.2」の手順に従ってモデル接続を作成し、その後のマルチモーダルデータ管理で使用できます。
4.1. データ準備
このトピックではサンプルデータを提供しています。retrieval_demo_data をクリックしてダウンロードできます。
4.1.1. データフォーマット
各データサンプルは、dataset.jsonl ファイルに JSON フォーマットで 1 行ずつ保存されます。各サンプルには、次のフィールドを含める必要があります:
-
image_id:画像名や一意の ID など、画像の一意の識別子。 -
tags:画像に関連付けられたテキストタグのリスト。タグは文字列の配列です。
フォーマット例:
{
"image_id": "c909f3df-ac4074ed",
"tags": ["silver sedan", "white SUV", "city street", "snowing", "night"],
}
4.1.2. ファイル構造
すべての画像ファイルを images フォルダーに配置します。dataset.jsonl ファイルは、images フォルダーと同じディレクトリに配置します。
ディレクトリ構造の例:
├── images
│ ├── image1.jpg
│ ├── image2.jpg
│ └── image3.jpg
└── dataset.jsonl
ファイル名 dataset.jsonl とフォルダー名 images は必須であり、変更できません。
4.2. モデルトレーニング
-
モデルギャラリーで、検索関連のモデルを探します。必要なモデルサイズとコンピューティングリソースに基づいて、ファインチューニングとデプロイに適したモデルを選択します。
ファインチューニング VRAM (bs=4)
ファインチューニング (4 × A800) train_samples/second
デプロイ VRAM
ベクトル次元
GME-2B
14 GB
16.331
5 GB
1536
GME-7B
35 GB
13.868
16 GB
3584
-
たとえば、GME-2B モデルをトレーニングするには、トレーニング をクリックし、データアドレスとモデル出力パスを入力してトレーニングを開始します。
トレーニング設定ページでは、[Training Dataset] フィールドのデフォルト値は、サンプルデータのパスです。カスタムの [Model Name] と [Version Description] を指定し、[Model Output Path] を OSS ディレクトリに設定できます。
4.3. モデルデプロイ
トレーニングが完了したら、トレーニングタスクの デプロイメント をクリックしてモデルをデプロイします。
元の GME モデルをデプロイするには、モデルギャラリーにあるモデルのタブで デプロイメント ボタンをクリックします。
デプロイが完了すると、ページで EAS の [エンドポイント] と [トークン] を確認できます。[View Invocation Information] をクリックすると、パブリックエンドポイント呼び出し と VPC エンドポイント呼び出し の詳細が表示されます。
4.4. サービス呼び出し
入力パラメーター
|
パラメーター |
タイプ |
必須 |
例 |
説明 |
|
model |
String |
必須 |
pai-multimodal-embedding-v1 |
モデルタイプを指定します。このフィールドは、カスタムモデルとベースモデルの将来のバージョンにも対応します。 |
|
contents.input |
list(dict) または list(str) |
いいえ |
input = [{'text': text}] input=[xxx,xxx,xxx,...] input = [{'text': text}, {'image': f"data:image/{image_format};base64,{image64}"}] |
埋め込み対象のコンテンツ。 現在、 |
レスポンスパラメーター
|
パラメーター |
タイプ |
例 |
説明 |
|
status_code |
Integer |
200 |
HTTP ステータスコード。 200:リクエスト成功 204:リクエスト一部成功 400:リクエスト失敗 |
|
message |
list(str) |
['Invalid input data: must be a list of strings or dict'] |
エラーメッセージ。 |
|
output |
dict |
次の表をご参照ください。 |
埋め込み結果。 |
DashScope から返される結果は {"output": {"embeddings": list(dict), "usage": xxx, "request_id":xxx}} です。現時点では、「usage」と「request_id」フィールドは無視できます。
入力項目が失敗した場合、失敗の理由がトップレベルの message フィールドに追加されます。
|
パラメーター |
タイプ |
例 |
説明 |
|
index |
Integer |
0 |
入力 |
|
embedding |
List[Float] |
[0.0391846,0.0518188,.....,-0.0329895, 0.0251465] 1536 |
結果として得られる埋め込みベクトル。 |
|
type |
String |
"text" |
埋め込まれたコンテンツのタイプ。たとえば、 |
サンプル出力:
{
"status_code": 200,
"message": "",
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.020782470703125,
-0.01399993896484375,
-0.0229949951171875,
...
],
"type": "image"
}
]
}
}
4.5. モデル評価
次の表は、この 評価ファイル を使用した、サンプルデータでの評価結果を示しています:
|
元のモデルの適合率 |
ファインチューニング済みモデルの適合率 (1 エポック) |
|
|
GME-2B |
Precision@1 0.3542 Precision@5 0.5280 Precision@10 0.5923 Precision@50 0.5800 Precision@100 0.5792 |
Precision@1 0.4271 Precision@5 0.6480 Precision@10 0.7308 Precision@50 0.7331 Precision@100 0.7404 |
|
GME-7B |
Precision@1 0.3958 Precision@5 0.5920 Precision@10 0.6667 Precision@50 0.6517 Precision@100 0.6415 |
Precision@1 0.4375 Precision@5 0.6680 Precision@10 0.7590 Precision@50 0.7683 Precision@100 0.7723 |
4.6. モデルの使用
ファインチューニング済みの埋め込みモデルが EAS に正常にデプロイされた後は、「3.3.2」の手順に従ってモデル接続を作成し、後続のマルチモーダルデータ管理で使用できます。