Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker
Dockerfile berbilang peringkat, imej asas CUDA, COPY artifak model, titik akhir kesihatan.
Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker ialah pelajaran Pelajari AI dengan Python percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pelajari AI dengan Python, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.
Mengapa Membekaskan Model Pembelajaran Mesin
Model pembelajaran mesin bergantung pada versi Python tertentu, pustaka sistem dan versi pakej yang ditetapkan. Docker membungkus semua ini ke dalam satu imej tidak berubah supaya model berjalan dengan cara yang sama pada komputer riba, pelaksana integrasi berterusan dan kluster pengeluaran.
Bagi pembelajaran mesin, masalah terbesar ialah perubahan kebergantungan: model yang dilatih menggunakan numpy 1.24 boleh berfungsi secara tidak dijangka pada numpy 2.0 tanpa sebarang amaran. Bekas membekukan versi tersebut.
Imej Satu Peringkat yang Naif
Percubaan pertama memasang semuanya dalam satu peringkat. Cara ini berfungsi, tetapi turut menghantar alat binaan (pengkompil, cache dan pengepala pembangunan) ke dalam imej akhir, menjadikannya besar serta meningkatkan permukaan serangan.
FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "serve.py"]Binaan Berbilang Peringkat: Idea Asas
Binaan berbilang peringkat menggunakan satu peringkat untuk menyusun dan memasang kebergantungan (peringkat pembina), kemudian hanya menyalin artifak yang telah siap ke dalam peringkat akhir yang bersih. Alat yang hanya diperlukan untuk binaan tidak pernah sampai ke pengeluaran.
- Peringkat pembina: imej asas lengkap, menjalankan
pip install - Peringkat akhir: imej asas ringkas, menyalin pakej yang dipasang
Peringkat Pembina: pip install
Peringkat pembina memasang pakej ke dalam awalan yang diketahui supaya pakej itu mudah disalin keluar. Menggunakan --user meletakkannya di bawah /root/.local, iaitu satu direktori yang boleh kita ambil kemudian.
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txtPeringkat Akhir Ringkas
Peringkat akhir bermula daripada python:3.11-slim dan menyalin pakej yang dipasang daripada peringkat pembina. Imej ringkas ini tidak menyertakan rantaian alat binaan, lalu mengurangkan saiz imej sebanyak ratusan megabait.
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
COPY . .Menyalin Pemberat Model
Pemberat model yang besar hendaklah disalin sebagai lapisan tersendiri supaya Docker dapat menyimpannya dalam cache. Jika hanya kod anda berubah, lapisan pemberat akan digunakan semula dan binaan semula dapat dilakukan dengan pantas.
COPY model/ /app/model/
COPY src/ /app/src/EXPOSE Port Penyajian
Pelayan inferens (FastAPI, Triton, TorchServe) mendengar pada satu port. EXPOSE 8000 mendokumenkan bahawa kontena menyediakan perkhidmatan pada port 8000. Arahan ini tidak menerbitkan port itu sendiri; anda masih perlu memetakannya dengan -p 8000:8000 pada masa jalan.
EXPOSE 8000
CMD ["uvicorn", "src.serve:app", "--host", "0.0.0.0", "--port", "8000"]Asas HEALTHCHECK
Alat orkestrasi perlu mengetahui sama ada pelayan model masih aktif. Arahan HEALTHCHECK menjalankan satu perintah pada selang masa tertentu; keluar dengan nilai bukan sifar menandakan kontena tidak sihat supaya kontena itu boleh dimulakan semula atau dikeluarkan daripada pengimbang beban.
HEALTHCHECK dengan curl
Pola yang biasa digunakan ialah mengakses titik akhir /health yang ringan. curl -f gagal (keluar dengan nilai bukan sifar) untuk sebarang ralat HTTP, iaitu tepat seperti yang dijangkakan oleh HEALTHCHECK.
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1Titik Akhir Kesihatan Minimum
Aplikasi penyajian anda hendaklah menyediakan titik akhir pantas yang mengesahkan model telah dimuatkan, tanpa menjalankan inferens penuh.
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}Dockerfile Lengkap
Dengan menggabungkan semuanya: peringkat pembina memasang kebergantungan, peringkat akhir yang ringan menyalin kebergantungan tersebut bersama model, mendedahkan port 8000 dan mengisytiharkan pemeriksaan kesihatan.
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"]Uji Pantas
Uji pemahaman anda tentang binaan berbilang peringkat.
Ringkasan
Anda telah mempelajari cara mengkontenakan model ML dengan Dockerfile bertaraf produksi:
- Binaan berbilang peringkat: pembina memasang kebergantungan, kemudian peringkat akhir yang ringan menyalinnya
- EXPOSE 8000 mendokumenkan port penyajian
- HEALTHCHECK CMD curl membolehkan alat orkestrasi mengesan kontena yang tidak aktif
- Salin pemberat sebagai lapisan tersendiri yang boleh disimpan dalam cache
Seterusnya, anda akan melaksanakan model berkontena pada perkhidmatan awan terurus.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 53
- Pelajaran
- 225
Soalan Lazim
Adakah pelajaran “Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pelajari AI dengan Python, termasuk “Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker”?
Dockerfile berbilang peringkat, imej asas CUDA, COPY artifak model, titik akhir kesihatan. Anda berlatih Pelajari AI dengan Python menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pelajari AI dengan Python?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pelajari AI dengan Python di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pelajari AI dengan Python ini?
Ya. Setiap pelajaran Pelajari AI dengan Python menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membungkus Model Pembelajaran Mesin dalam Kontena dengan Docker
- Pelaksanaan Awan: AWS SageMaker
- Penyajian Berprestasi Tinggi dengan Triton Inference Server
- Penskalaan dan Penskalaan Automatik Titik Akhir Model