このトピックでは、MaxCompute リモートモデルを使用して E コマース商品説明を自動生成する方法について説明します。
シナリオ概要
E コマースおよびライブ配信ビジネスが急速に拡大する中、「画像から商品掲載まで」のサイクルを短縮する必要性が高まっています。従来の手動アノテーションはアノテーターの経験や主観的判断に依存しており、大量データを処理するにはコストがかかります。長期的かつ大規模な導入には、コストと品質管理の両面で課題があります。AI を活用したマルチモーダルデータ処理が主流になりつつあります。本トピックでは、Object Table を使用して OSS に保存された非構造化データにアクセスし、MaxCompute リモートモデルおよび AI 関数を用いて E コマースシナリオにおける画像タグと要約文を生成するケーススタディを紹介します。
ソリューションのメリット
MaxCompute Object Table を使用して、複雑なデータ移行なしに OSS に保存されたデータに直接アクセスできます。
Elastic Algorithm Service (EAS) にデプロイした独自のモデルを使用できます。モデルサービスリソースを効率的に活用できます。
複雑なユーザー定義関数のカプセル化を回避できます。MaxCompute AI 関数とシンプルな SQL ステートメントを使用して、画像データを抽出・処理できます。
環境準備
MaxCompute を有効化し、MaxCompute プロジェクトを作成します。すでに完了している場合は、このステップをスキップしてください。
Platform for AI (PAI) コンソールの Elastic Algorithm Service (EAS) 上でマルチモーダル大規模言語モデルをデプロイします。詳細については、「EAS 概要」をご参照ください。すでに完了している場合は、このステップをスキップしてください。
OSS を有効化し、処理対象の画像を OSS に保存します。すでに完了している場合は、このステップをスキップしてください。
ネットワーク接続性:
PAI EAS の VPC エンドポイントを使用する場合、専用回線接続を有効化し、AI 関数呼び出し時に構成済みのネットワーク接続名を指定します。構成手順については、「VPC へのアクセス (専用回線ダイレクト接続)」をご参照ください。
PAI EAS のインターネットエンドポイントを使用する場合、AI 関数呼び出し前に MaxCompute に対して利用可能な外部ネットワークアドレスとして構成します。構成手順については、「パブリックネットワークへのアクセス」をご参照ください。
データ準備
処理対象の E コマース画像を OSS にアップロードします。本例では、Alibaba Cloud 天池パブリックデータセットの商品ポスター画像 50 件を使用します:Poster Design Text-Image Dataset。
Object Table を作成します。
SET odps.namespace.schema=true; -- テナントレベルのスキーマ構文を有効化。 CREATE OBJECT TABLE IF NOT EXISTS image_demo WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::1393************:role/aliyunodpsdefaultrole') LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/mllm-demo/jpg-test/'; -- メタデータを更新し、MaxCompute 内に画像メタデータをキャッシュ。 ALTER TABLE image_demo REFRESH METADATA; SELECT COUNT(*) AS ROW_COUNT FROM image_demo; +------------+ | row_count | +------------+ | 50 | +------------+
リモートモデルの作成
PAI EAS コンソールで Omni マルチモーダルモデルをデプロイし、モデルサービス名、エンドポイント、トークンを取得します。
MaxCompute に Omni マルチモーダルリモートモデルを登録します。
CREATE MODEL PAI_EAS_Qwen25_Omni_3B WITH VERSION v1 OPTIONS( MODEL_SOURCE_TYPE = 'REMOTE', MODEL_TYPE = 'MLLM', TASKS = 'text-generation', PAI_EAS_MODEL_NAME = 'Qwen2.5-Omni-3B', PAI_EAS_SERVICE_NAME = 'demo_remote_model', ENDPOINT = 'http://***********.cn-shanghai.pai-eas.aliyuncs.com', APIKEY = 'your-api-key', PAI_EAS_SYNC_MODE = 'true' ) COMMENT "PAI EAS リモートモデル"; ALTER MODEL PAI_EAS_Qwen25_Omni_3B ADD VERSION v2 INPUT(data BINARY, promt STRING) WITH OPTIONS( MODEL_SOURCE_TYPE = 'REMOTE', MODEL_TYPE = 'MLLM', TASKS = 'text-generation', PAI_EAS_MODEL_NAME = 'Qwen2.5-Omni-3B', PAI_EAS_SERVICE_NAME = 'demo_remote_model', ENDPOINT = 'http://************.cn-shanghai.pai-eas.aliyuncs.com', APIKEY = 'your-api-key', PAI_EAS_SYNC_MODE = 'true' ) COMMENT "PAI EAS リモートモデル バイナリ入力";リモートモデルを確認します。
desc model PAI_EAS_Qwen25_Omni_3B; ID = 20250909024319251glhmocwqddl +------------------------------------------------------------------------------------+ | Model Information | +------------------------------------------------------------------------------------+ | Owner: ALIYUN$*********************** | | Project: pd_test_model | | Schema: default | | Model Name: PAI_EAS_Qwen25_Omni_3B | | Model Type: MLLM | | Source Type: REMOTE | | Default Version: v1 | | CreateTime: 2025-09-04 10:29:28 | | LastModifiedTime: 2025-09-09 10:43:11 | | Model ID: 46311b6397494a84ad23c5a4******** | | Comment: PAI EAS リモートモデル url 入力 | +------------------------------------------------------------------------------------+ | Version Information | +------------------------------------------------------------------------------------+ | Owner: ALIYUN$*********************** | | Project: pd_test_model | | Schema: default | | Model Name: PAI_EAS_Qwen25_Omni_3B | | Model Type: MLLM | | Source Type: REMOTE | | Version Name: v1 | | Version ID: c389823cd0324b72b1c0d55*********** | | Path: | | CreateTime: 2025-09-04 10:29:28 | | LastModifiedTime: 2025-09-04 10:29:28 | | apikey: Yzc4*******mNzFkMGM********4YzEwZjY1NTA*********NzkyNw== | | endpoint: http://13933481********.cn-shanghai.pai-eas.aliyuncs.com | | pai_eas_model_name: Qwen2.5-Omni-3B | | pai_eas_service_name: demo_eas_model | | pai_eas_sync_mode: true | | remote_service_type: PAI-EAS | +------------------------------------------------------------------------------------+ | Input | Type | Comment | +------------------------------------------------------------------------------------+ +------------------------------------------------------------------------------------+ OK
データ分析
MaxCompute の AI_GENERATE 関数を使用して、画像を分類し、説明的な要約文を生成します。
SET odps.namespace.schema=true;
SELECT
key,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, image_url,
"E コマース販売ポスターから製品カテゴリを識別・抽出してください。以下の 6 選択肢のいずれか 1 つのみを返してください:Beauty、Apparel、Daily Use、Food、Other、Electronics。他のテキストや情報を含めないでください。","IMAGE"
) as item_catagory,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, image_url,
"あなたはプロの E コマースコピーライターです。提供された E コマース販売ポスターに基づき、商品説明の要約文を生成してください。
要件:1. 要約文はポスターの商品特徴やキャンペーンなどの重要な情報を正確に反映すること。2. 読みやすく流暢な文章で、特殊文字や文字化けを含まないこと。50 文字以内に収めること。3. 英語ブランド名を除き、中国語のみを使用すること。英単語を混ぜないでください。
例:限定タイムセール!純綿 T シャツを 1 枚購入すると 1 枚無料!残り 3 日間!"
) as item_description
from (
select GET_SIGNED_URL_FROM_OSS(
'pd_test_model.default.image_demo', key, 604800
) as image_url, key as key
from pd_test_model.default.image_demo
) Limit 10;
-- バイナリデータを読み取る場合。
SELECT
key,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v2, image_binary,
"E コマース販売ポスターから製品カテゴリを識別・抽出してください。以下の 6 選択肢のいずれか 1 つのみを返してください:Beauty、Apparel、Daily Use、Food、Other、Electronics。他のテキストや情報を含めないでください。"
) AS item_catagory,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v2, image_binary,
"あなたはプロの E コマースコピーライターです。提供された E コマース販売ポスターに基づき、商品説明の要約文を生成してください。
要件:1. 要約文はポスターの商品特徴やキャンペーンなどの重要な情報を正確に反映すること。2. 読みやすく流暢な文章で、特殊文字や文字化けを含まないこと。50 文字以内に収めること。3. 英語ブランド名を除き、中国語のみを使用すること。英単語を混ぜないでください。
例:限定タイムセール!純綿 T シャツを 1 枚購入すると 1 枚無料!残り 3 日間!"
) AS item_description
FROM (
SELECT GET_DATA_FROM_OSS(
'pd_test_model.default.image_demo', key
) AS image_binary, key AS key
FROM pd_test_model.default.image_demo
) Limit 10;