mirror of
https://github.com/wassname/ray.git
synced 2026-07-02 06:30:44 +08:00
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
#!/usr/bin/env python
|
|
"""Simple MLFLow Logger example.
|
|
|
|
This uses a simple MLFlow logger. One limitation of this is that there is
|
|
no artifact support; to save artifacts with Tune and MLFlow, you will need to
|
|
start a MLFlow run inside the Trainable function/class.
|
|
|
|
"""
|
|
import mlflow
|
|
from mlflow.tracking import MlflowClient
|
|
import time
|
|
import random
|
|
|
|
from ray import tune
|
|
from ray.tune.logger import MLFLowLogger, DEFAULT_LOGGERS
|
|
|
|
|
|
def evaluation_fn(step, width, height):
|
|
return (0.1 + width * step / 100)**(-1) + height * 0.1
|
|
|
|
|
|
def easy_objective(config):
|
|
# Hyperparameters
|
|
width, height = config["width"], config["height"]
|
|
|
|
for step in range(config.get("steps", 100)):
|
|
# Iterative training function - can be any arbitrary training procedure
|
|
intermediate_score = evaluation_fn(step, width, height)
|
|
# Feed the score back back to Tune.
|
|
tune.report(iterations=step, mean_loss=intermediate_score)
|
|
time.sleep(0.1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
client = MlflowClient()
|
|
experiment_id = client.create_experiment("test")
|
|
|
|
trials = tune.run(
|
|
easy_objective,
|
|
name="mlflow",
|
|
num_samples=5,
|
|
loggers=DEFAULT_LOGGERS + (MLFLowLogger, ),
|
|
config={
|
|
"mlflow_experiment_id": experiment_id,
|
|
"width": tune.sample_from(
|
|
lambda spec: 10 + int(90 * random.random())),
|
|
"height": tune.sample_from(lambda spec: int(100 * random.random()))
|
|
})
|
|
|
|
df = mlflow.search_runs([experiment_id])
|
|
print(df)
|