# Parameters и Metrics

← [Раздел](README.md) · [Главная](../README.md)

## Цель

Понять назначение, устройство и практику использования компонента **Parameters и Metrics** в MLflow.

## Предварительно

- [Runs](runs.md)

## Время

**2–3 ч**

---

## Parameters

**Параметры** — конфигурация run (гиперпараметры, флаги). Записываются **один раз** на ключ.

```python
mlflow.log_param("max_depth", 6)
mlflow.log_param("features", "v2")  # строки до 500 символов на значение
```

Ограничение: до **100** params на run (настраивается на сервере).

## Metrics

**Метрики** — числовые измерения, могут быть **time-series** (step).

```python
for epoch in range(10):
    mlflow.log_metric("loss", loss_value, step=epoch)
    mlflow.log_metric("accuracy", acc, step=epoch)
```

## Разница param vs metric

| | Param | Metric |
|---|-------|--------|
| Когда | До/в начале | В процессе обучения |
| Изменение | Не перезаписывать | Много значений по step |
| Пример | `learning_rate=0.01` | `loss=0.34` |

## Tags

Произвольные строки для фильтрации:

```python
mlflow.set_tag("model_type", "xgboost")
mlflow.set_tag("data_snapshot", "2024-06-01")
```

## Поиск и фильтрация

Синтаксис filter string:
```
params.model_type = "xgboost" and metrics.rmse < 0.5
```

## Best practices

- Единые **имена** метрик во всех runs проекта (`val_accuracy`, не `acc`/`accuracy`/`val_acc`)
- Логируйте **baseline** метрики
- Не логируйте огромные JSON в params — используйте artifact

---

## Самопроверка

1. Кратко опишите роль «Parameters и Metrics» в MLflow.
2. Назовите типичную ошибку при работе с этим компонентом.
3. Как этот компонент связан с соседними?

---

## Дальше

→ [Artifacts](artifacts.md)
