Jednorazowe wczytywanie modelu podczas uruchamiania
Użyj zdarzeń lifespan, aby wczytywanie odbywało się tylko raz
Jednorazowe wczytywanie modelu podczas uruchamiania to bezpłatna lekcja MLOps Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej MLOps Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs MLOps Academy zawiera 4 lekcji w sumie.
Pułapka wolnego endpointu
Jeśli wywołasz joblib.load wewnątrz /predict, model zostanie wczytany ponownie przy każdym żądaniu. W przypadku dużych modeli jest to powolne i marnotrawne. 🐢
Wczytaj go tylko raz
Rozwiązanie jest proste: wczytaj model raz podczas uruchamiania usługi, przechowuj go w pamięci i używaj ponownie przy każdej predykcji.
Mechanizm lifespan
FastAPI udostępnia funkcję lifespan, która pozwala wykonać konfigurację przed rozpoczęciem obsługi żądań oraz sprzątanie po jej zakończeniu. To właściwe miejsce na wczytanie modelu.
Napisz asynchroniczny menedżer kontekstu
Asynchroniczną funkcję ozdabia się dekoratorem asynccontextmanager. Kod przed yield jest wykonywany przy uruchomieniu, a kod po nim — przy zamykaniu.
from contextlib import asynccontextmanagerPrzechowaj model w stanie
Wczytaj model przy uruchomieniu i zapisz go w app.state — współdzielonym miejscu, do którego każdy moduł obsługujący żądania może później uzyskać dostęp.
@asynccontextmanager
async def lifespan(app):
app.state.model = joblib.load("model.joblib")
yieldPodłącz go do aplikacji
Przekaż funkcję lifespan podczas tworzenia aplikacji. Od tej chwili FastAPI wykona kod wczytujący model raz podczas uruchamiania serwera.
app = FastAPI(lifespan=lifespan)Odczytaj go w trasie
Wewnątrz /predict pobierz już wczytany model z app.state. Bez odczytu z dysku — tylko szybkie wyszukanie w pamięci.
@app.post("/predict")
def predict(req: Request):
model = req.app.state.modelPosprzątaj przy zamykaniu
Wszystko po instrukcji yield jest wykonywane podczas zatrzymywania aplikacji, co świetnie nadaje się do zamykania plików lub zwalniania pamięci GPU zajmowanej przez model.
yield
app.state.model = NoneSzybsze pierwsze żądanie
Ponieważ wczytywanie zakończyło się podczas uruchamiania, nawet pierwszy użytkownik otrzymuje szybką odpowiedź bez opóźnienia związanego z wczytywaniem modelu. ⚡
Kontroluj liczbę procesów roboczych
Każdy worker uvicorn to osobny proces z własną kopią modelu. Więcej procesów oznacza większe zużycie pamięci, dlatego należy dobrać ich liczbę świadomie.
Dlaczego to ważne
Jednorazowe wczytanie modelu to podstawowa optymalizacja jego udostępniania: zmniejsza opóźnienia, ogranicza operacje wejścia-wyjścia na dysku i zapewnia przewidywalne zużycie pamięci przy rzeczywistym ruchu. 📈
Szybkie sprawdzenie
Chcesz, aby model został wczytany dokładnie raz podczas uruchamiania usługi. Gdzie powinno się to odbyć?
Podsumowanie
Przeniesiono wczytywanie do mechanizmu lifespan, zapisano model w app.state i odczytywano go przy każdym żądaniu. Jedno wczytanie, szybkie odpowiedzi i prawidłowe zamykanie. 🙌
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Jednorazowe wczytywanie modelu podczas uruchamiania” jest bezpłatna?
Tak — pełny tekst „Jednorazowe wczytywanie modelu podczas uruchamiania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu MLOps Academy, przejdź na CoddyKit PRO. Kurs MLOps Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Jednorazowe wczytywanie modelu podczas uruchamiania”?
Użyj zdarzeń lifespan, aby wczytywanie odbywało się tylko raz Ćwiczysz MLOps Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć MLOps Academy?
Nie wymagamy żadnego doświadczenia. MLOps Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Jednorazowe wczytywanie modelu podczas uruchamiania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji MLOps Academy?
Tak. Każda lekcja MLOps Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pierwszy endpoint /predict
- Walidacja żądań za pomocą Pydantic
- Jednorazowe wczytywanie modelu podczas uruchamiania
- Dodawanie kontroli gotowości /health