אמת את הקוד שלך באופן מקומי

הושלם

בכל פעם שאתה משנה קוד כלשהו בפרויקט למידת המכונה שלך, אתה רוצה לאמת את הקוד ואת איכות המודל.

במהלך אינטגרציה מתמשכת, אתה יוצר ומאמת נכסים עבור היישום שלך. כמדען נתונים, סביר להניח שתתמקד ביצירת קבצי Script המשמשים להכנת נתונים והכשרת מודלים. מהנדס למידת המכונה משתמש בקבצי ה- Script מאוחר יותר בקווי הצינור כדי להפוך תהליכים אלה לאוטומטיים.

כדי לאמת את קבצי ה- Script שלך, קיימות שתי משימות נפוצות:

  • Linting: בדוק אם יש שגיאות תכנותיות או סגנוניות בסקריפטים של Python או R.
  • בדיקת יחידה: בדוק את ביצועי תוכן הסקריפטים.

תרשים של זרימת אימות עם בדיקות מקומיות ואוטומטיות.

על ידי אימות הקוד שלך, אתה מונע באגים או בעיות בעת פריסת המודל. באפשרותך לאמת את הקוד שלך באופן מקומי, על-ידי הפעלת לינטרים ובדיקות יחידה באופן מקומי ב- IDE כגון Visual Studio Code.

באפשרותך גם להפעיל לינטרים ובדיקות יחידה בזרימת עבודה אוטומטית באמצעות Azure Pipelines או פעולות GitHub.

תלמד כיצד להריץ בדיקות linting ויחידה ב- Visual Studio Code.

מוך את הקוד שלך

איכות הקוד שלך תלויה בסטנדרטים שאתה והצוות שלך מסכימים עליהם. כדי להבטיח שהאיכות המוסכמת מתקיימת, אתה יכול להפעיל לינטרים שיבדקו אם הקוד תואם את הסטנדרטים של הצוות.

בהתאם לשפת הקוד שבה אתה משתמש, ישנן מספר אפשרויות ללוך את הקוד שלך. לדוגמה, אם אתה עובד עם Python, אתה יכול להשתמש ב-Flake8 או ב-Pylint.

השתמש ב-Flake8 כדי ללוך את הקוד שלך

כדי להשתמש ב- Flake8 באופן מקומי עם Visual Studio Code:

  1. התקן את Flake8 עם pip install flake8.
  2. צור קובץ .flake8 תצורה ואחסן את הקובץ במאגר שלך.
  3. קבע את תצורת Visual Studio Code כך שישתמש ב- Flake8 כמקל על-ידי מעבר אל ההגדרות שלך (Ctrl+,).
  4. חפש flake8.
  5. הפעל את Python > Linting > Flake8 מופעל.
  6. הגדר את נתיב Flake8 למיקום במאגר שלך שבו אחסנת את הקובץ שלך .flake8 .

צילום מסך של קביעת התצורה של Flake8 ב- Visual Studio Code.

כדי לציין מהם הסטנדרטים של הצוות שלך לאיכות הקוד, באפשרותך להגדיר את לינטר Flake8. שיטה נפוצה להגדרת התקנים היא יצירת .flake8 קובץ המאוחסן עם הקוד שלך.

הקובץ .flake8 צריך להתחיל ב- [flake8], ואחריו כל אחת מהתצורות שבהן ברצונך להשתמש.

עצה

רשימה מלאה של פרמטרי תצורה אפשריים ניתן למצוא בתיעוד של Flake8.

לדוגמה, אם ברצונך לציין שהאורך המרבי של שורה כלשהי לא יכול לכלול יותר מ- 80 תווים, עליך להוסיף את השורה הבאה לקובץ .flake8 :

[flake8]
max-line-length = 80

ל-Flake8 יש רשימה מוגדרת מראש של שגיאות שהוא יכול להחזיר. בנוסף, אתה יכול לעשות שימוש בקודי שגיאה המבוססים על מדריך הסגנון PEP 8. לדוגמה, באפשרותך לכלול קודי שגיאה המתייחסים לשימוש נכון בהזחה או ברווחים לבנים.

באפשרותך לבחור (select) קבוצה של קודי שגיאה שיהיו חלק מה-linter או לבחור מאילו קודי שגיאה להתעלם (ignore) מרשימת ברירת המחדל של האפשרויות.

כתוצאה מכך, קובץ התצורה שלך .flake8 עשוי להיראות כמו הדוגמה הבאה:

[flake8]
ignore = 
    W504,
    C901,
    E41
max-line-length = 79
exclude = 
    .git,
    .cache,
per-file-ignores =
    code/__init__.py:D104
max-complexity = 10
import-order-style = pep8

עצה

לקבלת סקירה כללית של קודי שגיאה שתוכל להתייחס אליהם, עיין ברשימת השגיאות של Flake8

לאחר קביעת התצורה של Visual Studio Code ללינט את הקוד שלך, באפשרותך לפתוח כל קובץ קוד כדי לסקור את תוצאות המוך. כל אזהרה או שגיאה תסומן בקו תחתון. באפשרותך לבחור הצג בעיה כדי לבדוק את הבעיה ולהבין את השגיאה.

