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查看作业具体执行情况。