CI/CD para Machine Learning
Ravi Bhadauria
Machine Learning Engineer
Ajuste de hiperparâmetros
Treinamento
Acoplamento frouxo para treinamentos independentes
Ambos os jobs dependem do conjunto de dados
# Conteúdo da configuração de hp
{
"n_estimators": [2, 4, 5],
"max_depth": [10, 20, 50],
"random_state": [1993]
}
# Conteúdo dos melhores parâmetros
{
"n_estimators": 5,
"max_depth": 20,
"random_state": 1993
}
# Carregar hiperparâmetros do arquivo JSON with open("rfc_best_params.json", "r") as params_file: rfc_params = json.load(params_file)# Definir e treinar o modelo model = RandomForestClassifier(**rfc_params) model.fit(X_train, y_train)
# Definir o modelo e o espaço de busca de hiperparâmetros model = RandomForestClassifier() param_grid = json.load(open("hp_config.json", "r"))# Executar GridSearch com CV de cinco dobras grid_search = GridSearchCV(model, param_grid, cv=5) grid_search.fit(X_train, y_train)# Obter os melhores hiperparâmetros best_params = grid_search.best_params_ with open("rfc_best_params.json", "w") as outfile: json.dump(best_params, outfile)
stages:
preprocess: ...
train: ...
hp_tune:
cmd: python hp_tuning.py
deps:
- processed_dataset/weather.csv
- hp_config.json
- hp_tuning.py
outs: # Sem rastrear os melhores parâmetros
- hp_tuning_results.md:
cache: false
stages:
preprocess: ...
hp_tune: ...
train:
cmd: python train.py
deps:
- processed_dataset/weather.csv
- rfc_best_params.json # Melhores parâmetros
- train.py
metrics:
- metrics.json:
cache: false
Estágios podem ser acionados de forma independente dvc repro <stage_name>
Forçar a execução do estágio de ajuste dvc repro -f hp_tune
O treinamento pode ser executado com dvc repro train
Ambos os estágios acionam o passo de pré-processamento como dependência
| 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 |
Mudanças no script Python de ajuste de hiperparâmetros
# Salvar os resultados do ajuste de hiperparâmetros
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)
Rota de ajuste de hiperparâmetros
hp_tune/<some-string>dvc repro -f hp_tunecml pr create para criar um novo PR de treinamento com os melhores parâmetrosRota manual
train/<some-string>CI/CD para Machine Learning