mllint - Linter لمشاريع التعلم الآلي انتباه! لم تعد هذه الأداة محفوظة
كما هو موضح أدناه ، كتبت
mllintخلال أطروحة MSC في علوم الكمبيوتر بين فبراير وأكتوبر من عام 2021. لقد تخرجت منذ ذلك الحين ولم أعد أتطور أو الحفاظ على هذه الحزمة بنشاط.
mllintلا يزال يعمل ، لذلك لا تتردد في استخدامه! إذا وجدت أي أخطاء ، لا تتردد في إنشاء مشكلة ، ما زلت أتلقى إشعارات حول المشكلات الجديدة ، وهناك فرصة جيدة أن أنظر إليها في وقت فراغي ، لكنني لن أضمن استجابة في الوقت المناسب أو إصلاح لمشكلتك.للراغبين في إخراج البحث المنتجة في أطروحة MSC الخاصة بي:
- أطروحة ماجستير كاملة: http://resolver.tudelft.nl/uuid:B20883F8-A921-487A-8A65-89374A1F3867
- انتشار رائحة الكود في مشاريع التعلم الآلي
بارت فان أورت ، لويس كروز ، موريسيو أنيش ، آري فان ديورسن
تم نشره في Wain 2021 (ورشة العمل الأولى حول هندسة AI - هندسة البرمجيات من أجل الذكاء الاصطناعى ، المشترك مع ICSE)- "رائحة المشروع" - تجارب في تحليل جودة البرمجيات لمشاريع ML مع Mllint
بارت فان أورت ، لويس كروز ، باباك لوني ، آري فان ديورسن
تم نشره في ICSE SEIP 2022
mllint هي أداة سطر الأوامر لتقييم الجودة التقنية للتعلم الآلي (ML) ومشاريع الذكاء الاصطناعي (AI) المكتوبة في Python من خلال تحليل الكود المصدري للمشروع وبيانات وتكوين أدوات الدعم. يهدف mllint إلى ...
يقوم mllint بذلك عن طريق قياس التزام المشروع بأفضل الممارسات ML ، وفقًا لما تم جمعه واستنتاج SE4ML وقواعد Google لـ ML. لاحظ أن هذه الممارسات الأفضل ذات المستوى العالي إلى حد ما ، في حين تهدف mllint إلى تقديم نصيحة عملية ومتواجئة لمستخدميها. لذلك قد يكون mllint مُخترقًا إلى حد ما ، حيث يحاول الدفاع عن أدوات محددة لتناسب أفضل هذه الممارسات. ومع ذلك ، يهدف mllint إلى التوصية فقط بأدوات مفتوحة المصدر والممارسات التي يمكن التحقق منها علنًا. التغذية الراجعة هي بالطبع موضع ترحيب دائمًا!
تم إنشاء mllint خلال أطروحة ماجستير في علوم الكمبيوتر في مجموعة أبحاث هندسة البرمجيات (SERG) في TU Delft و ing's AI for FinTech Research Lab حول موضوع الرائحة وجودة البرمجيات في مشاريع التعلم الآلي .
راجع
docs/example-report.mdعلى ذلك.انظر أيضًا مستودع
mllint-example-projectsلاستكشاف تقارير مشروع مثال باستخدامmllintلقياس جودة المشروع وتحسينه على العديد من التكرارات.راجع أيضًا موقع
mllintعلى الإنترنت لتوثيق جميع قواعد وفئات التصميم.
يتم تجميع mllint لـ Linux و MacOs و Windows ، كلاهما 64 و 32 بت x86 (MacOS 64 بت فقط) ، بالإضافة إلى ذراع 64 بت على Linux و MacOS (Apple M1).
يتم نشر mllint إلى PYPI ، بحيث يمكن تثبيتها على مستوى العالم أو في بيئتك الحالية باستخدام pip :
pip install --upgrade mllint بدلاً من ذلك ، لإضافة mllint إلى مشروع موجود ، إذا كان مشروعك يستخدم الشعر لتبعياته:
poetry add --dev mllintأو إذا كان مشروعك يستخدم pipenv:
pipenv install --dev mllint لدى mllint تبعية ناعمة على العديد من أدوات Python التي تستخدمها لتحليلها. على الرغم من أن mllint سوف توصي بأن تضع هذه الأدوات في تبعيات تطوير مشروعك ، إلا أن هذه الأدوات مدرجة على أنها تبعيات اختيارية لـ mllint ويمكن تثبيتها مع mllint باستخدام:
pip install --upgrade mllint[tools] هناك أيضًا حاويات mllint Docker متوفرة على Docker Hub في bvobart/mllint لـ Python 3.6 و 3.7 و 3.8 و 3.9. قد تكون هذه مفيدة بشكل خاص عند تشغيل mllint في بيئات CI ، مثل إجراءات GITLAB CI أو GITHUB. راجع Docker Hub للحصول على قائمة كاملة من العلامات المتاحة التي يمكن استخدامها.
تتطلب حاويات Docker أن تقوم بتركيب المجلد مع مشروعك على الحاوية كوحدة تخزين على /app . فيما يلي مثال على كيفية استخدام حاوية Docker هذه ، على افتراض أن مشروعك موجود في المجلد الحالي. استبدل $(pwd) بالمسار الكامل إلى مجلد المشروع إذا كان في مكان آخر.
docker run -it --rm -v $( pwd ) :/app bvobart/mllint:latest تم تصميم mllint لاستخدامها على الكمبيوتر الشخصي وكذلك على أنظمة CI. لذلك ، افتح محطة في مجلد المشروع الخاص بك وقم بتشغيل أحد الأوامر التالية ، أو إضافته إلى البرنامج النصي CI لمشروعك.
لتشغيل mllint في المشروع في المجلد الحالي ، ما عليك سوى التشغيل:
mllint لتشغيل mllint في مشروع في مجلد آخر ، ما عليك سوى التشغيل:
mllint path/to/my-ml-project ستقوم mllint بتحليل مشروعك وإنشاء تقرير من تنسيقه لتحليله. بشكل افتراضي ، سيتم طباعة هذا إلى المحطة الخاصة بك.
إذا كنت تفضل بدلاً من ذلك تصدير النص RAW Markdown إلى ملف ، والذي قد يكون مفيدًا بشكل خاص عند التشغيل على CI أو --output أو -o علامة وتوفير اسم ملف. لا يقوم mllint بكتابة ملف الوجهة إذا كان موجودًا بالفعل ، إلا إذا تم استخدام --force أو -f . على سبيل المثال:
mllint --output report.md باستخدام - (اندفاعة) حيث يطبع اسم الملف تخفيض تخفيضات RAW مباشرة إلى المحطة الخاصة بك:
mllint -o -في البرامج النصية CI ، يمكن استخدام مثل هذا الإخراج RAW Markdown (سواء كملف أو مطبوع إلى الإخراج القياسي) لتقديم تعليقات على طلبات السحب/الدمج أو إنشاء صفحات wiki على مستودعك.
راجع مستندات mllint مثال على ذلك.
بالطبع ، لا تتردد في استكشاف mllint help لمزيد من المعلومات حول أوامرها واكتشاف أعلام إضافية يمكن استخدامها.
يقوم mllint بتحليل مشروعك من خلال تقييم عدة فئات من قواعد التصميم. كل فئة ، وكذلك كل قاعدة ، لديها "سبيكة" ، أي قطعة من النص المنخفض مع شرطات أو قطع للمساحات ، على سبيل المثال ، code-quality/pylint/no-issues . يحدد هذه القاعدة قاعدة وغالبًا ما يتم عرضها (إن لم تكن دائمًا) بجوار الفئة أو القاعدة التي تشير إليها.
لإدراج جميع الفئات المتاحة (المنفذة) وقواعد ربط ، قم بتشغيل:
mllint list allلسرد جميع قواعد التمكين الممكّنة ، قم بتشغيل (توفير مسار إلى مجلد المشروع اختياريًا):
mllint list enabled بشكل افتراضي ، يتم تمكين جميع قواعد mllint . راجع التكوين لمعرفة كيفية تعطيل قواعد معينة بشكل انتقائي.
لمعرفة المزيد حول قاعدة أو فئة معينة ، استخدم mllint describe جنبا إلى جنب مع سبيكة الفئة أو القاعدة:
# Describe the Version Control category. This will also list the rules that it checks.
mllint describe version-control
# Use the exact slug of a rule to describe one rule,
# e.g., the rule on DVC usage in the Version Control category
mllint describe version-control/data/dvc
# Use a partial slug to describe all rules whose slug starts with this snippet,
# e.g., all rules about version controlling data
mllint describe version-control/data بدلاً من ذلك ، تفضل بزيارة صفحات الفئات والقواعد على موقع mllint لعرض أحدث وثائق عبر الإنترنت لهذه القواعد.
من الممكن أيضًا تحديد قواعد Linting المخصصة الخاصة بك عن طريق تنفيذ برنامج نصي أو برنامج سيتم تشغيل mllint أثناء إجراء تحليله. يجب تحديد هذه القواعد المخصصة في تكوين mllint . لمزيد من المعلومات حول كيفية القيام بذلك ، راجع mllint describe custom أو عرض الوثائق عبر الإنترنت هنا.
يمكن تكوين mllint إما باستخدام ملف .mllint.yml أو من خلال pyproject.toml من المشروع. هذا يتيح لك:
راجع قصاصات الكود والأوامر الواردة أدناه للحصول على أمثلة لملفات التكوين هذه.
لطباعة التكوين الحالي لـ mllint بتنسيق YAML ، قم بتشغيل (توفير مسار إلى مجلد المشروع اختياريًا):
mllint config لطباعة التكوين الافتراضي لـ mllint بتنسيق YAML ، قم بتشغيله (ما لم يكن هناك مجلد يسمى default في الدليل الحالي):
mllint config default لإنشاء ملف .mllint.yml من التكوين الافتراضي لـ mllint ، قم بتشغيل:
mllint config default -q > .mllint.yml مثال .mllint.yml الذي يعطل بعض القواعد يبدو على النحو التالي:
rules :
disabled :
- version-control/code/git
- dependency-management/single على غرار الأمر describe ، هذا يطابق الرخويات الجزئية. لذلك ، لتعطيل جميع القواعد المتعلقة بالبيانات التي تتحكم في الإصدار ، استخدم version-control/data .
إذا تم العثور على no .mllint.yml ، يبحث mllint في pyproject.toml للمشروع لقسم [tool.mllint] . يحتوي Toml على بناء جملة مختلف قليلاً ، ولكن الهيكل هو نفسه مثل التكوين في ملف YAML.
مثال pyproject.toml تكوين mllint كما يلي. لاحظ أنه مطابق لمثال YAML أعلاه.
[ tool . mllint . rules ]
disabled = [ " version-control/code/git " , " dependency-management/single " ] على الرغم من أن mllint هي أداة للنظام الإيكولوجي Python ML وتوزيعها من خلال PYPI ، إلا أنها مكتوبة فعليًا في GO ، والتي تم تجميعها إلى ثنائي ثابت ونشرت كعجلات بيثون خاصة منصة.
لتشغيل mllint من المصدر ، قم بتثبيت أحدث إصدار من GO لنظام التشغيل الخاص بك ، ثم استنساخ هذا المستودع وتشغيل go run . في جذر هذا المستودع. استخدم go test ./... أو تنفيذ test.sh لتشغيل جميع اختبارات mllint .
لاختبار تجميع وتعبئة mllint في عجلة Python لمنصتك الحالية ، قم بتشغيل test.package.sh .