مشکل اصلی: Git برای فایلهای بزرگ ساخته نشده!
فرض کنید در حال آموزش یک مدل هوش مصنوعی هستید. فایل مدل شما با نام model.pt حجمی حدود ۵۰۰ مگابایت دارد.
وقتی از دستورهای زیر استفاده میکنید:
git add model.pt git commit -m "add my trained model" git push origin main
Git ممکن است خطا دهد یا کاملاً از کار بیفتد. دلیلش این است که:
- Git در اصل برای کد منبع طراحی شده، یعنی فایلهای متنی کوچک.
- هر فایل ۵۰۰ مگابایتی باعث سنگین شدن کل مخزن میشود.
- همتیمیهای شما باید برای هر clone کل این حجم را دانلود کنند.
- بیشتر سرویسها مثل GitHub، فایلهای بالای ۱۰۰MB را قبول نمیکنند.
نتیجه: شما نمیتوانید مدلها، دیتاستها یا embeddings خود را با Git معمولی نسخهسازی کنید.
راهحل: Git LFS (ذخیرهسازی فایلهای بزرگ)
Git LFS به جای ذخیرهی مستقیم فایلهای بزرگ، یک فایل متنی کوچک (pointer) در مخزن قرار میدهد و فایل واقعی را در سرور جداگانهای ذخیره میکند.
نحوهی کار به شکل ساده:
1. به Git LFS میگویید که فایلهای خاص (مثلاً .pt) را ردیابی کند.
2. هنگام commit، Git به جای فایل مدل، یک فایل کوچک ۱ کیلوبایتی ذخیره میکند.
3. فایل ۵۰۰ مگابایتی واقعی در فضای LFS آپلود میشود.
4. وقتی کسی مخزن را clone میکند، فایلهای واقعی بهصورت خودکار دانلود میشوند.
مرحله ۱: راهاندازی در مخزن پروژه
cd my-ai-project git lfs install git lfs track "*.pt" git lfs track "*.pth" git lfs track "*.h5"
میتوانید پوشههای بزرگ را نیز ردیابی کنید
git lfs track "models/*" git lfs track "data/large/*"
ثبت تنظیمات ردیابی
git add .gitattributes git commit -m "track large files with Git LFS"
مرحله ۲: استفادهی معمول از Git
git add models/my_model.pt git commit -m "add trained model with 92% accuracy" git push origin main
پشت صحنه: Git LFS فایلهای بزرگ را تشخیص داده و آنها را به شکل متفاوتی مدیریت میکند.
دستورات پرکاربرد Git LFS
# دیدن اینکه چه نوع فایلهایی ردیابی میشوند git lfs track
# لیست فایلهای تحت پوشش LFS git lfs ls-files
# بررسی میزان فضای مصرفی LFS git lfs status
# کلون سریع، بدون فایلهای واقعی GIT_LFS_SKIP_SMUDGE=1 git clone your-repo-url
# سپس دانلود فایلهای واقعی git lfs pull
مثال واقعی در پروژههای هوش مصنوعی
mkdir sentiment-analysis-model cd sentiment-analysis-model git init git lfs install
git lfs track "*.pt" # مدلهای PyTorch git lfs track "*.h5" # مدلهای Keras/TensorFlow git lfs track "*.pkl" # مدلهای pickled
# اضافه کردن .gitignore echo "*.tmp" > .gitignore echo "data/raw/*.csv" >> .gitignore git add .gitattributes .gitignore git commit -m "setup LFS for model files"
پس از آموزش مدل
git add model.pt git commit -m "final sentiment model v2" git remote add origin https://github.com/yourname/sentiment-ai git push origin main
موفق باشید