تكاملات أدوات التعلم الآلي #2 DVC لإدارة إصدارات بياناتك

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
التحكم في إصدار البيانات (DVC) هو أداة قوية لإدارة وتحديد إصدارات مجموعات البيانات والنماذج الكبيرة في مشاريع التعلم الآلي.
DVC هي أداة مفتوحة المصدر تعمل مع مجموعة واسعة من خيارات التخزين، بما في ذلك القرص المحلي، وأنظمة ملفات الشبكة، وAmazon S3، وGoogle Cloud Storage، والعديد غيرها. يمكن استخدام DVC بالاقتران مع أطر عمل التعلم الآلي الشائعة مثل TensorFlow وPyTorch وscikit-learn.
بالإضافة إلى تتبع التغييرات في البيانات والنماذج، يمكن لـ DVC أيضًا مساعدة المستخدمين في إدارة التبعيات بين المكونات المختلفة لمشروع التعلم الآلي، مثل التعليمات البرمجية والبيانات والنماذج. من خلال تتبع هذه التبعيات، يسهل DVC إعادة إنتاج تجارب التعلم الآلي ومشاركة المشاريع مع الآخرين.
تحديات التحكم في الإصدارات في التعلم الآلي
يُعد التحكم في الإصدارات في التعلم الآلي مهمة أصعب مقارنة بهندسة البرمجيات للأسباب التالية:
- مجموعات بيانات كبيرة ومعقدة: في التعلم الآلي، يمكن أن تكون مجموعات البيانات المستخدمة لتدريب واختبار النماذج ضخمة، مما يجعل إدارتها وتحديد إصداراتها أمرًا صعبًا. بالإضافة إلى ذلك، يمكن أن تكون البيانات غير منظمة، مما يجعل تتبع التغييرات في البيانات بمرور الوقت أمرًا صعبًا.
- مكونات متعددة: غالبًا ما تتضمن مشاريع التعلم الآلي مكونات متعددة، بما في ذلك البيانات والتعليمات البرمجية والنماذج، مما يجعل تتبع التغييرات في كل مكون وكيفية تفاعلها مع بعضها البعض أمرًا صعبًا.
- عملية تطوير تكرارية: في التعلم الآلي، غالبًا ما تكون عملية التطوير تكرارية، حيث يقوم المطورون بتحديث النماذج بشكل متكرر بناءً على بيانات جديدة أو تحسين دقة النموذج. يمكن أن تكون إدارة هذه التغييرات والإصدارات معقدة وتستغرق وقتًا طويلاً.
يحل DVC هذه المشكلات من خلال توفير طريقة بسيطة وفعالة للتحكم في إصدارات كل من البيانات والنماذج في مشاريع التعلم الآلي. يتيح لك DVC التحكم في إصدارات التعليمات البرمجية والبيانات والنماذج، وتتبع العلاقات بينها. باستخدام DVC، يمكنك بسهولة إعادة إنتاج التجارب السابقة، والتعاون مع أعضاء الفريق، وأتمتة سير العمل لتبسيط عملية التطوير.
تثبيت وإعداد أنظمة التحكم في الإصدارات
للبدء باستخدام DVC، تحتاج إلى تثبيته وإعداده على جهازك المحلي. في هذا القسم، سنقدم تعليمات خطوة بخطوة حول كيفية القيام بذلك، بما في ذلك كيفية تهيئة DVC للعمل مع خدمات التخزين السحابي المختلفة وكيفية إنشاء مشروع DVC جديد.
- تثبيت DVC: الخطوة الأولى هي تثبيت DVC على جهازك المحلي. يمكنك القيام بذلك باتباع تعليمات التثبيت الخاصة بنظام التشغيل الخاص بك على موقع DVC الإلكتروني.
- إنشاء مشروع DVC جديد: بمجرد تثبيت DVC، يمكنك إنشاء مشروع DVC جديد عن طريق تشغيل الأمر التالي في محطتك الطرفية:
dvc init
سيؤدي هذا إلى إنشاء مشروع DVC جديد في دليلك الحالي.
- تهيئة DVC للعمل مع التخزين السحابي: إذا كنت ترغب في استخدام DVC مع خدمات التخزين السحابي مثل Amazon S3 أو Google Cloud Storage، فأنت بحاجة إلى تهيئة DVC للعمل مع هذه الخدمات. يمكنك القيام بذلك عن طريق إضافة جهاز بعيد جديد باستخدام الأمر التالي:
dvc remote add -d <remote-name> <storage-url>
على سبيل المثال، إذا كنت ترغب في إضافة جهاز بعيد لـ Amazon S3 باسم "my-s3-remote"، يمكنك تشغيل الأمر التالي:
dvc remote add -d my-s3-remote s3://my-bucket-name
سيؤدي هذا إلى إضافة جهاز بعيد جديد إلى مشروع DVC الخاص بك والذي تم تهيئته للعمل مع Amazon S3.
- إضافة بيانات إلى مشروع DVC الخاص بك: بمجرد إعداد مشروع DVC الخاص بك وتهيئته للعمل مع التخزين السحابي، يمكنك البدء في إضافة البيانات إليه. يمكنك القيام بذلك عن طريق تشغيل الأمر التالي:
dvc add <path-to-data-file>
سيؤدي هذا إلى إضافة ملف البيانات إلى مشروع DVC الخاص بك وإنشاء ملف DVC مطابق يتتبع التغييرات في البيانات.
- دفع التغييرات إلى التخزين البعيد: إذا قمت بتهيئة مشروع DVC الخاص بك للعمل مع التخزين البعيد، يمكنك دفع التغييرات إلى هذا التخزين عن طريق تشغيل الأمر التالي:
dvc push
سيؤدي هذا إلى دفع أي تغييرات أجريتها على بياناتك أو نماذجك إلى التخزين البعيد.
تنفيذ أوامر DVC للتحكم المحسن في الإصدار
يوفر DVC عددًا من الأوامر المفيدة لإدارة مشاريع التعلم الآلي وتحديد إصداراتها. فيما يلي قائمة ببعض أوامر DVC الأكثر استخدامًا:
dvc init: يقوم بتهيئة مشروع DVC جديد في الدليل الحالي.dvc add <path-to-file>: يضيف ملفًا إلى DVC وينشئ ملف DVC مطابقًا لتتبع التغييرات في الملف.dvc run: يقوم بتشغيل أمر أو نص برمجي مع تمكين تتبع DVC، بحيث يتم تتبع أي مدخلات ومخرجات بواسطة DVC.dvc repro: يعيد إنتاج أمر أو نص برمجي متعقب بواسطة DVC، مع ضمان تحديث جميع التبعيات.dvc push: يدفع جميع ملفات البيانات وملفات النموذج إلى التخزين عن بعد، مثل AWS S3 أو Google Cloud Storage.dvc pull: يسحب جميع ملفات البيانات وملفات النموذج من التخزين عن بعد إلى الجهاز المحلي.dvc status: يعرض حالة الملفات المتعقبة، بما في ذلك ما إذا تم تعديلها أو إضافتها أو حذفها.dvc log: يعرض قائمة بجميع إصدارات الملف، بالإضافة إلى رسائل الالتزام المقابلة والبيانات الوصفية الأخرى.
إعادة إنتاج تجارب التعلم الآلي باستخدام DVC
إحدى أهم فوائد استخدام DVC هي قدرته على إعادة إنتاج تجارب التعلم الآلي. باستخدام DVC، يمكنك تحديد وتتبع التبعيات بين التعليمات البرمجية والبيانات والنماذج الخاصة بك، واستخدام dvc repro الأمر لإعادة إنتاج التجارب السابقة.
مثال لسير العمل:
إليك مثال لسير العمل لمجموعة بيانات sklearn iris باستخدام ملف .yaml:
- أولاً، قم بتهيئة مشروع DVC جديد عن طريق تشغيل الأمر
dvc init. - أنشئ
dataمجلدًا في مجلد مشروعك لتخزين مجموعة البيانات، وقم بتنزيل مجموعة بيانات sklearn iris في هذا المجلد. - أضف ملفات البيانات إلى DVC باستخدام الأمر dvc add. على سبيل المثال:
dvc add data/iris.csv. - أنشئ ملف
.yamlلتحديد مسار العمل. على سبيل المثال،iris.yaml. سيحتوي هذا الملف على الأوامر الخاصة بالمعالجة المسبقة، والتدريب، وتقييم النموذج. - حدد الخطوات في ملف
.yamlباستخدام أوامر DVC. على سبيل المثال:
stages:
preprocess:
cmd: python preprocess.py data/iris.csv data/preprocessed.csv
deps:
- data/iris.csv
outs:
- data/preprocessed.csv
train:
cmd: python train.py data/preprocessed.csv models/model.pkl
deps:
- data/preprocessed.csv
outs:
- models/model.pkl
evaluate:
cmd: python evaluate.py models/model.pkl data/iris.csv
deps:
- models/model.pkl
- data/iris.csv
- قم بتشغيل المسار باستخدام أمر dvc repro. سيقوم هذا الأمر بتشغيل الخطوات المحددة في ملف .yaml بالترتيب الصحيح، مما يضمن تحديث جميع التبعيات. على سبيل المثال:
dvc repro iris.yaml.
من خلال تحديد مسار عملك في .yaml ملف وباستخدام dvc repro الأمر، يمكنك بسهولة إعادة إنتاج تجاربك، وتتبع إصدارات بياناتك ونماذجك، والتعاون مع أعضاء الفريق في مشروع تعلم الآلة الخاص بك.
فيما يلي مثال لسير العمل:
- قم بإعداد بيانات الاعتماد ومعلومات نقطة النهاية المناسبة لخادم S3:
dvc remote add -d s3remote s3://your-s3-bucket-name/path/to/models
- اجلب ملفات النموذج الضرورية من خادم S3 إلى الجهاز المحلي:
dvc pull -r s3remote path/to/models/model.pkl
- انسخ ملفات النموذج التي تم تنزيلها إلى الخادم البعيد المستهدف:
scp path/to/models/model.pkl user@target-remote-server:/path/to/models/
- استخدم الملفات المنسوخة للاستدلال على الخادم البعيد المستهدف:
# تحميل النموذج
import pickle
with open('/path/to/models/model.pkl', 'rb') as f:
model = pickle.load(f)
# إجراء التنبؤات
X_test = [[5.1, 3.5, 1.4, 0.2], [7.7, 3.0, 6.1, 2.3], [6.0, 3.0, 4.8, 1.8]]
y_pred = model.predict(X_test)
print(y_pred)
يفترض سير العمل هذا أنك قمت بإعداد بيانات الاعتماد ومعلومات نقطة النهاية الضرورية لخادم S3، وأن لديك وصولاً إلى كل من الخوادم المحلية والبعيدة المستهدفة. يمكنك تعديل سير العمل بناءً على احتياجاتك وإعداداتك الخاصة.
كيف تتكامل TrueFoundry مع DVC:
تتكامل TrueFoundry بسلاسة مع سجل نماذج DVC للسماح لك بنشر النماذج المسجلة في DVC إلى مجموعة Kubernetes الخاصة بك باستخدام TrueFoundry.
📌
بصرف النظر عن استخدام DVC لإدارة النماذج وتتبع التجارب، يمكنك أيضًا استخدام MLFoundy لتتبع التجارب من Truefoundry.
الخطوة 1 - التثبيت والإعداد:
- إعداد DVC
# تثبيت DVC ودعم S3
pip install dvc dvc-s3
# تهيئة Git في الدليل المحلي
git init
# تهيئة DVC في الدليل المحلي
dvc init
# تعيين وحدة تخزين DVC البعيدة كسلة التخزين الخاصة بك
dvc remote add s3://<your_bucket_name>
ملاحظة: سيتعين عليك تكوين واجهة سطر الأوامر S3 الخاصة بك لكي يعمل هذا.
- استيراد dvc
import dvc
x
- تثبيت servicefoundry
pip install -U "servicefoundry"
- تسجيل الدخول إلى truefoundry
sfy login
الخطوة 2 - تدريب النموذج وتسجيله:
سنقوم بتدريب نموذج التعلم الآلي الخاص بنا وحفظه كملف joblib.
ثم سنضيف النموذج ومقاييس التقييم باستخدام **`dvc add`**
ثم سندفع ملف joblib الخاص بنا إلى dvc عبر **`dvc push`**
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import joblib
import os
# تحميل ومعالجة البيانات
X, y = load_iris(as_frame=True, return_X_y=True)
X = X.rename(columns={
"sepal length (cm)": "sepal_length",
"sepal width (cm)": "sepal_width",
"petal length (cm)": "petal_length",
"petal width (cm)": "petal_width",
})
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# تهيئة النموذج
clf = LogisticRegression(solver="liblinear")
# تدريب النموذج
clf.fit(X_train, y_train)
# تقييم النموذج
preds = clf.predict(X_test)
# حفظ النموذج باستخدام joblib و DVC
joblib.dump(clf, "model.joblib")
os.system("dvc add model.joblib")
# تسجيل مقاييس التقييم
report = classification_report(y_test, preds, output_dict=True)
with open("classification_report.txt", "w") as f:
f.write(str(report))
# دفع النموذج ومقاييس التقييم إلى التخزين البعيد
os.system("dvc push")
الخطوة 3 - إنشاء تطبيق استدلال وملف تبعيات:
سيتعين علينا إنشاء ملفين لنشرهما على truefoundry، وهما app.py ملف يحتوي على كود تطبيقنا، و requirements.txt ملف يحتوي على تبعياتنا.
.
├── app.py
├── deploy.py
└── requirements.txt
- app.py:
import os
import joblib
import pandas as pd
from fastapi import FastAPI
# استرجاع النموذج من S3 باستخدام DVC
os.system("dvc pull model.joblib.dvc")
# تحميل النموذج
model = joblib.load("model.joblib")
# تحميل النموذج
app = FastAPI()
@app.post("/predict")
def predict(
sepal_length: float, sepal_width: float, petal_length: float, petal_width: float
):
data = dict(
sepal_length=sepal_length,
sepal_width=sepal_width,
petal_length=petal_length,
petal_width=petal_width,
)
prediction = int(model.predict(pd.DataFrame([data]))[0])
return {"prediction": prediction}
- requirements.txt:
fastapi
pandas
joblib
dvc
الخطوة 4 - استخدم حزمة تطوير بايثون (SDK) الخاصة بـ truefoundry وقم بتهيئة النشر
- deploy.py:
import argparse
import logging
from servicefoundry import Build, PythonBuild, Service, Resources, Port
# إعداد المسجل
logging.basicConfig(level=logging.INFO)
# إعداد محلل الوسائط
parser = argparse.ArgumentParser()
parser.add_argument("--workspace_fqn", required=True, type=str)
args = parser.parse_args()
service = Service(
name="fastapi",
image=Build(
build_spec=PythonBuild(
command="uvicorn app:app --port 8000 --host 0.0.0.0",
requirements_path="requirements.txt",
)
),
ports=[
Port(
port=8000,
host="ml-deploy-aditya-ws-8000.demo.truefoundry.com",
)
],
resources=Resources(
cpu_request=0.25,
cpu_limit=0.5,
memory_request=200,
memory_limit=400,
ephemeral_storage_request=200,
ephemeral_storage_limit=400,
),
)
service.deploy(workspace_fqn=args.workspace_fqn)
الخطوة 5 - انشر خدمتك عبر Truefoundry
قم بتشغيل الأمر التالي ومرر
- Workspace FQN: الذي يمكنك العثور عليه في لوحة التحكم
python deploy.py --workspace_fqn your_workspace_fqn
وها هو! في السجلات، يمكنك العثور على لوحة تحكم خدمتك المنشورة. وبعد ذلك، في الزاوية العلوية اليمنى، ستجد نقطة نهاية تطبيقاتك المنشورة.

TrueFoundry هي منصة PaaS لنشر تعلم الآلة (ML) فوق Kubernetes لتسريع سير عمل المطورين مع منحهم مرونة كاملة في اختبار ونشر النماذج، وضمان الأمان والتحكم الكاملين لفريق البنية التحتية. من خلال منصتنا، نمكّن فرق تعلم الآلة من نشر ومراقبة النماذج في 15 دقيقة بموثوقية 100% وقابلية للتوسع والقدرة على التراجع في ثوانٍ - مما يسمح لهم بتوفير التكلفة وإطلاق النماذج إلى الإنتاج بشكل أسرع، مما يحقق قيمة تجارية حقيقية.
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI




















.png)
.webp)










.webp)






