MaxFrame AI Function adalah solusi end-to-end dari Alibaba Cloud MaxCompute untuk skenario inferensi offline dengan Large Language Models (LLMs). Solusi ini mengintegrasikan pemrosesan data dengan kemampuan AI guna menurunkan hambatan penerapan aplikasi LLM tingkat enterprise. Topik ini menjelaskan cara menggunakan MaxFrame AI Function untuk memanggil LLM dengan resource GU.
Applicability
Persiapan lingkungan
Kit pengembangan perangkat lunak (SDK) MaxFrame versi 2.3.0 atau yang lebih baru.
Python versi 3.11.
Kuota resource GPU (GU) telah diaktifkan untuk proyek MaxCompute.
Konfigurasi izin
Akun saat ini memiliki setidaknya izin baca dan tulis tingkat proyek untuk MaxCompute.
Anda telah mengajukan permohonan dan membeli kuota GU MaxCompute (gu_quota_name).
Konfigurasikan lingkungan
gu_quota_name diperlukan untuk menggunakan 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)
# -------------------------------
# Inisialisasi Sesi MaxFrame
# -------------------------------
o = ODPS(
# Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur ke ID AccessKey Anda,
# dan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur ke Rahasia AccessKey Anda.
# Jangan gunakan string ID AccessKey dan Rahasia AccessKey secara langsung.
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" # Ganti dengan Nama Kuota GU Anda.
print("LogView address:", session.get_logview_address())Panggil LLM terkelola (LLM.generate)
Langkah 1: Siapkan data masukan
import pandas as pd
from IPython.display import HTML
# Atur opsi tampilan untuk 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>")
# Buat daftar kueri.
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?",
]
# Konversi ke DataFrame MaxFrame.
df = md.DataFrame({"query": query_list})
df.execute() Langkah 2: Inisialisasi instans LLM
from maxframe.learn.contrib.llm.models.managed import ManagedTextGenLLM
llm = ManagedTextGenLLM(
name="Qwen3-4B-Instruct-2507-FP8" # Nama model harus sesuai persis.
)Untuk informasi selengkapnya mengenai model yang didukung, lihat Model yang didukung untuk MaxFrame AI Function (terus diperbarui).
Langkah 3: Definisikan templat prompt
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Please answer the following question: {query}"},
]Sintaksis templat:
Gunakan placeholder
{column_name}untuk secara otomatis menggantinya dengan nilai dari bidang yang sesuai dalam DataFrame.Dukungan percakapan multi-turn (daftar
messages).Prompt sistem (system) digunakan untuk mendefinisikan perilaku role.
Langkah 4: Jalankan tugas generasi
result_df = llm.generate(
df,# Data masukan
prompt_template=messages,
running_options={"max_tokens": 4096, # Panjang output maksimum
"verbose": True # Aktifkan mode output log verbose
},
params={"temperature": 0.7},
)
# Eksekusi dan dapatkan hasilnya.
result_df.execute()Deskripsi output
result_df adalah DataFrame MaxFrame yang berisi bidang-bidang berikut:
Bidang | Tipe | Deskripsi |
| string | Data masukan asli |
| string | Respons yang dihasilkan oleh model |
| string | Alasan, seperti |
| int | Jumlah token masukan |
| int | Jumlah token output |
| int | Total jumlah token |
Kiat debugging dan penyetelan performa
Optimisasi performa dan biaya
Optimisasi | Rekomendasi |
Ukuran batch | Batasi setiap batch hingga |
Alokasi GU |
|
Tingkat paralelisme | MaxFrame secara otomatis menjadwalkan pekerjaan konkuren. Kendalikan hal ini dengan |
Cache hasil antara | Gunakan |
Pengaturan timeout | Tambahkan |
Kiat debugging
Lihat log eksekusi
print(session.get_logview_address()) # Klik tautan untuk melihat log pekerjaan MaxFrame secara real-time.Uji skala kecil
df_sample = df.head(2) # Ambil dua entri data untuk pengujian. result_sample = llm.generate(df_sample, prompt_template=messages, running_options={"gu": 2}) result_sample.execute()Periksa penggunaan sumber daya
Anda dapat melihat status eksekusi pekerjaan secara detail di MaxFrame Logview.