Cette rubrique explique comment utiliser les modèles distants MaxCompute pour générer automatiquement des descriptions de produits e-commerce.
Présentation du scénario
Avec la croissance rapide du e-commerce et du streaming en direct, le cycle « de la photo à la mise en ligne » pour la sélection des produits doit être raccourci. L'annotation manuelle traditionnelle repose sur l'expérience et le jugement subjectif des annotateurs, ce qui engendre des coûts élevés lors du traitement de volumes massifs de données. À long terme, l'adoption à grande échelle se heurte à un double défi : maîtriser les coûts et garantir la qualité. Le recours à l'IA pour le traitement des données multimodales est devenu une tendance majeure. Cette rubrique illustre, par une étude de cas générant des tags d'image et des résumés dans un contexte e-commerce, comment accéder aux données non structurées stockées dans OSS via Object Table, puis les traiter à l'aide des modèles distants MaxCompute et des fonctions AI.
Avantages de la solution
Accédez directement aux données stockées dans OSS grâce à MaxCompute Object Table, sans migration complexe des données.
Déployez vos propres modèles dans Elastic Algorithm Service (EAS) pour optimiser l'utilisation des ressources du service de modèle.
Évitez l'encapsulation complexe des fonctions définies par l'utilisateur. Extrayez et traitez les données d'image à l'aide des fonctions AI MaxCompute avec de simples instructions SQL.
Préparation de l'environnement
Activez MaxCompute et créez un projet MaxCompute. Ignorez cette étape si elle a déjà été effectuée.
Déployez un grand modèle de langage multimodal dans la console Platform for AI (PAI), sous Elastic Algorithm Service (EAS). Pour plus de détails, consultez la section Présentation d'EAS. Ignorez cette étape si elle a déjà été effectuée.
Activez OSS et stockez les images à traiter dans OSS. Ignorez cette étape si elle a déjà été effectuée.
-
Connectivité réseau :
Si vous utilisez l'endpoint VPC de PAI EAS, activez la connectivité par ligne louée et spécifiez le nom de la connexion réseau configurée lors de l'appel de la fonction AI. Pour les étapes de configuration, consultez la section Accès au VPC (connexion directe par ligne louée).
Si vous utilisez l'Internet Endpoint de PAI EAS, configurez-le comme adresse de réseau externe disponible pour MaxCompute avant d'appeler la fonction AI. Pour les étapes de configuration, consultez la section Accès au réseau public.
Préparation des données
-
Téléchargez les images e-commerce à traiter vers OSS. Cet exemple utilise 50 images d'affiches de produits issues du jeu de données public Alibaba Cloud Tianchi : Jeu de données texte-image de conception d'affiche.
-
Créez une Object Table.
SET odps.namespace.schema=true; -- Enable tenant-level schema syntax. 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/'; -- Refresh metadata to cache image metadata in MaxCompute. ALTER TABLE image_demo REFRESH METADATA; SELECT COUNT(*) AS ROW_COUNT FROM image_demo; +------------+ | row_count | +------------+ | 50 | +------------+
Créer un modèle distant
Déployez le modèle multimodal Omni dans la console PAI EAS et récupérez le nom du service de modèle, l'Endpoint et le Token.
-
Enregistrez le modèle distant multimodal Omni dans MaxCompute.
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 remote model"; 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 remote model binary input"; -
Consultez le modèle distant.
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 remote model url input | +------------------------------------------------------------------------------------+ | 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
Analyse des données
Utilisez la fonction AI_GENERATE de MaxCompute pour classifier les images et générer des résumés descriptifs :
SET odps.namespace.schema=true;
SELECT
key,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, image_url,
"Identify and extract the product category from the e-commerce sales poster. Return only one of the following six options: Beauty, Apparel, Daily Use, Food, Other, Electronics. Do not include any other text or information.","IMAGE"
) as item_catagory,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v1, image_url,
"You are a professional e-commerce copywriter. Generate a product description summary based on the provided e-commerce sales poster.
Requirements: 1. The summary must accurately reflect key information from the poster, such as product features and promotions. 2. Ensure fluent, readable language with no special characters or garbled text. Keep it under 50 characters. 3. Use Chinese only, except for English brand names. Do not mix in any English words.
Example: Pure cotton T-shirt on limited-time offer—buy one, get one free! Only 3 days left!"
) 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;
-- If reading BINARY data.
SELECT
key,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v2, image_binary,
"Identify and extract the product category from the e-commerce sales poster. Return only one of the following six options: Beauty, Apparel, Daily Use, Food, Other, Electronics. Do not include any other text or information"
) AS item_catagory,
AI_GENERATE(
PAI_EAS_Qwen25_Omni_3B, v2, image_binary,
"You are a professional e-commerce copywriter. Generate a product description summary based on the provided e-commerce sales poster.
Requirements: 1. The summary must accurately reflect key information from the poster, such as product features and promotions. 2. Ensure fluent, readable language with no special characters or garbled text. Keep it under 50 characters. 3. Use Chinese only, except for English brand names. Do not mix in any English words.
Example: Pure cotton T-shirt on limited-time offer—buy one, get one free! Only 3 days left!"
) 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;