百炼大模型系列调用教程#
本文介绍如何在 MaxFrame 中访问百炼公共模型集提供的模型及操作示例。
本文包括:
浏览
BIGDATA_PUBLIC_MODELSET中可用的模型。查看模型元信息与推理参数。
文本 Embedding 推理。
文本生成推理。
将推理结果写入 MaxCompute 表。
前提条件#
# |
条件 |
说明 |
|---|---|---|
1 |
开通 MaxCompute |
需要一个已开通的 MaxCompute 项目,并具备有效的 Access ID / Access Key。 |
2 |
开通 DPE 引擎 |
本流程中的百炼 AI Function 调用通过 DPE 执行。 |
3 |
购买模型计算服务 |
在 MaxCompute 控制台购买模型计算服务;系统将创建推理配额并按使用量计费。 |
4 |
支持地域 |
请确保 MaxCompute 项目所在地域支持百炼模型服务。 |
5 |
Python 版本 |
推荐使用 Python 3.11。 |
6 |
MaxFrame SDK 版本 |
请使用 MaxFrame SDK 2.6.0 及以上版本( |
模型计算服务与推理配额#
在 MaxCompute 控制台购买或开通模型计算服务,并在运行百炼模型推理前确认已关联推理配额。
1. 环境准备与会话创建#
检查 MaxFrame 版本:
import maxframe
assert maxframe.__version__ >= "2.6.0", (
f"maxframe >= 2.6.0 is required, current version: {maxframe.__version__}. "
f"Please run: pip install --upgrade maxframe"
)
print(f"maxframe version: {maxframe.__version__} ✓")
导入依赖:
import logging
import pandas as pd
import maxframe.dataframe as md
from maxframe import new_session
from maxframe.config import options
from maxframe.learn.utils import read_odps_model
from odps import ODPS
logging.basicConfig(level=logging.INFO)
pd.set_option("display.max_colwidth", None)
pd.set_option("display.max_columns", None)
配置引擎并创建会话:
o = ODPS(
access_id="<your_access_id>",
secret_access_key="<your_access_key>",
endpoint="https://service.<region>.maxcompute.aliyun.com/api",
project="<your_project_name>",
)
options.dag.settings = {"engine_order": ["DPE", "MCSQL"]}
options.session.inference_quota_name = "<your_inference_quota_name>"
session = new_session(o)
print(f"Session ID : {session.session_id}")
print(f"LogView : {session.get_logview_address()}")
备注
请保存 LogView 地址以便排障。它是查看 Worker 日志和运行时诊断信息的核心入口。
2. 浏览百炼公共模型集#
available_models = list(o.list_models(project="bigdata_public_modelset"))
print(f"Available model count: {len(available_models)}")
for m in available_models:
print(f" - {m.name}")
3. 查看模型详情#
model = o.get_model("text-embedding-v4", project="bigdata_public_modelset")
print(f"name: {model.name}")
print(f"type: {model.type}")
print(f"source_type: {model.source_type}")
print(f"options: {model.options}")
print(f"_feature_columns: {model._feature_columns}")
print(f"inference_parameters: {model.inference_parameters}")
print(f"_labels: {model._labels}")
4. 文本 Embedding 推理#
加载 Embedding 模型:
embedding_model = read_odps_model("text-embedding-v4", project="bigdata_public_modelset")
print(embedding_model)
准备输入数据:
query_list = [
"What is the average distance from Earth to the Sun?",
"When 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 Harry Potter?",
]
df = md.DataFrame({"query": query_list})
调用 embed():
# simple_output=True returns the raw embedding data directly,
# skipping provider response metadata.
embedding_result = embedding_model.embed(
df["query"],
simple_output=True,
)
print("Output dtypes:")
print(embedding_result.dtypes)
触发执行:
embedding_executed = embedding_result.execute()
print("Embedding result:")
print(embedding_executed)
5. 文本生成推理#
加载生成模型:
gen_model = read_odps_model("qwen3-max", project="bigdata_public_modelset")
print(gen_model)
构造 Prompt 并执行:
messages = [
{"role": "system", "content": "You are a concise and accurate QA assistant."},
{"role": "user", "content": "{query}"},
]
# simple_output=True returns the generated text directly,
# skipping the raw provider response structure.
gen_result = gen_model.generate(
df,
prompt_template=messages,
simple_output=True,
)
gen_executed = gen_result.execute()
print("Generation result:")
print(gen_executed)
可选:结果持久化
# md.to_odps_table(embedding_result, "bailian_embedding_results", overwrite=True).execute()
# md.to_odps_table(gen_result, "bailian_generate_results", overwrite=True).execute()
6. 资源清理#
session.destroy()
print("Session destroyed and resources released.")
附录:百炼模型 vs 内置托管模型#
对比项 |
百炼预注册模型 |
内置托管模型 |
|---|---|---|
加载 API |
|
|
来源 |
百炼平台已注册模型 |
MaxFrame 托管模型目录 |
典型模型名 |
|
|
推理方法 |
|
|
内置托管模型示例:
from maxframe.learn.contrib.llm.models.managed import ManagedTextGenLLM
llm = ManagedTextGenLLM(name="qwen2.5-1.5b-instruct")
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "{query}"},
]
# simple_output=True returns the generated text directly,
# skipping the raw provider response structure.
result = llm.generate(df, prompt_template=messages, simple_output=True)
result.execute()
常见问题排查#
问题 |
原因 |
解决方案 |
|---|---|---|
|
项目未开通 DPE |
联系管理员开通 DPE 引擎。 |
|
模型名称错误或地域不支持 |
使用 |
|
推理配额未配置 |
请设置有效的 |
|
推理任务超时 |
减少批次大小并通过 LogView 排查日志。 |
|
懒执行计算图尚未触发 |
确认已调用 |