Ce document explique comment utiliser la fonction IA MaxFrame dans Alibaba Cloud MaxCompute et présente des cas d'usage pour démarrer avec les applications d'inférence hors ligne de grands modèles de langage.
Présentation
La fonction IA MaxFrame constitue une solution de bout en bout pour l'inférence hors ligne de grands modèles de langage (LLM) sur la plateforme Alibaba Cloud MaxCompute. Elle intègre le traitement des données aux capacités d'intelligence artificielle, simplifiant ainsi l'adoption des grands modèles de langage en entreprise.
Philosophie de conception : « Des données en entrée, des résultats en sortie ». Ce principe permet d'utiliser le framework Python MaxFrame et des API de style pandas pour réaliser l'ensemble du flux de travail, de la préparation et du traitement des données jusqu'à l'inférence du modèle et au stockage des résultats, directement au sein de l'écosystème MaxCompute.
Cas d'usage : Cette fonction est idéale pour traiter des volumes massifs de données structurées (analyse de journaux, logs de comportement utilisateur) et non structurées (traduction de textes, résumé de documents, vectorisation). Elle traite des données à l'échelle du pétaoctet en un seul job, offrant une faible latence et une scalabilité linéaire grâce à son architecture de calcul distribué. Vous pouvez extraire des informations structurées à partir de textes, organiser et résumer du contenu, générer des résumés, traduire des langues, évaluer la qualité des textes et classifier les sentiments. Cela simplifie considérablement le traitement des données pour les grands modèles de langage et améliore la qualité des résultats.
-
Architecture
La fonction IA MaxFrame fournit une interface
generateflexible et polyvalente, ainsi que des interfacestaskconcises et spécifiques, adaptées à des scénarios tels que la traduction de textes, l'extraction de données structurées et la vectorisation. Sélectionnez un modèle et fournissez une table MaxCompute ainsi que des prompts en entrée.Lors de l'appel d'une interface, MaxFrame fragmente d'abord les données de la table d'entrée. Définissez un niveau de concurrence approprié selon le volume de données et lancez un groupe de workers pour exécuter le job de calcul. Chaque worker utilise le modèle de prompt fourni pour formater et construire les entrées du modèle à partir des lignes de données, exécute le job d'inférence, puis écrit les résultats et le statut de succès dans MaxCompute.
La figure suivante illustre l'architecture et le flux de travail.

