ಗೊಂದಲದಿಂದ ಸ್ಥಿರತೆಯವರೆಗೆ: AI ವರ್ಕ್ಫ್ಲೋಗಳಿಗಾಗಿ Docker
ನೀವು ಮಾಡೆಲ್ ಅನ್ನು ತರಬೇತಿಗೊಳಿಸಿದ್ದೀರಿ. ನೋಟ್ಬುಕ್ ಚಾಲನೆಯಲ್ಲಿದೆ. ಡೆಮೊ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ.
ನಂತರ ನೀವು ಅದನ್ನು ನಿಮ್ಮ ಸಹೋದ್ಯೋಗಿಗೆ ಕಳುಹಿಸುತ್ತೀರಿ. ನಲವತ್ತು ನಿಮಿಷಗಳ ನಂತರ, ನಿಮಗೆ ಒಂದು ಸಂದೇಶ ಬರುತ್ತದೆ. ಅವರಿಗೆ CUDA ದೋಷ (error) ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. Torch ಇಂಪೋರ್ಟ್ ಆಗುವುದಿಲ್ಲ. ಅವರಲ್ಲಿ ತಪ್ಪಾದ Python ವರ್ಷನ್ ಇದೆ.
ಪ್ರತಿಯೊಬ್ಬ ಎಂಜಿನಿಯರ್ ಭಯಪಡುವ ಮಾತುಗಳನ್ನು ನೀವು ಹೇಳುತ್ತೀರಿ: "ಇದು ನನ್ನ ಮೆಷಿನಿನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ."
"ಇದು ನನ್ನ ಮೆಷಿನಿನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದೆ" ಎಂಬುದು ಒಂದು ಒಪ್ಪಿಗೆಯಾಗಿದೆ. ಇದರರ್ಥ ನಿಮ್ಮ ಕೋಡ್ ನಿಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿರುವ, ನೀವು ದಾಖಲಿಸದ ವಿಷಯಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದರ್ಥ. ನೀವು Python ವರ್ಷನ್, ಸಿಸ್ಟಮ್ ಲೈಬ್ರರಿ ಅಥವಾ CUDA ಟೂಲ್ಕಿಟ್ ಅನ್ನು ಮರೆತಿದ್ದೀರಿ.
Docker ಇದನ್ನು ತಡೆಯುತ್ತದೆ.
ಸಾಮಾನ್ಯ ವೆಬ್ ಆಪ್ಗಳು ಕೆಲವೇ ಅವಲಂಬನೆಗಳನ್ನು (dependencies) ಹೊಂದಿರುತ್ತವೆ. ಆದರೆ AI ಪ್ರಾಜೆಕ್ಟ್ಗಳು ಅನೇಕ ಪದರಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ:
• Python ಪ್ಯಾಕೇಜ್ಗಳು: Torch, Transformers, ಮತ್ತು Numpy. • ಸಿಸ್ಟಮ್ ಲೈಬ್ರರಿಗಳು: Libgl1 ಅಥವಾ ffmpeg. • CUDA ಸ್ಟ್ಯಾಕ್: Drivers ಮತ್ತು toolkits. • ಮಾಡೆಲ್ ವೇಯ್ಟ್ಗಳು (Model weights): ನಿಮ್ಮ ರೆಪೋದಲ್ಲಿಲ್ಲದ ದೊಡ್ಡ ಫೈಲ್ಗಳು. • Python ವರ್ಷನ್: ನಿಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿ 3.10, ಸರ್ವರ್ನಲ್ಲಿ 3.12.
requirements.txt ಫೈಲ್ ಕೇವಲ ಒಂದು ಪದರವನ್ನು ಮಾತ್ರ ಸೆರೆಹಿಡಿಯುತ್ತದೆ. Docker ಇವೆಲ್ಲವನ್ನೂ ಸೆರೆಹಿಡಿಯುತ್ತದೆ.
Docker image ಎಂಬುದು ಕಂಪ್ಯೂಟರ್ನ ಒಂದು ಸ್ನ್ಯಾಪ್ಶಾಟ್ (snapshot). ಇದು OS, Python, ಪ್ಯಾಕೇಜ್ಗಳು ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. Container ಎಂಬುದು ಆ ಸ್ನ್ಯಾಪ್ಶಾಟ್ನ ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರತಿ (copy).
Container ನಿಮ್ಮ ಮೆಷಿನ್ ಕರ್ನಲ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತದೆ. ಇದು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಒಂದು 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). ಕೇವಲ torch ಬದಲಿಗೆ torch==2.3.1 ಬಳಸಿ. ಇದು ಪುನರಾವರ್ತನೆಯನ್ನು (reproducibility) ಖಚಿತಪಡಿಸುತ್ತದೆ. • ಮೊದಲು requirements ಅನ್ನು ಕಾಪಿ ಮಾಡಿ. ಇದು Docker caching ಅನ್ನು ಬಳಸುತ್ತದೆ. ನಿಮ್ಮ ಕೋಡ್ ಬದಲಾದರೂ ಪ್ಯಾಕೇಜ್ಗಳು ಬದಲಾಗದಿದ್ದರೆ, ಇದು ಮರು-ಇನ್ಸ್ಟಾಲ್ಗಳನ್ನು ತಪ್ಪಿಸುವ ಮೂಲಕ ಬಿಲ್ಡ್ಗಳನ್ನು ವೇಗಗೊಳಿಸುತ್ತದೆ. • ವೇಯ್ಟ್ಗಳಿಗಾಗಿ volumes ಬಳಸಿ. 5GB ಮಾಡೆಲ್ಗಳನ್ನು ಇಮೇಜ್ನ ಒಳಗೆ ಹಾಕಬೇಡಿ. ನಿಮ್ಮ ಲೋಕಲ್ ಫೋಲ್ಡರ್ ಅನ್ನು ಕಂಟೇನರ್ನೊಂದಿಗೆ ಲಿಂಕ್ ಮಾಡಲು volume ಬಳಸಿ. • ಪ್ರತಿ ಕಂಟೇನರ್ಗೆ ಒಂದು ಪ್ರಕ್ರಿಯೆ (process). ನಿಮ್ಮ 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