Налаштування гіперпараметрів з DVC

CI/CD для машинного навчання

Ravi Bhadauria

Machine Learning Engineer

Робочий процес налаштування гіперпараметрів

  • Налаштування гіперпараметрів

    • Вхід: діапазони перебору параметрів
    • Вихід: найкращі параметри
  • Тренування

    • Вхід: найкращі параметри
    • Вихід: метрики та графіки (вже розглянуто)
  • Вільне з'єднання для незалежного тренування

    • Налаштування гіперпараметрів достатнє, але не обов'язкове
  • Обидва завдання залежать від набору даних

# Вміст конфігурації hp
{
    "n_estimators": [2, 4, 5],
    "max_depth": [10, 20, 50],
    "random_state": [1993]
}
# Вміст найкращих параметрів
{
    "n_estimators": 5,
    "max_depth": 20,
    "random_state": 1993
}
CI/CD для машинного навчання

Зміни в коді тренування

Зміни в Python-скрипті для налаштування гіперпараметрів
# Завантажте гіперпараметри з JSON-файла
with open("rfc_best_params.json", "r") as params_file:
  rfc_params = json.load(params_file)

# Визначте та натренуйте модель model = RandomForestClassifier(**rfc_params) model.fit(X_train, y_train)
CI/CD для машинного навчання

Налаштування гіперпараметрів з GridSearch

# Визначте модель і простір пошуку гіперпараметрів
model = RandomForestClassifier()
param_grid = json.load(open("hp_config.json", "r"))

# Виконайте GridSearch з п'ятиразовою CV grid_search = GridSearchCV(model, param_grid, cv=5) grid_search.fit(X_train, y_train)
# Отримайте найкращі гіперпараметри best_params = grid_search.best_params_ with open("rfc_best_params.json", "w") as outfile: json.dump(best_params, outfile)
CI/CD для машинного навчання

Зміни в DVC YAML

Налаштування гіперпараметрів
stages:
  preprocess: ...
  train: ...
  hp_tune:
    cmd: python hp_tuning.py
    deps:
    - processed_dataset/weather.csv
    - hp_config.json
    - hp_tuning.py
    outs: # Не відстежуємо найкращі параметри
      - hp_tuning_results.md:
          cache: false
Тренування
stages:
  preprocess: ...
  hp_tune: ...
  train:
    cmd: python train.py
    deps:
    - processed_dataset/weather.csv
    - rfc_best_params.json # Найкращі параметри
    - train.py
    metrics:
      - metrics.json:
          cache: false
CI/CD для машинного навчання

Запуск окремих етапів

  • Етапи можна запускати окремо dvc repro <stage_name>

  • Примусово запустіть етап налаштування гіперпараметрів dvc repro -f hp_tune

    • Забезпечує оновлення файла з найкращими параметрами
  • Тренування можна запустити командою dvc repro train

  • Обидва етапи тригерять крок препроцесингу як залежність

CI/CD для машинного навчання

Результат запуску налаштування гіперпараметрів

mean_test_score std_test_score max_depth n_estimators random_state
0.999733 0.000413118 20 5 1993
0.999307 0.000574418 50 5 1993
0.99888 0.000617378 10 5 1993
0.997813 0.00117333 10 4 1993

Зміни в Python-скрипті для налаштування гіперпараметрів

# Збережіть результати налаштування гіперпараметрів
cv_results = pd.DataFrame(grid_search.cv_results_)
markdown_table = cv_results.to_markdown(index=False)
with open("hp_tuning_results.md", "w") as markdown_file:
  markdown_file.write(markdown_table)
CI/CD для машинного навчання

Підсумок

  • Маршрут налаштування гіперпараметрів

    • Назва гілки hp_tune/<some-string>
    • Змініть конфігурацію пошуку
    • Відкрийте PR вручну
      • Примусово запускає конвеєр DVC dvc repro -f hp_tune
      • Використовує cml pr create для створення нового PR на тренування з найкращими параметрами
    • Примусово відправте коміт у тренувальний PR, щоб запустити джоб тренування моделі
  • Ручний маршрут

    • Назва гілки train/<some-string>
    • Відредагуйте файл найкращих параметрів і зробіть коміт
    • Відкрийте PR вручну, щоб запустити джоб тренування моделі
CI/CD для машинного навчання

Давайте потренуємось!

CI/CD для машинного навчання

Preparing Video For Download...