Todos los productos
Search
Centro de documentos

MaxCompute:Desarrollo de funciones de IA en recursos GU

Última actualización: Sep 08, 2026

MaxFrame AI Function es una solución integral para la inference de modelos de lenguaje grandes (LLM) sin conexión en MaxCompute. Combina el procesamiento de datos con capacidades de inteligencia artificial y le permite ejecutar la inference por lotes de LLM directamente en los recursos de cuota de recursos GPU (GU), sin salir del flujo de trabajo de su almacén de datos.

Este tema muestra cómo llamar a un LLM administrado mediante llm.generate en recursos GU.

Inicio rápido

A continuación se muestra la llamada integral mínima. Consulte las secciones posteriores para conocer los detalles de cada parámetro y las recomendaciones de depuración.

import os
import maxframe.dataframe as md
from maxframe import new_session
from maxframe.config import options
from maxframe.learn.contrib.llm.models.managed import ManagedTextGenLLM
from odps import ODPS

# Initialize session
o = ODPS(
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    project='<your project>',
    endpoint='https://service.cn-<your region>.maxcompute.aliyun.com/api',
)
session = new_session(o)
options.session.gu_quota_name = "<your GU quota name>"  # Required to route tasks to GPU workers.

# Prepare input data
df = md.DataFrame({"query": ["What is the boiling point of water?"]})

# Initialize the managed LLM client
llm = ManagedTextGenLLM(name="Qwen3-4B-Instruct-2507-FP8")  # Name must be an exact match.

# Define the prompt template and run inference
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Please answer the following question: {query}"},
]
result_df = llm.generate(df, prompt_template=messages)
result_df.execute()

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • El kit de desarrollo de software (SDK) de MaxFrame en la versión 2.3.0 o posterior.

  • Python 3.11.

  • Una cuota GU habilitada para su proyecto de MaxCompute. Para más información, consulte Compra y uso de recursos de cómputo de IA de MaxCompute.

  • Permisos de lectura y escritura para MaxCompute, como mínimo a nivel de proyecto.

Configuración del entorno

El código a continuación inicializa una sesión de MaxFrame y le asigna una cuota GU. Todas las tareas de LLM posteriores se ejecutan dentro de esta sesión.

import os
import maxframe.dataframe as md
import numpy as np
from maxframe import new_session
from maxframe.config import options
from maxframe.udf import with_running_options  # Helper for attaching resource options to UDF-based tasks.
from odps import ODPS
import logging

# Route tasks to the DPE and MCSQL engines; disable SPE for GPU workloads.
options.dag.settings = {
    "engine_order": ["DPE", "MCSQL"],
    "unavailable_engines": ["SPE"],
}

logging.basicConfig(level=logging.INFO)

# Initialize the MaxFrame session with your project credentials.
o = ODPS(
    # Make sure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to your AccessKey ID,
    # and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to your AccessKey secret.
    # Do not use the AccessKey ID and AccessKey secret strings directly.
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    project='<your project>',
    endpoint='https://service.cn-<your region>.maxcompute.aliyun.com/api',
)

session = new_session(o)

options.session.gu_quota_name = "xxxxx"  # Replace with your GU quota name.

print("LogView address:", session.get_logview_address())
Importante

El parámetro gu_quota_name es obligatorio para usar recursos GU. Sin este valor, las tareas de inference no se envían a los trabajadores GPU.

Llamada a un LLM administrado

Los cuatro pasos siguientes utilizan llm.generate para enviar una tarea de inference asíncrona a un modelo administrado.

Paso 1: Preparar los datos de entrada

import pandas as pd
from IPython.display import HTML

# Set display options for debugging.
pd.set_option("display.max_colwidth", None)
pd.set_option("display.max_columns", None)
HTML("<style>div.output_area pre {white-space: pre-wrap;}</style>")

# Create a query list.
query_list = [
    "What is the average distance between the Earth and the Sun?",
    "In what year did the American Revolutionary War begin?",
    "What is the boiling point of water?",
    "How can I quickly relieve a headache?",
    "Who is the main character in the Harry Potter series?",
]

# Convert to a MaxFrame DataFrame.
df = md.DataFrame({"query": query_list})
df.execute()

Paso 2: Inicializar la instancia de LLM

ManagedTextGenLLM es el cliente para los modelos de generación de texto administrados alojados en MaxCompute. Pase el nombre exacto del modelo para identificar cuál se utilizará.

from maxframe.learn.contrib.llm.models.managed import ManagedTextGenLLM

llm = ManagedTextGenLLM(
    name="Qwen3-4B-Instruct-2507-FP8"  # The model name must be an exact match.
)
Nota

Un error tipográfico o una discrepancia de versión en el nombre del modelo provoca que la tarea falle. Para consultar la lista completa de modelos compatibles, revise Supported models for MaxFrame AI Function.

Paso 3: Definir la plantilla de indicaciones

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Please answer the following question: {query}"},
]

Sintaxis de la plantilla:

  • Utilice {column_name} como marcador de posición. Durante la ejecución, se reemplaza automáticamente por el valor de la columna correspondiente del DataFrame.

  • Pase una lista messages para admitir conversaciones de varios turnos.

  • Use el rol system para definir el comportamiento del modelo.

Paso 4: Ejecutar la tarea de generación

result_df = llm.generate(
    df,                          # Input DataFrame
    prompt_template=messages,
    running_options={
        "max_tokens": 4096,      # Maximum output length
        "verbose": True          # Enable verbose log output
    },
    params={"temperature": 0.7},
)

# Execute and get the result.
result_df.execute()

Esquema de salida

result_df es un DataFrame de MaxFrame que contiene los siguientes campos:

Field

Type

Description

query

string

Entrada original

generated_text

string

Respuesta generada por el modelo

finish_reason

string

Motivo de finalización: stop o length

usage.prompt_tokens

int

Número de tokens de entrada

usage.completion_tokens

int

Número de tokens de salida

usage.total_tokens

int

Número total de tokens

Rendimiento y depuración

Optimización del rendimiento

Optimization

Recommendation

Tamaño de lote

Mantenga cada lote por debajo de 100 elementos para evitar errores de falta de memoria (OOM).

Asignación de GU

El valor gu=2 es adecuado para modelos de 4B. Los modelos más grandes requieren más GU.

Grado de paralelismo

MaxFrame programa automáticamente trabajos concurrentes. Controle este comportamiento con num_workers.

Almacenamiento de resultados intermedios en caché

Utilice to_odps_table() para guardar tablas intermedias y evitar reprocesamientos.

Tiempo de espera

Agregue timeout=3600 para evitar que los trabajos se queden bloqueados.

Recomendaciones de depuración

Consultar los registros de ejecución

print(session.get_logview_address())  # Click the link to view real-time MaxFrame job logs.

Ejecutar una prueba a pequeña escala antes de la ejecución completa

df_sample = df.head(2)  # Use two rows for testing.
result_sample = llm.generate(df_sample, prompt_template=messages, running_options={"gu": 2})
result_sample.execute()

Comprobar el uso de recursos

Consulte el estado detallado de ejecución del trabajo en MaxFrame Logview.