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:
MaxFrame yazılım geliştirme seti (SDK) sürüm 2.3.0 veya üzeri
Python 3.11
MaxCompute projeniz için etkinleştirilmiş bir GU kotası — bkz. MaxCompute AI hesaplama kaynaklarını satın alma ve kullanma
MaxCompute için en az proje düzeyinde okuma ve yazma izinleri
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())
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.
)
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
messageslistesi iletin.Modelin davranışını tanımlamak için
systemrolü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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Performans ve hata ayıklama
Performans optimizasyonu
|
|
|
|
|
|
|
|
|
|
|
MaxFrame eşzamanlı işleri otomatik olarak planlar; bunu |
|
|
Ara tabloları kaydetmek ve yeniden hesaplamayı önlemek için |
|
|
İşlerin takılı kalmasını önlemek için |
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.