التحكم في إصدار البيانات والنماذج باستخدام 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—يمكنك دائماً العودة إلى أي نقطة في تاريخ بياناتك.

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

اختبار

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

خذ الاختبار