التحكم في إصدار البيانات والنماذج باستخدام DVC
التحكم في إصدار مجموعات البيانات
4 دقيقة للقراءة
مجموعات البيانات تتطور مع الوقت—بيانات جديدة تصل، أخطاء تُصحح، ميزات تُضاف. DVC يتيح لك تتبع كل إصدار والتنقل بينها بسهولة.
إضافة مجموعات البيانات إلى DVC
الملفات الفردية
# تتبع ملف بيانات واحد
dvc add data/customers.csv
# تتبع ملف نموذج
dvc add models/classifier.pkl
المجلدات
# تتبع مجلد كامل
dvc add data/images/
# هذا يُنشئ ملف .dvc واحد للمجلد بأكمله
# data/images.dvc
ملفات متعددة مرة واحدة
# تتبع ملفات متعددة
dvc add data/train.csv data/test.csv data/validation.csv
# أو استخدم أنماط glob
dvc add data/*.parquet
إعداد التخزين البعيد
التخزين البعيد هو حيث يدفع ويسحب DVC محتويات الملفات الفعلية.
AWS S3
# أضف S3 البعيد
dvc remote add -d myremote s3://my-bucket/dvc-storage
# تكوين بيانات الاعتماد (إذا لم تستخدم ملف AWS CLI)
dvc remote modify myremote access_key_id YOUR_KEY
dvc remote modify myremote secret_access_key YOUR_SECRET
Google Cloud Storage
# أضف GCS البعيد
dvc remote add -d myremote gs://my-bucket/dvc-storage
# يستخدم بيانات اعتماد التطبيق الافتراضية
Azure Blob Storage
# أضف Azure البعيد
dvc remote add -d myremote azure://my-container/dvc-storage
# تكوين سلسلة الاتصال
dvc remote modify myremote connection_string 'your-connection-string'
التخزين المحلي/الشبكي
# مجلد محلي (للاختبار أو محركات الشبكة)
dvc remote add -d myremote /path/to/storage
# SSH البعيد
dvc remote add -d myremote ssh://user@server/path/to/storage
سير عمل الدفع والسحب
# بعد إضافة الملفات والتثبيت في Git
dvc push # رفع البيانات إلى التخزين البعيد
# على جهاز آخر (بعد git clone)
dvc pull # تنزيل البيانات من التخزين البعيد
الدفع/السحب الانتقائي
# دفع ملفات محددة فقط
dvc push data/train.csv.dvc
# سحب ما تحتاجه فقط
dvc pull data/test.csv.dvc
العمل مع إصدارات البيانات
التنقل بين الإصدارات
# انتقل إلى commit Git سابق
git checkout v1.0
# مزامنة ملفات DVC لتطابق ذلك الإصدار
dvc checkout
# ملفات بياناتك الآن تطابق حالة v1.0
عرض السجل
# شاهد تغييرات ملف DVC في سجل Git
git log --oneline data/train.csv.dvc
# قارن إصدارات البيانات
dvc diff HEAD~1
مثال عملي: التحكم في إصدار مجموعة البيانات
لنمر عبر سير عمل حقيقي:
# الإعداد الأولي
mkdir my-project && cd my-project
git init && dvc init
# أضف مجموعة البيانات الأولية
dvc add data/customers.csv
git add data/customers.csv.dvc data/.gitignore
git commit -m "Add initial customer dataset v1"
git tag v1.0
# تكوين البعيد
dvc remote add -d storage s3://my-bucket/customer-data
dvc push
# لاحقاً: حدّث مجموعة البيانات بسجلات جديدة
# (بعد تعديل customers.csv)
dvc add data/customers.csv
git add data/customers.csv.dvc
git commit -m "Update customer dataset - added Q4 data"
git tag v2.0
dvc push
# تنقل بين الإصدارات في أي وقت
git checkout v1.0
dvc checkout
# الآن لديك v1.0 من البيانات
git checkout v2.0
dvc checkout
# الآن لديك v2.0 من البيانات
حالة البيانات والتتبع
# تحقق من حالة الملفات المُتتبعة
dvc status
# مثال الناتج:
# data/customers.csv.dvc:
# changed outs:
# modified: data/customers.csv
# شاهد ما هو مُتتبع
dvc list . --dvc-only
استيراد البيانات الخارجية
DVC يمكنه استيراد مجموعات البيانات من مستودعات أخرى:
# استيراد من مستودع DVC آخر
dvc import https://github.com/iterative/dataset-registry \
tutorials/versioning/data.xml
# استيراد وتتبع
dvc import-url https://data.example.com/dataset.zip data/
أفضل الممارسات
| الممارسة | لماذا |
|---|---|
| أنشئ إصداراً عند التغييرات المعنوية | ليس كل تعديل يحتاج commit |
| استخدم العلامات للإصدارات | سهولة الإشارة لإصدارات محددة |
| وثّق تغييرات البيانات | رسائل commit يجب أن تشرح ما تغير |
| أبقِ ملفات .dvc في Git | صغيرة، دائماً ثبّتها |
| لا تعدل ملفات .dvc يدوياً | دع DVC يديرها |
الرؤية الرئيسية: فكر في إصدارات DVC مثل فروع Git—يمكنك دائماً العودة إلى أي نقطة في تاريخ بياناتك.
التالي، سنتعلم كيفية التحكم في إصدار النماذج وتتبع مخرجات النماذج. :::