ML-mallien kontittaminen Dockerilla
Monivaiheinen Dockerfile, CUDA-perusotokset, malliartefaktin COPY, terveystarkistuksen päätepisteet.
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.txtLopullinen 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 1Minimaalinen 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.
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
- ML-mallien kontittaminen Dockerilla
- Pilvikäyttöönotto: AWS SageMaker
- Tehokas tarjoilu Triton Inference Serverillä
- Mallipäätepisteiden skaalaus ja automaattinen skaalaus