MaxFrame AI Function是阿里雲MaxCompute平台針對大模型離線推理情境推出的端到端解決方案,旨在通過無縫整合資料處理與 AI 能力,降低企業級大模型應用門檻。本文介紹如何基於MaxFrame AI Function功能通過GU資源調用大模型。
適用範圍
環境準備
MaxFrame SDK為2.3.0及以上版本。
Python版本為3.11。
MaxCompute專案已開通GPU資源配額(以下簡稱GU)。
許可權配置
當前操作帳號至少擁有MaxCompute專案層級讀寫權限。
環境配置
gu_quota_name是使用GPU的前提。
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
from odps import ODPS
import logging
options.dag.settings = {
"engine_order": ["DPE", "MCSQL"],
"unavailable_engines": ["SPE"],
}
logging.basicConfig(level=logging.INFO)
# -------------------------------
# MaxFame Session 初始化
# -------------------------------
o = ODPS(
# 確保 ALIBABA_CLOUD_ACCESS_KEY_ID 環境變數設定為使用者 Access Key ID,
# ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境變數設定為使用者 Access Key Secret,
# 不建議直接使用AccessKey ID和 AccessKey Secret字串。
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" # 替換為你的 GU Quota Name
print("LogView 地址:", session.get_logview_address())調用託管大模型(LLM.generate)
步驟一:準備輸入資料
import pandas as pd
from IPython.display import HTML
# 設定顯示選項(便於調試)
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>")
# 構造查詢列表
query_list = [
"地球距離太陽的平均距離是多少?",
"美國獨立戰爭是從哪一年開始的?",
"什麼是水的沸點?",
"如何快速緩解頭痛?",
"誰是《哈利·傳輸速率》系列中的主角?",
]
# 轉為 MaxFrame DataFrame
df = md.DataFrame({"query": query_list})
df.execute() 步驟二:初始化 LLM 執行個體
from maxframe.learn.contrib.llm.models.managed import ManagedTextGenLLM
llm = ManagedTextGenLLM(
name="Qwen3-4B-Instruct-2507-FP8" # 模型名稱需嚴格匹配
)支援的模型詳情可參見MaxFrame AI Function支援模型(持續更新)。
步驟三:定義 Prompt 模板
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "請回答如下問題:{query}"},
]模板文法說明:
使用
{column_name}預留位置自動替換 DataFrame 中的欄位;支援多輪對話(
messages列表);系統提示(system)用於設定角色行為。
步驟四:執行產生任務
result_df = llm.generate(
df,# 輸入資料
prompt_template=messages,
running_options={"max_tokens": 4096, # 最大輸出長度
"verbose": True # 開啟詳細日誌輸出模式
},
params={"temperature": 0.7},
)
# 執行並擷取結果
result_df.execute()輸出結果說明
result_df 是一個 MaxFrame DataFrame,包含以下欄位:
欄位 | 類型 | 說明 |
| string | 原始輸入 |
| string | 模型產生的回答 |
| string | 原因: |
| int | 輸入 token 數 |
| int | 輸出 token 數 |
| int | 總計 token 數 |
調試及效能調優建議
效能與成本最佳化
最佳化項 | 建議 |
批量大小 | 控制每批 |
GU 分配 |
|
並行度 | MaxFrame自動並發調度,可通過 |
緩衝中間結果 | 使用 |
逾時設定 | 添加 |
調試技巧
查看執行日誌
print(session.get_logview_address()) # 點擊跳轉查看即時MaxFrame作業日誌小規模測試
df_sample = df.head(2) # 取2條資料進行測試 result_sample = llm.generate(df_sample, prompt_template=messages, running_options={"gu": 2}) result_sample.execute()查看資源使用方式
可通過MaxFrame Logview查看作業具體執行情況。