Lær AI med Python · leksjon

Konteinerisering av ML-modeller med Docker

Dockerfile i flere trinn, CUDA-basiskoblinger, COPY av modellartefakter og helseendepunkter.

Leksjon 1 av 413 trinn

Konteinerisering av ML-modeller med Docker er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hvorfor containerisere ML-modeller

Maskinlæringsmodeller er avhengige av en bestemt Python-versjon, systembiblioteker og låste pakkeversjoner. Docker pakker alt dette i ett uforanderlig image, slik at modellen kjører identisk på en bærbar datamaskin, en CI-runner og en produksjonsklynge.

For ML er avhengighetsdrift det største problemet: En modell som er trent med numpy 1.24, kan oppføre seg umerkelig feil med numpy 2.0. En container låser disse versjonene.

Det naive imaget med ett trinn

Et første forsøk installerer alt i ett trinn. Det fungerer, men inkluderer byggeverktøy (kompilatorer, cacher og utviklingsheader-filer) i det endelige imaget, noe som gjør det stort og øker angrepsflaten.

FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "serve.py"]

Bygg med flere trinn: ideen

Et bygg med flere trinn bruker ett trinn til å kompilere og installere avhengigheter (builder), og kopierer deretter bare de ferdige artefaktene til et rent final-trinn. Verktøy som bare trengs under byggingen, når aldri produksjonen.

  • Builder-trinn: fullstendig base-image, kjører pip install
  • Final-trinn: slankt base-image, kopierer installerte pakker

Builder-trinn: pip install

Builder-trinnet installerer pakker i et kjent prefiks, slik at de er enkle å kopiere ut. Med --user plasseres de under /root/.local, i én enkelt katalog som vi kan hente senere.

FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt

Det slanke final-trinnet

Final-trinnet starter fra python:3.11-slim og kopierer de installerte pakkene fra builder-trinnet. Slim-imaget utelater byggeverktøykjedene, noe som reduserer imagestørrelsen med flere hundre megabyte.

FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY . .

Kopiere modellvekter

Store modellvekter bør kopieres som sitt eget lag, slik at Docker kan bufre dem. Hvis bare koden endres, kan vektlaget brukes på nytt, og ombyggingene går raskt.

COPY model/ /app/model/
COPY src/ /app/src/

EXPOSE serveringsporten

Inferensservere (FastAPI, Triton, TorchServe) lytter på en port. EXPOSE 8000 dokumenterer at containeren tilbyr en tjeneste på port 8000. Den publiserer ikke porten i seg selv; du må fortsatt mappe den med -p 8000:8000 under kjøring.

EXPOSE 8000
CMD ["uvicorn", "src.serve:app", "--host", "0.0.0.0", "--port", "8000"]

Grunnleggende om HEALTHCHECK

Orkestratorer må vite om modellserveren er i drift. En HEALTHCHECK-instruksjon kjører en kommando med jevne mellomrom; en avslutningsverdi ulik null markerer containeren som usunn, slik at den kan startes på nytt eller fjernes fra lastbalansereren.

HEALTHCHECK med curl

Et vanlig mønster er å treffe et lett /health-endepunkt. curl -f mislykkes (returnerer en verdi ulik null) ved enhver HTTP-feil, og det er akkurat dette HEALTHCHECK forventer.

HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
  CMD curl -f http://localhost:8000/health || exit 1

Et minimalt helseendepunkt

Serveringsappen bør eksponere et raskt endepunkt som bekrefter at modellen er lastet inn, uten å kjøre en full inferens.

from fastapi import FastAPI

app = FastAPI()
model = None  # loaded at startup

@app.get("/health")
def health():
    return {"status": "ok", "model_loaded": model is not None}

Den komplette Dockerfile

Alt samlet: En byggefase installerer avhengigheter, en slank sluttfase kopierer dem sammen med modellen, eksponerer port 8000 og deklarerer en helsesjekk.

FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt

FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY model/ /app/model/
COPY src/ /app/src/
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
  CMD curl -f http://localhost:8000/health || exit 1
CMD ["uvicorn", "src.serve:app", "--host", "0.0.0.0", "--port", "8000"]

Hurtigtest

Test forståelsen din av flertrinnsbygginger.

Oppsummering

Du har lært å containerisere en ML-modell med en Dockerfile tilpasset produksjon:

  • Flertrinnsbygging: byggefase installerer avhengigheter, og den slanke sluttfasen kopierer dem
  • EXPOSE 8000 dokumenterer serveringsporten
  • HEALTHCHECK CMD curl gjør det mulig for orkestratorer å oppdage døde containere
  • Kopier vektene som et eget lag som kan bufres

Deretter skal du distribuere en containerisert modell til en administrert skytjeneste.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
53
Leksjoner
225

Ofte stilte spørsmål

Er leksjonen «Konteinerisering av ML-modeller med Docker» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Konteinerisering av ML-modeller med Docker», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hva lærer jeg i «Konteinerisering av ML-modeller med Docker»?

Dockerfile i flere trinn, CUDA-basiskoblinger, COPY av modellartefakter og helseendepunkter. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lær AI med Python?

Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Konteinerisering av ML-modeller med Docker»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?

Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Konteinerisering av ML-modeller med Docker
  2. Utrulling i skyen: AWS SageMaker
  3. Høyytelsesmodellservering med Triton Inference Server
  4. Skalering og automatisk skalering av modellendepunkter
← Tilbake til Lær AI med Python