التحكم في إصدار البيانات والنماذج باستخدام 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, إلخ)                                     │
│                                                      │
└─────────────────────────────────────────────────────┘
  1. الملف الكبير → DVC يحسب الـ hash، يُخزن في الذاكرة المؤقتة
  2. ملف البيانات الوصفية (.dvc) → يحتوي الـ hash، مُخزن في Git
  3. التخزين البعيد → دفع الذاكرة المؤقتة إلى 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، لكن يتعامل مع الملفات الكبيرة بكفاءة.

التالي، سنتعلم كيفية التحكم في إصدار مجموعات البيانات والعمل مع إصدارات بيانات متعددة. :::

اختبار

الوحدة 2: التحكم في إصدار البيانات والنماذج باستخدام DVC

خذ الاختبار