MLOps Academy · Lekcja

Jednorazowe wczytywanie modelu podczas uruchamiania

Użyj zdarzeń lifespan, aby wczytywanie odbywało się tylko raz

Lekcja 3 z 413 kroki

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 asynccontextmanager

Przechowaj 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")
    yield

Podłą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.model

Posprzą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 = None

Szybsze 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. 🙌

Bezpłatny start

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

  1. Pierwszy endpoint /predict
  2. Walidacja żądań za pomocą Pydantic
  3. Jednorazowe wczytywanie modelu podczas uruchamiania
  4. Dodawanie kontroli gotowości /health
← Powrót do MLOps Academy