Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Develop AI Functions on GU resources

Son Güncelleme:Oct 04, 2026

MaxFrame AI Function, MaxCompute içinde çevrimdışı büyük dil modeli (LLM) çıkarımı için uçtan uca bir çözümdür. Veri işleme yeteneklerini yapay zeka işlevleriyle birleştirerek veri ambarı iş akışınızdan ayrılmadan toplu LLM çıkarımını doğrudan GPU kaynak kotası (GU) üzerinde çalıştırmanıza olanak tanır.

Bu konu, GU kaynaklarında llm.generate kullanarak yönetilen bir LLM'yi nasıl çağıracağınızı gösterir.

Hızlı başlangıç

Aşağıdaki kod parçacığı, asgari düzeyde uçtan uca bir çağrıyı gösterir. Parametre ayrıntıları ve hata ayıklama rehberliği için aşağıdaki bölümleri okuyun.

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()

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

Ortamı yapılandırma

Aşağıdaki kod, bir MaxFrame oturumu başlatır ve buna bir GU kotası atar. Sonraki tüm LLM görevleri bu oturum altında çalışır.

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())
Önemli

GU kaynaklarını kullanmak için gu_quota_name parametresi gereklidir. Bu parametre olmadan çıkarım görevleri GPU çalışanlarına dağıtılmaz.

Yönetilen bir LLM'yi çağırma

Aşağıdaki dört adım, yönetilen bir modele karşı eşzamansız bir çıkarım görevi göndermek için llm.generate yöntemini kullanır.

Adım 1: Giriş verilerini hazırlama

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()

Adım 2: LLM örneğini başlatma

ManagedTextGenLLM sınıfı, MaxCompute üzerinde barındırılan yönetilen metin oluşturma modelleri için istemcidir. Kullanılacak modeli tanımlamak için model adını tam olarak belirtin.

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.
)
Not

Model adındaki bir yazım hatası veya sürüm uyumsuzluğu görevin başarısız olmasına neden olur. Desteklenen modellerin tam listesi için bkz. MaxFrame AI Function için desteklenen modeller.

Adım 3: İstem şablonunu tanımlama

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

Şablon sözdizimi:

  • Yer tutucu olarak {column_name} kullanın; bu yer tutucu, çalışma zamanında ilgili DataFrame sütunundaki değerle otomatik olarak değiştirilir.

  • Çok turlu konuşmaları desteklemek için bir messages listesi iletin.

  • Modelin davranışını tanımlamak için system rolünü kullanın.

Adım 4: Oluşturma görevini çalıştırma

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()

Çıkış şeması

result_df nesnesi, aşağıdaki alanları içeren bir MaxFrame DataFrame'dir:


Alan


Tür


Açıklama


query


dize


Orijinal giriş


generated_text


dize


Model tarafından oluşturulan yanıt


finish_reason


dize


Tamamlanma nedeni: stop veya length


usage.prompt_tokens


tamsayı


Giriş belirteci sayısı


usage.completion_tokens


tamsayı


Çıkış belirteci sayısı


usage.total_tokens


tamsayı


Toplam belirteç sayısı

Performans ve hata ayıklama

Performans optimizasyonu


Optimizasyon


Öneri


Toplu iş boyutu


Bellek yetersizliği (OOM) hatalarını önlemek için her toplu işi 100 öğeden az tutun


GU tahsisi

gu=2 ayarı 4B modeller için uygundur; daha büyük modeller daha fazla GU gerektirir


Paralellik derecesi

MaxFrame eşzamanlı işleri otomatik olarak planlar; bunu num_workers parametresi ile kontrol edin


Ara sonuçları önbelleğe alma

Ara tabloları kaydetmek ve yeniden hesaplamayı önlemek için to_odps_table() yöntemini kullanın


Zaman aşımı

İşlerin takılı kalmasını önlemek için timeout=3600 parametresini ekleyin

Hata ayıklama ipuçları

Çalıştırma günlüklerini görüntüleme

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

Tam çalıştırmadan önce küçük ölçekli test yapma

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()

Kaynak kullanımını kontrol etme

MaxFrame Logview'de ayrıntılı iş yürütme durumunu görüntüleyin.