𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀
તમે મોડેલને ટ્રેન કર્યું. નોટબુક ચાલે છે. ડેમો કામ કરે છે.
પછી તમે તે તમારા સાથીદારને મોકલો છો. ચાલીસ મિનિટ પછી, તમને એક મેસેજ મળે છે. તેમને CUDA એરર આવે છે. Torch ઇમ્પોર્ટ થતું નથી. તેમની પાસે ખોટું Python વર્ઝન છે.
તમે એવા શબ્દો કહો છો જેનાથી દરેક એન્જિનિયર ડરે છે: "તે મારા મશીન પર ચાલે છે."
"તે મારા મશીન પર ચાલે છે" એ એક કબૂલાત છે. તેનો અર્થ એ છે કે તમારો કોડ તમારા લેપટોપ પરની એવી વસ્તુઓ પર આધારિત છે જેનું તમે ડોક્યુમેન્ટેશન કર્યું નથી. તમે Python વર્ઝન, સિસ્ટમ લાઇબ્રેરી અથવા CUDA ટૂલકિટ ભૂલી ગયા છો.
Docker આને અટકાવે છે.
એક સામાન્ય વેબ એપમાં થોડી જ ડિપેન્ડન્સીઝ હોય છે. AI પ્રોજેક્ટ્સમાં ઘણા લેયર્સ હોય છે:
• Python પેકેજ: Torch, Transformers, અને Numpy. • સિસ્ટમ લાઇબ્રેરીઝ: Libgl1 અથવા ffmpeg. • CUDA સ્ટેક: Drivers અને toolkits. • મોડેલ વેટ્સ (weights): મોટા ફાઇલો જે તમારા રિપો (repo) માં નથી. • Python વર્ઝન: તમારા લેપટોપ પર 3.10, સર્વર પર 3.12.
requirements.txt ફાઇલ ફક્ત એક જ લેયરને કેપ્ચર કરે છે. Docker તે બધાને કેપ્ચર કરે છે.
Docker image એ કમ્પ્યુટરનું સ્નેપશોટ છે. તેમાં OS, Python, પેકેજ અને તમારો કોડ સામેલ છે. Container એ તે સ્નેપશોટની ચાલતી નકલ (running copy) છે.
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) કરો. ફક્ત torch ને બદલે torch==2.3.1 નો ઉપયોગ કરો. આ પુનરાવર્તિતતા (reproducibility) સુનિશ્ચિત કરે છે. • પહેલા requirements કોપી કરો. આ Docker caching નો ઉપયોગ કરે છે. જો તમારો કોડ બદલાય પણ તમારા પેકેજ ન બદલાય, તો તે ફરીથી ઇન્સ્ટોલ કરવાનું ટાળીને બિલ્ડ્સને ઝડપી બનાવે છે. • વેટ્સ (weights) માટે volumes નો ઉપયોગ કરો. 5GB ના મોડેલ્સને image ની અંદર ન મૂકો. તમારા લોકલ ફોલ્ડરને container સાથે જોડવા માટે volume નો ઉપયોગ કરો. • દરેક container માટે એક પ્રોસેસ. તમારા API અને ડેટાબેઝને એક જ container માં ન મૂકો. તેમને જોડવા માટે Docker Compose નો ઉપયોગ કરો.
Docker સાથે, તમારા સાથીદારને ફક્ત બે કમાન્ડની જરૂર છે:
git clone your-repo
docker compose up
હવે એન્વાયરમેન્ટ એરર્સનું ડિબગિંગ કરવાની જરૂર નથી. તે દરેક મશીન પર ચાલે છે.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi