𝗙𝗿𝗼𝗺 𝗖𝗵𝗮𝗼𝘀 𝘁𝗼 𝗖𝗼𝗻𝘀𝗶𝘀𝘁𝗲𝗻𝗰𝘆: 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗔𝗜 𝗪𝗼𝗿𝗸𝗳𝗹𝗼𝘄𝘀
நீங்கள் மாடலைப் பயிற்றுவித்தீர்கள். நோட்புக் இயங்குகிறது. டெமோ வேலை செய்கிறது.
பிறகு அதை உங்கள் சக ஊழியருக்கு அனுப்புகிறீர்கள். நாற்பது நிமிடங்களுக்குப் பிறகு, உங்களுக்கு ஒரு செய்தி வருகிறது. அவர்களுக்கு CUDA பிழை ஏற்படுகிறது. Torch இறக்குமதி (import) செய்ய முடிவதில்லை. அவர்களுக்குத் தவறான Python பதிப்பு உள்ளது.
ஒவ்வொரு பொறியாளரும் அஞ்சும் வார்த்தைகளை நீங்கள் சொல்கிறீர்கள்: "இது என் கணினியில் வேலை செய்கிறது."
"இது என் கணினியில் வேலை செய்கிறது" என்பது ஒரு ஒப்புதல் வாக்குமூலம். உங்கள் குறியீடு (code), நீங்கள் ஆவணப்படுத்தாத உங்கள் லேப்டாப்பில் உள்ள விஷயங்களைச் சார்ந்து இருக்கிறது என்று அர்த்தம். நீங்கள் ஒரு Python பதிப்பு, ஒரு சிஸ்டம் லைப்ரரி அல்லது ஒரு CUDA toolkit-ஐத் தவறவிட்டிருக்கலாம்.
Docker இதைத் தடுக்கிறது.
ஒரு சாதாரண வெப் ஆப் (web app) சில சார்புகளை (dependencies) மட்டுமே கொண்டிருக்கும். ஆனால் AI திட்டங்கள் பல அடுக்குகளைக் கொண்டவை:
• Python தொகுப்புகள் (packages): Torch, Transformers, மற்றும் Numpy. • சிஸ்டம் லைப்ரரிகள் (System libraries): Libgl1 அல்லது ffmpeg. • CUDA ஸ்டேக் (stack): Drivers மற்றும் toolkits. • மாடல் வெயிட்டுகள் (Model weights): உங்கள் ரெப்போவில் (repo) இல்லாத பெரிய கோப்புகள். • Python பதிப்பு: உங்கள் லேப்டாப்பில் 3.10, சர்வரில் 3.12.
ஒரு requirements.txt கோப்பு ஒரு அடுக்கை மட்டுமே சேமிக்கும். Docker அவை அனைத்தையும் சேமிக்கும்.
ஒரு Docker image என்பது ஒரு கணினியின் ஸ்னாப்ஷாட் (snapshot) போன்றது. இதில் OS, Python, தொகுப்புகள் மற்றும் உங்கள் குறியீடு ஆகியவை அடங்கும். ஒரு container என்பது அந்த ஸ்னாப்ஷாட்டின் இயங்கும் நகலாகும்.
ஒரு container உங்கள் மெஷின் கர்னலை (kernel) பகிர்ந்து கொள்கிறது. இது சில நொடிகளில் தொடங்கிவிடும். ஒரே ஒரு image உங்கள் லேப்டாப்பிலும் மற்றும் கிளவுட் GPU சர்வரிலும் ஒரே மாதிரியாக இயங்கும்.
உங்கள் செய்முறையை (recipe) எழுத ஒரு Dockerfile-ஐப் பயன்படுத்தவும். இதோ PyTorch-க்கான ஒரு டெம்ப்ளேட் (template):
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 என்பதற்குப் பதிலாக torch==2.3.1 என்பதைப் பயன்படுத்தவும். இது மீண்டும் அதே முடிவைப் பெறுவதை (reproducibility) உறுதி செய்கிறது. • முதலில் requirements-களை நகலெடுக்கவும் (Copy requirements first). இது Docker கேச்சிங் (caching) முறையைப் பயன்படுத்துகிறது. உங்கள் குறியீடு மாறினாலும், தொகுப்புகள் மாறவில்லை என்றால், மீண்டும் நிறுவுவதைத் தவிர்ப்பதன் மூலம் இது பில்டுகளை (builds) வேகமாக்குகிறது. • வெயிட்டுகளுக்கு (weights) volumes-களைப் பயன்படுத்தவும். 5GB மாடல்களை இமேஜிற்குள் வைக்க வேண்டாம். உங்கள் லோக்கல் ஃபோல்டரை (local folder) கண்டெய்னருடன் இணைக்க ஒரு volume-ஐப் பயன்படுத்தவும். • ஒரு கண்டெய்னருக்கு ஒரு செயல்முறை (process) மட்டுமே. உங்கள் API மற்றும் டேட்டாபேஸை (database) ஒரே கண்டெய்னரில் வைக்க வேண்டாம். அவற்றை இணைக்க Docker Compose-ஐப் பயன்படுத்தவும்.
Docker மூலம், உங்கள் சக ஊழியருக்கு இரண்டு கட்டளைகள் (commands) மட்டுமே தேவைப்படும்:
git clone your-repo
docker compose up
இனி என்விரான்மென்ட் (environment) பிழைகளைத் தேடித் தேடித் திருத்த வேண்டியதில்லை. இது எல்லா மெஷின்களிலும் வேலை செய்யும்.
Source: https://dev.to/sachinsingh2156/from-chaos-to-consistency-docker-for-modern-ai-workflows-2gb7
விருப்பத்தேர்வு கற்றல் சமூகம்: https://t.me/GyaanSetuAi