Memuat dan Menyajikan Model Pembelajaran Mesin
Memuat model joblib/keras saat mulai, inferensi aman untuk thread, endpoint prediksi batch.
Memuat dan Menyajikan Model Pembelajaran Mesin adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Masalah Pemuatan
Memuat model dari disk membutuhkan waktu lama. Jika Anda memuatnya ulang pada setiap permintaan, latensi akan melonjak. Solusinya: muat model sekali saat inisialisasi dan gunakan kembali untuk semua permintaan.
Peristiwa Inisialisasi
Pengait @app.on_event("startup") berjalan sekali saat server mulai, sehingga menjadi tempat yang tepat untuk memuat model sebelum permintaan apa pun tiba.
from fastapi import FastAPI
import joblib
app = FastAPI()
@app.on_event("startup")
def load_model():
app.state.model = joblib.load("model.joblib")app.state untuk Penyimpanan Aman bagi Utas
app.state adalah tempat yang disarankan untuk menyimpan objek bersama seperti model. Objek disimpan sekali saat inisialisasi dan hanya dibaca selama permintaan berlangsung, sehingga terhindar dari masalah variabel global tingkat modul yang dapat diubah.
from fastapi import Request
@app.post("/predict")
def predict(req: PredictRequest, request: Request):
model = request.app.state.model
return {"prediction": model.predict([req.features])[0]}Mengapa Bukan Variabel Global?
Variabel global modul biasa dapat digunakan, tetapi mengaitkan pemuatan dengan waktu impor dan lebih sulit diuji atau diganti. app.state mengaitkan siklus hidup objek dengan aplikasi, sehingga lebih rapi dan merupakan pola yang disarankan FastAPI.
Pendekatan lifespan Modern
FastAPI versi baru menggantikan on_event dengan pengelola konteks lifespan, yang menangani inisialisasi dan penghentian di satu tempat.
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app):
app.state.model = joblib.load("model.joblib") # startup
yield
app.state.model = None # shutdown
app = FastAPI(lifespan=lifespan)Pemanasan Model
Prediksi pertama sering kali lambat karena kerangka kerja melakukan inisialisasi secara malas pada pemanggilan pertama. Panaskan model saat inisialisasi dengan prediksi tiruan agar permintaan pengguna nyata pertama sudah dapat diproses dengan cepat.
@app.on_event("startup")
def load_and_warm():
app.state.model = joblib.load("model.joblib")
app.state.model.predict([[0.0, 0.0, 0.0, 0.0]]) # warm-upMengapa Pemanasan Penting
Tanpa pemanasan, permintaan pertama setelah penerapan dapat berkali-kali lebih lambat, memperburuk latensi ekor dan bahkan mungkin menyebabkan pemeriksaan kesehatan gagal. Satu inferensi tiruan saat inisialisasi menanggung biaya ini di luar jalur kritis.
Titik Akhir Prediksi Kumpulan
Memprediksi banyak baris dalam satu pemanggilan jauh lebih efisien daripada banyak pemanggilan tunggal, karena model melakukan vektorisasi pada suatu kumpulan. Terima daftar vektor fitur dan kembalikan daftar prediksi.
class BatchRequest(BaseModel):
items: list[list[float]]
@app.post("/predict/batch")
def predict_batch(req: BatchRequest, request: Request):
model = request.app.state.model
preds = model.predict(req.items)
return {"predictions": preds.tolist()}Tunggal vs Kumpulan
- Tunggal: satu masukan, latensi terendah per pemanggilan, klien sederhana.
- Kumpulan: banyak masukan sekaligus, throughput jauh lebih tinggi, ideal untuk penilaian luring.
Menyediakan keduanya mencakup kasus penggunaan waktu nyata dan massal.
Membaca dari Status di Titik Akhir
Setiap titik akhir membaca model bersama melalui request.app.state.model, tanpa pernah memuatnya ulang, sehingga semua permintaan berbagi satu instance di memori.
Menggabungkannya
Penyiapan siap produksi: muat dan panaskan model dalam lifespan/inisialisasi, simpan di app.state, lalu sediakan titik akhir prediksi tunggal dan kumpulan yang membaca dari status. Cara ini meminimalkan latensi dan memaksimalkan throughput.
Pemeriksaan Singkat
Uji pengetahuan Anda tentang penyajian model.
Ringkasan
Anda memuat model sekali melalui inisialisasi/lifespan, menyimpannya di app.state agar dapat digunakan kembali dengan aman oleh utas, menambahkan prediksi tiruan untuk pemanasan, serta menyediakan titik akhir kumpulan untuk meningkatkan throughput. Berikutnya: membuat API dalam Docker.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memuat dan Menyajikan Model Pembelajaran Mesin” gratis?
Ya — teks lengkap “Memuat dan Menyajikan Model Pembelajaran Mesin” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memuat dan Menyajikan Model Pembelajaran Mesin”?
Memuat model joblib/keras saat mulai, inferensi aman untuk thread, endpoint prediksi batch. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Memuat dan Menyajikan Model Pembelajaran Mesin” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar FastAPI untuk Insinyur Pembelajaran Mesin
- Skema Pydantic untuk Permintaan dan Respons
- Memuat dan Menyajikan Model Pembelajaran Mesin
- Mengemas API Model dengan Docker