מכאוס לעקביות: Docker עבור תהליכי עבודה ב-AI
אימנת את המודל. ה-notebook רץ. הדמו עובד.
ואז אתה שולח אותו לחבר לצוות. ארבעים דקות לאחר מכן, אתה מקבל הודעה. יש להם שגיאת CUDA. Torch לא עובר import. יש להם גרסת Python לא נכונה.
אתה אומר את המילים שכל מהנדס חושש מהן: "זה עובד אצלי במחשב".
"זה עובד אצלי במחשב" היא הודאה. זה אומר שהקוד שלך תלוי בדברים שנמצאים בלפטופ שלך ולא תיעדת. פספסת גרסת Python, ספריית מערכת, או CUDA toolkit.
Docker עוצר את זה.
לאפליקציית ווב טיפוסית יש מעט תלויות (dependencies). לפרויקטים של AI יש שכבות רבות:
• חבילות Python: Torch, Transformers, ו-Numpy. • ספריות מערכת: Libgl1 או ffmpeg. • ה-CUDA stack: Drivers ו-toolkits. • משקלי מודל (Model weights): קבצים גדולים שאינם ב-repo שלך. • גרסת Python: 3.10 בלפטופ שלך, 3.12 בשרת.
קובץ requirements.txt לוכד רק שכבה אחת. Docker לוכד את כולן.
Docker image הוא snapshot של מחשב. הוא כולל את ה-OS, Python, חבילות והקוד שלך. Container הוא עותק רץ של ה-snapshot הזה.
Container משתף את ה-kernel של המכונה שלך. הוא עולה תוך שניות. Image אחד רץ באותו אופן בלפטופ שלך ובשרת 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 your versions). השתמש ב-torch==2.3.1 במקום רק torch. זה מבטיח יכולת שחזור (reproducibility). • העתק את ה-requirements קודם. זה משתמש ב-Docker caching. זה הופך את ה-builds למהירים על ידי דילוג על התקנות מחדש אם הקוד שלך משתנה אך החבילות שלך לא. • השתמש ב-volumes עבור משקלים (weights). אל תכניס מודלים של 5GB לתוך ה-image. השתמש ב-volume כדי לקשר את התיקייה המקומית שלך ל-container. • תהליך אחד לכל container. אל תשים את ה-API והדאטה-בייס שלך בתוך container אחד. השתמש ב-Docker Compose כדי לקשר ביניהם.
עם Docker, חבר הצוות שלך צריך רק שתי פקודות:
git clone your-repo
docker compose up
אין יותר ניפוי שגיאות (debugging) של סביבת עבודה. זה עובד בכל מכונה.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
קהילת למידה (אופציונלית): https://t.me/GyaanSetuAi