التحكم في إصدار البيانات والنماذج باستخدام DVC
أساسيات DVC
4 دقيقة للقراءة
DVC (التحكم في إصدار البيانات) يُوسع Git للتعامل مع الملفات الكبيرة ومجموعات البيانات ونماذج التعلم الآلي. يُعطيك تحكم في الإصدار للبيانات بدون تخزين كل شيء في Git.
لماذا DVC؟
| المشكلة | بدون DVC | مع DVC |
|---|---|---|
| الملفات الكبيرة | Git يبطئ، يفشل | تُتتبع عبر البيانات الوصفية |
| إصدارات مجموعات البيانات | نسخ المجلدات يدوياً | git checkout أي إصدار |
| التعاون | مشاركة عبر Dropbox/Drive | دفع/سحب مثل Git |
| قابلية التكرار | "أي بيانات استخدمت؟" | الإصدار الدقيق مُتتبع |
التثبيت
DVC يتطلب Python 3.9+:
# التثبيت الأساسي
pip install dvc
# مع دعم S3
pip install dvc[s3]
# مع دعم جميع التخزين السحابي
pip install dvc[all]
# التحقق من التثبيت
dvc version
تهيئة DVC
أعد DVC في مستودع Git موجود:
# انتقل إلى مشروعك
cd my-ml-project
# هيّئ Git (إذا لم يكن موجوداً)
git init
# هيّئ DVC
dvc init
# هذا يُنشئ:
# .dvc/ - تكوين DVC
# .dvcignore - الملفات للتجاهل
# .gitignore - مُحدث بأنماط .dvc
بعد التهيئة:
# ثبّت تهيئة DVC
git add .dvc .dvcignore
git commit -m "Initialize DVC"
كيف يعمل DVC
DVC لا يُخزن بياناتك في Git. بدلاً من ذلك:
┌─────────────────────────────────────────────────────┐
│ كيف يعمل DVC │
├─────────────────────────────────────────────────────┤
│ │
│ ملف بياناتك ملف .dvc (في Git) │
│ ┌────────────┐ ┌────────────────┐ │
│ │ data.csv │ ──────▶ │ data.csv.dvc │ │
│ │ (100 MB) │ │ (hash + meta) │ │
│ └────────────┘ └────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ذاكرة DVC المؤقتة مستودع Git │
│ (.dvc/cache) (Remote origin) │
│ │ │
│ ▼ │
│ التخزين البعيد │
│ (S3, GCS, إلخ) │
│ │
└─────────────────────────────────────────────────────┘
- الملف الكبير → DVC يحسب الـ hash، يُخزن في الذاكرة المؤقتة
- ملف البيانات الوصفية (
.dvc) → يحتوي الـ hash، مُخزن في Git - التخزين البعيد → دفع الذاكرة المؤقتة إلى S3/GCS للمشاركة
تتبع ملفك الأول
# أضف ملف بيانات لتتبع DVC
dvc add data/training_data.csv
# هذا يُنشئ:
# data/training_data.csv.dvc - البيانات الوصفية (تتبع في Git)
# data/.gitignore - يستثني الملف الفعلي
# ثبّت التغييرات
git add data/training_data.csv.dvc data/.gitignore
git commit -m "Track training data with DVC"
مثال محتوى ملف .dvc:
outs:
- md5: a3b2c1d4e5f6...
size: 104857600
hash: md5
path: training_data.csv
ذاكرة DVC المؤقتة
DVC يُخزن محتويات الملفات في ذاكرة مؤقتة محلية:
# موقع الذاكرة المؤقتة
ls .dvc/cache/
# هيكل الذاكرة المؤقتة (معنونة بالمحتوى)
.dvc/cache/
├── a3/
│ └── b2c1d4e5f6... # أول حرفين من الـ hash = المجلد
├── d7/
│ └── e8f9a0b1c2...
ملخص الأوامر الرئيسية
| الأمر | الغرض |
|---|---|
dvc init |
تهيئة DVC في المشروع |
dvc add <file> |
بدء تتبع ملف |
dvc push |
رفع إلى التخزين البعيد |
dvc pull |
تنزيل من التخزين البعيد |
dvc checkout |
استعادة الملفات من الذاكرة المؤقتة |
dvc status |
عرض حالة الملفات المُتتبعة |
.dvcignore
مثل .gitignore، لكن لـ DVC:
# .dvcignore
*.tmp
*.log
__pycache__
.ipynb_checkpoints
الرؤية الرئيسية: DVC هو "Git للبيانات"—يستخدم نفس النموذج الذهني من add وcommit وpush وpull، لكن يتعامل مع الملفات الكبيرة بكفاءة.
التالي، سنتعلم كيفية التحكم في إصدار مجموعات البيانات والعمل مع إصدارات بيانات متعددة. :::