గందరగోళం నుండి స్థిరత్వం వరకు: AI వర్క్ఫ్లోల కోసం Docker
మీరు మోడల్ను ట్రైన్ చేశారు. నోట్బుక్ రన్ అవుతోంది. డెమో పనిచేస్తోంది.
ఆ తర్వాత మీరు దానిని మీ టీమ్మేట్కు పంపిస్తారు. నలభై నిమిషాల తర్వాత, మీకు ఒక మెసేజ్ వస్తుంది. వారికి CUDA ఎర్రర్ వచ్చింది. Torch ఇంపోర్ట్ అవ్వడం లేదు. వారి వద్ద తప్పు Python వెర్షన్ ఉంది.
ప్రతి ఇంజనీర్ భయపడే మాటను మీరు చెబుతారు: "ఇది నా మెషీన్లో పనిచేస్తోంది."
"ఇది నా మెషీన్లో పనిచేస్తోంది" అనేది ఒక ఒప్పుకోలు. అంటే మీ కోడ్, మీరు డాక్యుమెంట్ చేయని మీ లాప్టాప్లోని అంశాలపై ఆధారపడి ఉందని అర్థం. మీరు ఒక Python వెర్షన్ను, సిస్టమ్ లైబ్రరీని లేదా CUDA టూల్కిట్ను మర్చిపోయారు.
Docker దీనిని నిరోధిస్తుంది.
సాధారణ వెబ్ యాప్కు కొన్ని డిపెండెన్సీలు మాత్రమే ఉంటాయి. AI ప్రాజెక్ట్లకు అనేక పొరలు (layers) ఉంటాయి:
• Python ప్యాకేజీలు: Torch, Transformers, మరియు Numpy. • సిస్టమ్ లైబ్రరీలు: Libgl1 లేదా ffmpeg. • CUDA స్టాక్: డ్రైవర్లు మరియు టూల్కిట్లు. • మోడల్ వెయిట్స్: మీ రిపో (repo)లో లేని పెద్ద ఫైళ్లు. • Python వెర్షన్: మీ లాప్టాప్లో 3.10, సర్వర్లో 3.12.
requirements.txt ఫైల్ కేవలం ఒక పొరను మాత్రమే అందిస్తుంది. Docker వాటన్నింటినీ అందిస్తుంది.
Docker ఇమేజ్ అనేది ఒక కంప్యూటర్ యొక్క స్నాప్షాట్. ఇందులో OS, Python, ప్యాకేజీలు మరియు మీ కోడ్ ఉంటాయి. కంటైనర్ అనేది ఆ స్నాప్షాట్ యొక్క రన్నింగ్ కాపీ.
కంటైనర్ మీ మెషీన్ కెర్నల్ను పంచుకుంటుంది. ఇది సెకన్లలో ప్రారంభమవుతుంది. ఒకే ఇమేజ్ మీ లాప్టాప్లో మరియు క్లౌడ్ 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ని ఉపయోగించండి. • ప్రతి కంటైనర్కు ఒక ప్రాసెస్ మాత్రమే. మీ API మరియు డేటాబేస్ను ఒకే కంటైనర్లో ఉంచకండి. వాటిని లింక్ చేయడానికి Docker Composeని ఉపయోగించండి.
Dockerతో, మీ టీమ్మేట్కు కేవలం రెండు కమాండ్లు మాత్రమే అవసరం:
git clone your-repo
docker compose up
ఇకపై ఎన్విరాన్మెంట్ ఎర్రర్లను డీబగ్ చేయాల్సిన అవసరం లేదు. ఇది ప్రతి మెషీన్లో పనిచేస్తుంది.
మూలం: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
ఐచ్ఛిక అభ్యాస సమూహం: https://t.me/GyaanSetuAi