𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀
Anda telah melatih model tersebut. Notebook berjalan lancar. Demo berfungsi dengan baik.
Kemudian anda menghantarnya kepada rakan sepasukan. Empat puluh minit kemudian, anda menerima mesej. Mereka mengalami ralat CUDA. Torch tidak boleh diimport. Mereka menggunakan versi Python yang salah.
Anda menyebut kata-kata yang ditakuti oleh setiap jurutera: "Ia berfungsi di komputer saya."
"Ia berfungsi di komputer saya" adalah satu pengakuan. Ini bermakna kod anda bergantung kepada perkara pada komputer riba anda yang tidak anda dokumentasikan. Anda terlepas pandang versi Python, perpustakaan sistem, atau toolkit CUDA.
Docker menghentikan masalah ini.
Aplikasi web biasa mempunyai sedikit kebergantungan. Projek AI mempunyai banyak lapisan:
• Pakej Python: Torch, Transformers, dan Numpy. • Perpustakaan sistem: Libgl1 atau ffmpeg. • Stack CUDA: Driver dan toolkit. • Pemberat model (Model weights): Fail besar yang tiada dalam repo anda. • Versi Python: 3.10 pada komputer riba anda, 3.12 pada pelayan.
Fail requirements.txt hanya merangkumi satu lapisan. Docker merangkumi kesemuanya.
Imej Docker ialah snapshot sebuah komputer. Ia merangkumi OS, Python, pakej, dan kod anda. Kontena ialah salinan yang sedang berjalan daripada snapshot tersebut.
Kontena berkongsi kernel mesin anda. Ia bermula dalam masa beberapa saat. Satu imej berjalan dengan cara yang sama pada komputer riba anda dan pelayan GPU awan.
Gunakan Dockerfile untuk menulis resipi anda. Berikut adalah templat untuk PyTorch:
FROM python:3.11-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libgl1 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "predict.py"]
Ikuti peraturan ini untuk mengelakkan kesilapan:
• Tetapkan (Pin) versi anda. Gunakan torch==2.3.1 dan bukannya sekadar torch. Ini memastikan kebolehulangan (reproducibility). • Salin requirements terlebih dahulu. Ini menggunakan caching Docker. Ia mempercepatkan proses binaan (build) dengan melangkau pemasangan semula jika kod anda berubah tetapi pakej anda tidak. • Gunakan volume untuk pemberat (weights). Jangan letakkan model bersaiz 5GB di dalam imej. Gunakan volume untuk menghubungkan folder tempatan anda ke kontena. • Satu proses bagi setiap kontena. Jangan letakkan API dan pangkalan data anda dalam satu kontena. Gunakan Docker Compose untuk menghubungkannya.
Dengan Docker, rakan sepasukan anda hanya memerlukan dua arahan:
git clone your-repo
docker compose up
Tiada lagi penyahpepijatan (debugging) ralat persekitaran. Ia berfungsi pada setiap mesin.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi