Rubicon-ml هي أداة لعلم البيانات تقوم بالتقاط وتخزين معلومات التدريب والتنفيذ النموذجية، مثل المعلمات والنتائج، بطريقة قابلة للتكرار وقابلة للبحث. ويربط تكامل git
الخاص بها هذه المدخلات والمخرجات مباشرة مع الكود النموذجي الذي أنتجها لضمان إمكانية التدقيق الكامل وإمكانية التكرار لكل من المطورين وأصحاب المصلحة على حدٍ سواء. أثناء التجربة، تسهل لوحة المعلومات استكشاف العمل المسجل وتصفيته وتصوره ومشاركته.
ملاحظة: إذا كنت تبحث عن Rubicon، جسر Java/ObjC Python، فتفضل بزيارة هذا بدلاً من ذلك.
يتكون Rubicon-ml من ثلاثة أجزاء:
fsspec
dash
intake
استخدم rubicon_ml
لالتقاط مدخلات ومخرجات النموذج مع مرور الوقت. يمكن دمجه بسهولة في نماذج Python أو خطوط الأنابيب الحالية ويدعم كلاً من التسجيل المتزامن (بحيث يمكن تسجيل تجارب متعددة بالتوازي) والتواصل غير المتزامن مع S3 (وبالتالي لن يتم حظر عمليات القراءة والكتابة عبر الشبكة).
وفي الوقت نفسه، قم بمراجعة البيانات المسجلة بشكل دوري داخل لوحة معلومات Rubicon لتوجيه عملية تعديل النموذج في الاتجاه الصحيح. تتيح لك لوحة المعلومات اكتشاف الاتجاهات بسرعة من خلال استكشاف النتائج المسجلة وتصفيتها وتصور كيفية تأثير مدخلات النموذج على مخرجات النموذج.
عندما يكون النموذج جاهزًا للمراجعة، يسهل Rubicon مشاركة مجموعات فرعية محددة من البيانات مع مراجعي النموذج وأصحاب المصلحة، مما يمنحهم السياق اللازم لمراجعة النموذج بالكامل والموافقة عليه.
قم بإلقاء نظرة على دفاتر الملاحظات التفاعلية الموجودة في هذا المجلد لتجربة rubicon_ml
بنفسك.
إليك مثال بسيط:
from rubicon_ml import Rubicon
rubicon = Rubicon (
persistence = "filesystem" , root_dir = "/rubicon-root" , auto_git_enabled = True
)
project = rubicon . create_project (
"Hello World" , description = "Using rubicon to track model results over time."
)
experiment = project . log_experiment (
training_metadata = [ SklearnTrainingMetadata ( "sklearn.datasets" , "my-data-set" )],
model_name = "My Model Name" ,
tags = [ "my_model_name" ],
)
experiment . log_parameter ( "n_estimators" , n_estimators )
experiment . log_parameter ( "n_features" , n_features )
experiment . log_parameter ( "random_state" , random_state )
accuracy = rfc . score ( X_test , y_test )
experiment . log_metric ( "accuracy" , accuracy )
ثم استكشف المشروع عن طريق تشغيل لوحة المعلومات:
rubicon_ml ui --root-dir /rubicon-root
للحصول على نظرة عامة كاملة، قم بزيارة المستندات. إذا كان لديك اقتراحات أو العثور على خطأ، يرجى فتح قضية.
مكتبة Python متاحة على Conda Forge عبر conda
وPyPi عبر pip
.
conda config --add channels conda-forge
conda install rubicon-ml
أو
pip install rubicon-ml
يستخدم المشروع كوندا لإدارة البيئات. أولاً، قم بتثبيت conda. ثم استخدم conda لإعداد بيئة التطوير:
conda env create -f environment.yml
conda activate rubicon-ml-dev
وأخيرًا، قم بتثبيت rubicon_ml
محليًا في البيئة المنشأة حديثًا.
pip install -e " .[all] "
وتنقسم الاختبارات إلى اختبارات الوحدة والتكامل. يمكن تشغيلها مباشرة في بيئة التطوير المنشَّطة عبر pytest tests/unit
أو pytest tests/integration
. أو ببساطة عن طريق تشغيل pytest
لتنفيذها جميعًا.
ملحوظة : يتم marked
بعض اختبارات التكامل عمدًا للتحكم في وقت تشغيلها (أي ليس أثناء CICD). تشمل هذه الاختبارات ما يلي:
اختبارات التكامل التي تكتب إلى أنظمة الملفات الفعلية - المحلية وS3. ستتم كتابة الملفات المحلية إلى ./test-rubicon
بالنسبة إلى مكان إجراء الاختبارات. ويجب أيضًا توفير مسار S3 لتشغيل هذه الاختبارات. بشكل افتراضي، يتم تعطيل هذه الاختبارات. لتمكينهم، قم بتشغيل:
pytest -m "write_files" --s3-path "s3://my-bucket/my-key"
اختبارات التكامل التي تقوم بتشغيل دفاتر ملاحظات Jupyter. تعد هذه الاختبارات أبطأ قليلاً من بقية الاختبارات الموجودة في المجموعة لأنها تحتاج إلى تشغيل خوادم Jupyter. بشكل افتراضي، يتم تمكينها. لتعطيلها، قم بتشغيل:
pytest -m "not run_notebooks and not write_files"
ملاحظة : عند تشغيل pytest
، يكون -m "not write_files"
هو الإعداد الافتراضي. لذا، نحتاج أيضًا إلى تطبيقه عند تعطيل اختبارات دفتر الملاحظات.
قم بتثبيت الالتزام المسبق وتكوينه لتشغيل black
و flake8
و isort
تلقائيًا أثناء الالتزامات:
pre-commit install
لإعداد البرامج النصية لـ git Hook الآن سيتم تشغيل pre-commit
تلقائيًا عند التزام git وسيضمن تنسيق التعليمات البرمجية المتسق طوال المشروع. يمكنك التنسيق دون الالتزام عبر pre-commit run
أو تخطي عمليات التحقق هذه باستخدام git commit --no-verify
.