-
Avantages clés :
Facilité d'utilisation : API Python familières, bibliothèque de modèles prête à l'emploi et coût de déploiement nul.
Scalabilité : Exploite les ressources de quota CU, de quota GU et d'Inference Quota de MaxCompute pour prendre en charge le traitement parallèle à grande échelle et augmenter le débit global de tokens.
Intégration Données et IA : Réalisez l'intégralité de votre flux de travail, de la lecture et du traitement des données à l'inférence IA et au stockage des résultats, sur une seule plateforme. Cela réduit les coûts de migration des données et améliore l'efficacité du développement.
Large couverture de scénarios : Couvre plus de 10 cas d'usage courants, dont la traduction, l'extraction de données structurées et la vectorisation.
Prérequis
-
Régions prises en charge :
China (Hangzhou), China (Shanghai), China (Beijing), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), China (Hangzhou) Finance Cloud et China (Shanghai) Finance Cloud.
Version Python prise en charge : 3,11.
-
Version SDK prise en charge : Assurez-vous que votre version du SDK MaxFrame est 2.7.1 ou ultérieure. Vérifiez la version en exécutant l'une des commandes suivantes :
// For Windows pip list | findstr maxframe // For Linux pip list | grep maxframeSi votre version est obsolète, exécutez
pip install --upgrade maxframepour passer à la dernière version.
Modèles pris en charge
MaxFrame offre une prise en charge native d'une série de grands modèles de langage intégrés, notamment Qwen 3,DeepSeek-R1-Distill-Qwen et Qwen3-embedding. Il permet également d'appeler des modèles phares commerciaux de Model Studio, tels que les modèles multimodaux qwen3.7-max,qwen3.6-plus,qwen3.6-flash,deepseek-v4-pro,deepseek-v4-flash et qwen3-vl-embedding, ainsi que le modèle de texte text-embedding-v4. Tous ces modèles sont hébergés hors ligne au sein de la plateforme MaxCompute. Vous n'avez donc pas à gérer le téléchargement des modèles, leur distribution ni les limites de concurrence des API. Utilisez les modèles via de simples appels d'API afin de tirer parti des ressources de calcul massives de MaxCompute pour accomplir des tâches d'inférence hors ligne avec un débit global de tokens et une concurrence élevés.
Modèles pris en charge
Type de modèle | Nom du modèle | Quota |
Modèles commerciaux Model Studio |
|
|
Modèles open source de la série Qwen 3 |
|
|
Modèles open source Qwen Embedding |
|
|
Modèles open source de la série Deepseek-R1-Distill-Qwen |
|
|
Modèles open source Deepseek-R1-0528-Qwen3 |
|
|
Types de ressources de quota
MaxFrame prend en charge trois types de ressources, vous permettant de choisir celle qui correspond le mieux à la taille de votre modèle et à vos besoins métier.
Ressources de quota CU
Une Compute Unit (CU) est une ressource de calcul CPU polyvalente (1 vCPU et 4 Go de mémoire) adaptée aux petits modèles et aux tâches d'inférence à petite échelle.
Configuration :
# Use CU quota compute resources.
options.session.quota_name = "mf_cpu_quota"
Ressources de quota GU
Une GPU Unit (GU) est une ressource de calcul GPU optimisée pour l'inférence LLM. Elle prend en charge des modèles plus volumineux et convient aux tâches d'inférence avec des modèles de 8B paramètres ou plus.
Configuration :
# Use GU quota compute resources.
options.session.gu_quota_name = "mf_gpu_quota"
Ressources Inference Quota (facturation basée sur les tokens)
Cette option permet d'appeler des grands modèles de langage commerciaux de Model Studio, tels que qwen3-max et text-embedding-v4. La facturation repose sur la consommation réelle de tokens. Cette approche élimine la nécessité de provisionner des ressources CU ou GU et de gérer l'infrastructure sous-jacente, offrant ainsi une solution flexible, pratique et économique.
Référence API
La fonction IA MaxFrame fournit deux interfaces pour allier flexibilité et facilité d'utilisation : l'interface généraliste generate et les interfaces task spécifiques à chaque tâche.
Général : generate
L'interface generate
Paramètres principaux
|
Paramètre |
Obligatoire |
Description |
|
model_name |
Oui |
Nom du modèle à utiliser. |
|
df |
Oui |
Texte ou données à analyser, encapsulés dans un DataFrame. |
|
prompt_template |
Oui |
Liste de messages compatible avec le format de message de chat OpenAI. Utilisez la syntaxe |
Spécifique à une tâche : task
Interface spécifique au scénario : Task
Des interfaces de tâches prédéfinies et normalisées simplifient le développement pour les cas d'usage courants. Les interfaces task actuellement prises en charge incluent translate,extract et embed.
-
Paramètres principaux
Paramètre
Obligatoire
Description
model_name
Oui
Nom du modèle à utiliser.
df
Oui
Texte ou données à analyser, encapsulés dans un DataFrame.
task interface
Oui
translate: traduit des textes.extract: extrait des données structurées.embed: vectorise des données.
-
Exemple d'utilisation
from maxframe.learn.contrib.llm.models.managed import ManagedTextLLM llm = ManagedTextLLM(name="<model_name>") # Translate text. translated_df = llm.translate( df["english_column"], source_language="english", target_language="Chinese", examples=[("Hello", "你好"), ("Goodbye", "再见")], ) translated_df.execute()
Cas d'usage
Quota GU
Scénarios de quota GU
Traduction linguistique
Scénario : Une entreprise multinationale doit traduire 100 000 contrats anglais en chinois et annoter les clauses clés.
import os
import maxframe.dataframe as md
from maxframe import new_session
from maxframe.config import options
from maxframe.udf import with_running_options
from odps import ODPS
options.dag.settings = {
"engine_order": ["DPE", "MCSQL"]
}
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-end-point',
)
# Initialize the MaxFrame session.
session = new_session(o)
# Print the Logview URL for the job.
print(session.get_logview_address())
# 1. Use GU quota compute resources.
options.session.gu_quota_name = "mf_gu_quota"
# 2. Use the Qwen3-1.7B model.
from maxframe.learn.contrib.llm.models.managed import ManagedTextLLM
llm = ManagedTextLLM(name="Qwen3-1.7B")
# 3. Prepare the data. You can skip this step if you already have data.
# o.execute_sql("""
# CREATE TABLE IF NOT EXISTS raw_contracts (
# en STRING
# );
# """)
#
# o.execute_sql("""
# INSERT INTO raw_contracts VALUES
# ('This agreement is governed by the laws of the State of California.'),
# ('The tenant shall pay rent on the first day of each month.'),
# ('Either party may terminate this contract with 30 days written notice.'),
# ('All intellectual property rights shall remain with the original owner.'),
# ('The warranty period for this product is twelve months from the date of purchase.');
# """)
df = md.read_odps_table("raw_contracts")
# 4. Define the prompt template.
messages = [
{
"role": "system",
"content": "You are a document translation expert who can fluently translate English text into Chinese.",
},
{
"role": "user",
"content": "Translate the following English text into Chinese. Output only the translated text, with no other content.\n\n Example:\nInput: Hi\nOutput: 你好。\n\n Text to translate:\n\n{en}",
},
]
# 5. Call the `generate` interface, define the prompt, and reference the corresponding data column.
result_df = llm.generate(
df,
prompt_template=messages,
params={
"temperature": 0.7,
"top_p": 0.8,
},
).execute()
# 6. Write the results to a MaxCompute table.
result_df.to_odps_table("raw_contracts_result")
Extraction de mots-clés
Scénario : Ce cas d'usage montre comment la fonction IA MaxFrame traite les données non structurées. Une grande partie de ces données se compose de textes et d'images, ce qui pose des défis majeurs pour l'analyse du Big Data. L'exemple suivant illustre comment utiliser la fonction IA pour simplifier ce processus.
Le code ci-dessous montre comment utiliser la fonction IA pour extraire l'expérience professionnelle d'un candidat à partir d'un CV. Cet exemple utilise un texte de CV généré aléatoirement comme entrée. Pour des pratiques de développement détaillées et des démos, consultez Pratiques de développement de la fonction IA sur GU.
import maxframe.dataframe as md
from maxframe import new_session
from maxframe.config import options
from maxframe.udf import with_running_options
from odps import ODPS
options.dag.settings = {
"engine_order": ["DPE", "MCSQL"]
}
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-end-point',
)
# Initialize the MaxFrame session.
session = new_session(o)
# Print the Logview URL for the job.
print(session.get_logview_address())
# 1. Use GU quota compute resources.
options.session.gu_quota_name = "mf_gu_quota"
# 2. Use the Qwen3-4B model.
from maxframe.learn.contrib.llm.models.managed import ManagedTextLLM
llm = ManagedTextLLM(name="Qwen3-4B-Instruct-2507-FP8")
df = md.read_odps_table("traditional_chinese_medicine", index_col="index")
# Specify four concurrent partitions.
parallel_partitions = 4
df = df.mf.rebalance(num_partitions=parallel_partitions)
# 3. Use the preset `extract` task interface.
result_df = llm.extract(
df["text"],
description="Please extract structured data from the following medical record in order. Return the final output in strict JSON format according to the schema.",
schema=MedicalRecord,
examples=[(example_input, example_output)],
)
result_df.execute()
Quota d'inférence
Scénarios de quota d'inférence
Vectorisation de texte : text-embedding-v4
Scénario : Utilisez le modèle commercial Model Studio text-embedding-v4 pour effectuer des tâches de vectorisation. La facturation est basée sur la consommation de tokens, ce qui élimine la nécessité de gérer les ressources de calcul sous-jacentes. Ce scénario convient à l'analyse complexe de textes et aux tâches d'inférence de haute qualité nécessitant de grands modèles ou des grands modèles de langage commerciaux de Model Studio.
Compréhension d'image : qwen3,6-plus
Scénario : Ce scénario est adapté aux tâches d'inférence de haute qualité, d'analyse complexe de textes ou de traitement de données multimodales nécessitant de grands modèles ou des grands modèles de langage commerciaux de Model Studio. Les ressources sont consommées à la demande, ce qui aide à maîtriser les coûts.
Optimisation des performances
Inférence parallèle
MaxFrame utilise le calcul parallèle pour exécuter des inférences hors ligne à grande échelle :
Fragmentation des données : L'interface
rebalancerépartit uniformément la table de données d'entrée sur plusieurs nœuds workers selon le nombre de partitions spécifié (num_partitions).Chargement parallèle du modèle : Chaque worker charge et préchauffe le modèle indépendamment. Cela évite la latence de démarrage à froid liée au chargement du modèle.
Agrégation des résultats : Les résultats de sortie sont écrits dans une table MaxCompute par partition, ce qui facilite les analyses de données ultérieures.
Recommandations d'optimisation
-
Changement de ressources de calcul hétérogènes
Pour les grands modèles (8B paramètres ou plus), l'inférence sur CPU manque d'efficacité. Nous recommandons de passer aux ressources de quota GU ou d'Inference Quota pour l'inférence.
-
Traitement parallèle des partitions de données
Pour les jobs d'inférence à grande échelle, utilisez l'interface
rebalanceafin de fragmenter les données pour un traitement parallèle en fonction de leur distribution.