Oppikaa tekoälyä Pythonilla · Oppitunti

ML-mallien kontittaminen Dockerilla

Monivaiheinen Dockerfile, CUDA-perusotokset, malliartefaktin COPY, terveystarkistuksen päätepisteet.

Oppitunti 1/413 vaihetta

ML-mallien kontittaminen Dockerilla on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Miksi ML-mallit kannattaa kontittaa

Koneoppimismallit riippuvat tietystä Python-versiosta, järjestelmäkirjastoista ja tarkasti määritetyistä pakettiversioista. Docker paketoi kaiken tämän yhdeksi muuttumattomaksi imageksi, joten malli toimii samalla tavalla kannettavalla tietokoneella, CI-runnerissa ja tuotantoklusterissa.

ML:ssä suurin ongelma on riippuvuuksien version vaihtuminen: mallin, joka on koulutettu numpy 1.24-versiolla, toiminta voi muuttua huomaamatta virheelliseksi numpy 2.0-versiossa. Kontti lukitsee nämä versiot.

Yksivaiheinen perusimage

Ensimmäisessä yrityksessä kaikki asennetaan yhteen vaiheeseen. Se toimii, mutta lopulliseen imageen päätyvät myös build-työkalut (kääntäjät, välimuistit ja kehitysotsakkeet), mikä tekee imagesta suuren ja kasvattaa sen hyökkäyspintaa.

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

Monivaiheiset buildit: idea

Monivaiheisessa buildissä yhtä vaihetta käytetään riippuvuuksien kääntämiseen ja asentamiseen (builder), minkä jälkeen valmiit tuotokset kopioidaan puhtaaseen final-vaiheeseen. Vain buildia varten tarvittavat työkalut eivät koskaan päädy tuotantoon.

  • Builder-vaihe: täysi pohjaimage, suorittaa komennon pip install
  • Final-vaihe: kevyt pohjaimage, kopioi asennetut paketit

Builder-vaihe: pip install

Builder asentaa paketit tunnettuun prefiksiin, jotta ne on helppo kopioida ulos. --user-valitsimen käyttäminen sijoittaa ne hakemistoon /root/.local, joka on yksi myöhemmin helposti kopioitava hakemisto.

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

Lopullinen kevyt vaihe

Lopullinen vaihe alkaa imagesta python:3.11-slim ja kopioi asennetut paketit builder-vaiheesta. Kevyestä imagesta puuttuvat build-työkaluketjut, mikä pienentää imagen kokoa sadoilla megatavuilla.

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

Mallipainojen kopioiminen

Suuret mallipainot kannattaa kopioida omaksi kerroksekseen, jotta Docker voi välimuistittaa ne. Jos vain koodinne muuttuu, painokerros voidaan käyttää uudelleen ja koonti on nopea.

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

EXPOSE-palveluportin määrittäminen

Inferenssipalvelimet (FastAPI, Triton, TorchServe) kuuntelevat porttia. EXPOSE 8000 dokumentoi, että kontti palvelee portissa 8000. Se ei julkaise porttia itsestään, vaan portti on edelleen yhdistettävä ajon aikana komennolla -p 8000:8000.

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

HEALTHCHECK-perusteet

Orkestrointijärjestelmien on tiedettävä, onko mallipalvelin toiminnassa. HEALTHCHECK-ohje suorittaa komennon tietyin väliajoin. Nollasta poikkeava paluuarvo merkitsee kontin epäterveeksi, jolloin se voidaan käynnistää uudelleen tai poistaa kuormantasaajasta.

HEALTHCHECK ja curl

Yleinen toimintamalli kutsuu kevyttä /health-päätepistettä. curl -f epäonnistuu (paluuarvo on nollasta poikkeava) minkä tahansa HTTP-virheen yhteydessä, mikä vastaa täsmälleen HEALTHCHECK-ohjeen tarpeita.

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

Minimaalinen terveystarkistuksen päätepiste

Palvelusovelluksenne kannattaa tarjota nopea päätepiste, joka vahvistaa mallin latautuneen suorittamatta täyttä inferenssiä.

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}

Täydellinen Dockerfile

Kun kaikki yhdistetään, koontivaihe asentaa riippuvuudet, kompakti lopullinen vaihe kopioi ne ja mallin, julkaisee portin 8000 ja määrittää terveystarkistuksen.

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"]

Pikatesti

Testatkaa monivaiheisia koonteja koskevaa ymmärrystänne.

Kertaus

Opitte kontittamaan ML-mallin tuotantokelpoisella Dockerfile-tiedostolla:

  • Monivaiheinen koonti: koontivaihe asentaa riippuvuudet ja kompakti lopullinen vaihe kopioi ne
  • EXPOSE 8000 dokumentoi palveluportin
  • HEALTHCHECK CMD curl auttaa orkestrointijärjestelmiä havaitsemaan toimimattomat kontit
  • Kopioikaa painot omaksi välimuistitettavaksi kerroksekseen

Seuraavaksi otatte kontitetun mallin käyttöön hallitussa pilvipalvelussa.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”ML-mallien kontittaminen Dockerilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “ML-mallien kontittaminen Dockerilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”ML-mallien kontittaminen Dockerilla”?

Monivaiheinen Dockerfile, CUDA-perusotokset, malliartefaktin COPY, terveystarkistuksen päätepisteet. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”ML-mallien kontittaminen Dockerilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. ML-mallien kontittaminen Dockerilla
  2. Pilvikäyttöönotto: AWS SageMaker
  3. Tehokas tarjoilu Triton Inference Serverillä
  4. Mallipäätepisteiden skaalaus ja automaattinen skaalaus
← Takaisin: Oppikaa tekoälyä Pythonilla