צילום מסך של תוצאות Flake 8 ב- Visual Studio Code.

מוך עם קווי צינור של Azure או פעולות GitHub

באפשרותך גם להפעיל את ה- linter באופן אוטומטי באמצעות Azure Pipelines או פעולות GitHub. הסוכן המסופק על ידי כל אחת מהפלטפורמות יפעיל את הלינטר כאשר:

  1. צור קובץ .flake8 תצורה ואחסן את הקובץ במאגר שלך.
  2. הגדר את צינור האינטגרציה הרציפה או זרימת העבודה ב- YAML.
  3. כמשימה או שלב, התקן את Flake8 עם python -m pip install flake8.
  4. כמשימה או שלב, הפעל את flake8 הפקודה כדי ללחוץ על הקוד שלך.

בדיקות יחידות

כאשר linting מאמת כיצד כתבת את הקוד, בדיקות יחידה בודקות כיצד הקוד שלך עובד. יחידות מתייחסות לקוד שאתה יוצר. לכן בדיקת יחידה ידועה גם בשם בדיקת קוד.

כשיטה מומלצת, הקוד שלך צריך להתקיים בעיקר מחוץ לפונקציות. בין אם יצרת פונקציות להכנת נתונים, או לאימון מודל. אתה יכול להחיל בדיקות יחידה, למשל:

  • ודא ששמות העמודות נכונים.
  • בדוק את רמת החיזוי של המודל במערכי נתונים חדשים.
  • בדוק את התפלגות רמות החיזוי.

כאשר אתה עובד עם Python, אתה יכול להשתמש ב-Pytestוב-Numpy (המשתמשת במסגרת Pytest) כדי לבדוק את הקוד שלך. למידע נוסף על עבודה עם Pytest, למד כיצד לכתוב בדיקות עם Pytest.

עצה

סקור הדרכה מפורטת יותר של בדיקות Python ב-Visual Studio Code.

תאר לעצמך שיצרת סקריפט train.pyהדרכה , המכיל את הפונקציה הבאה:

# Train the model, return the model
def train_model(data, ridge_args):
    reg_model = Ridge(**ridge_args)
    reg_model.fit(data["train"]["X"], data["train"]["y"])
    return reg_model

נניח שאחסנת את סקריפט ההדרכה בספרייה src/model/train.py בתוך המאגר שלך. כדי לבדוק את הפונקציה train_model , עליך לייבא את הפונקציה מ- src.model.train.

אתה יוצר את הקובץ test_train.py בתיקיה tests . אחת הדרכים לבדוק קוד פייתון היא להשתמש ב numpy- . Numpy מציע מספר assert פונקציות להשוואת מערכים, מחרוזות, אובייקטים או פריטים.

לדוגמה, כדי לבדוק את הפונקציה train_model , אתה יכול להשתמש במערך נתוני אימון קטן ולהשתמש בו assert כדי לוודא אם התחזיות כמעט שוות למדדי הביצועים המוגדרים מראש.

import numpy as np
from src.model.train import train_model

def test_train_model():
    X_train = np.array([1, 2, 3, 4, 5, 6]).reshape(-1, 1)
    y_train = np.array([10, 9, 8, 8, 6, 5])
    data = {"train": {"X": X_train, "y": y_train}}

    reg_model = train_model(data, {"alpha": 1.2})

    preds = reg_model.predict([[1], [2]])
    np.testing.assert_almost_equal(preds, [9.93939393939394, 9.03030303030303])

כדי לבדוק את הקוד שלך ב- Visual Studio Code באמצעות ממשק המשתמש:

  1. התקן את כל הספריות הדרושות כדי להפעיל את סקריפט ההדרכה.
  2. ודא שהוא pytest מותקן ומופעל בתוך Visual Studio Code.
  3. התקן את הרחבת Python עבור Visual Studio Code.
  4. בחר את קובץ ה train.py - Script שברצונך לבדוק.
  5. בחר את הכרטיסייה בדיקה מהתפריט הימני.
  6. הגדר את בדיקת Python על ידי בחירת pytest והגדרת ספריית הבדיקה לתיקיה שלך tests/ .
  7. הפעל את כל הבדיקות על-ידי בחירה בלחצן ההפעלה וסקור את התוצאות.

צילום מסך של תוצאות בדיקת יחידה מוצלחות ב- Visual Studio Code.

כדי להפעיל את הבדיקה בקו צינור של Azure DevOps או בפעולת GitHub:

  1. ודא שכל הספריות הדרושות מותקנות כדי להפעיל את סקריפט ההדרכה. באופן אידיאלי, השתמש ברשימה של requirements.txt כל הספריות עם pip install -r requirements.txt
  2. התקן pytest עם pip install pytest
  3. הפעל את הבדיקות עם pytest tests/

תוצאות הבדיקות יוצגו בפלט של קו הצינור או זרימת העבודה שאתה מפעיל.

הערה

אם במהלך בדיקת ה-linting או היחידה, מוחזרת שגיאה, צינור ה-CI עלול להיכשל. לכן עדיף לאמת את הקוד שלך באופן מקומי תחילה, לפני הפעלת צינור ה-CI.