𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀

तुम्ही मॉडेल प्रशिक्षित केले. नोटबुक चालते. डेमो काम करतो.

मग तुम्ही ते तुमच्या सहकाऱ्याला पाठवता. चाळीस मिनिटांनंतर, तुम्हाला एक संदेश मिळतो. त्यांना CUDA एरर येत आहे. Torch इम्पोर्ट होत नाहीये. त्यांच्याकडे चुकीचे Python व्हर्जन आहे.

तुम्ही ते शब्द बोलता ज्याची प्रत्येक इंजिनिअरला भीती वाटते: "हे माझ्या मशीनवर चालते."

"हे माझ्या मशीनवर चालते" ही एक कबुली आहे. याचा अर्थ असा की तुमचा कोड तुमच्या लॅपटॉपवरील अशा गोष्टींवर अवलंबून आहे ज्यांचे तुम्ही दस्तऐवजीकरण (documentation) केले नाही. तुम्ही एखादे Python व्हर्जन, सिस्टम लायब्ररी किंवा CUDA टूलकिट विसरलात.

Docker हे थांबवते.

एका सामान्य वेब ॲपमध्ये कमी डिपेंडेंसीज (dependencies) असतात. AI प्रोजेक्ट्समध्ये अनेक स्तर (layers) असतात:

• Python पॅकेजेस: Torch, Transformers, आणि Numpy. • सिस्टम लायब्ररी: Libgl1 किंवा ffmpeg. • CUDA स्टॅक: ड्राइव्हर्स आणि टूलकिट्स. • मॉडेल वेट्स (Model weights): तुमच्या रेपोमध्ये नसलेल्या मोठ्या फाइल्स. • Python व्हर्जन: तुमच्या लॅपटॉपवर 3.10, सर्व्हरवर 3.12.

requirements.txt फाईल फक्त एकच स्तर पकडते. Docker ते सर्व स्तर पकडते.

Docker इमेज म्हणजे संगणकाचा एक स्नॅपशॉट (snapshot) आहे. यामध्ये OS, Python, पॅकेजेस आणि तुमचा कोड समाविष्ट असतो. कंटेनर म्हणजे त्या स्नॅपशॉटची चालणारी प्रत (running copy) आहे.

कंटेनर तुमच्या मशीनचे कर्नल (kernel) शेअर करतो. तो काही सेकंदात सुरू होतो. एकच इमेज तुमच्या लॅपटॉपवर आणि क्लाउड GPU सर्व्हरवर सारख्याच पद्धतीने चालते.

तुमची रेसिपी लिहिण्यासाठी Dockerfile वापरा. 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"]

चुका टाळण्यासाठी या नियमांचे पालन करा:

• तुमचे व्हर्जन पिन (pin) करा. फक्त torch वापरण्याऐवजी torch==2.3.1 वापरा. यामुळे पुनरुत्पादनक्षमता (reproducibility) सुनिश्चित होते. • प्रथम requirements कॉपी करा. यामुळे Docker कॅशिंगचा (caching) वापर होतो. जर तुमचा कोड बदलला पण पॅकेजेस बदलले नाहीत, तर पुन्हा इन्स्टॉल करणे टाळून हे बिल्ड्स जलद करते. • वेट्ससाठी व्हॉल्युम्स (volumes) वापरा. 5GB चे मॉडेल्स इमेजमध्ये ठेवू नका. तुमच्या स्थानिक फोल्डरला कंटेनरशी जोडण्यासाठी व्हॉल्यूम वापरा. • एका कंटेनरमध्ये एकच प्रोसेस ठेवा. तुमचा API आणि डेटाबेस एकाच कंटेनरमध्ये ठेवू नका. त्यांना जोडण्यासाठी Docker Compose वापरा.

Docker सह, तुमच्या सहकाऱ्याला फक्त दोन कमांड्सची गरज आहे:

git clone your-repo
docker compose up

आता एनवायरमेंट एरर्स (environment errors) डीबग करण्याची गरज नाही. हे प्रत्येक मशीनवर चालते.

Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7

ऐच्छिक शिक्षण समुदाय: https://t.me/GyaanSetuAi