This tutorial illustrates how to add a trial-level early stopping strategy to an Ax hyper-parameter optimization (HPO) loop. The goal of trial-level early stopping is to monitor the results of expensive evaluations and terminate those that are unlikely to produce promising results, freeing up resources to explore more configurations.
Most of this tutorial is adapted from the PyTorch Ax Multiobjective NAS Tutorial. The training job is different from the original in that we do not optimize batch_size
or epochs
. This was done for illustrative purposes, as each validation curve now has the same number of points. The companion training file mnist_train_nas.py
has also been altered to log to Tensorboard during training.
NOTE: Although the original NAS tutorial is for a multi-objective problem, this tutorial focuses on a single objective (validation accuracy) problem. Early stopping currently does not support "true" multi-objective stopping, although one can use logical compositions of early stopping strategies to target multiple objectives separately. Early stopping for the multi-objective case is currently a work in progress.
import os
import tempfile
from pathlib import Path
import torchx
from ax.core import Experiment, Objective, ParameterType, RangeParameter, SearchSpace
from ax.core.optimization_config import OptimizationConfig
from ax.early_stopping.strategies import PercentileEarlyStoppingStrategy
from ax.metrics.tensorboard import TensorboardCurveMetric
from ax.modelbridge.dispatch_utils import choose_generation_strategy
from ax.runners.torchx import TorchXRunner
from ax.service.scheduler import Scheduler, SchedulerOptions
from ax.service.utils.report_utils import exp_to_df
from torchx import specs
from torchx.components import utils
from matplotlib import pyplot as plt
%matplotlib inline
SMOKE_TEST = os.environ.get("SMOKE_TEST")
Our goal is to optimize the PyTorch Lightning training job defined in mnist_train_nas.py. To do this using TorchX, we write a helper function that takes in the values of the architcture and hyperparameters of the training job and creates a TorchX AppDef with the appropriate settings.
if SMOKE_TEST:
epochs = 3
else:
epochs = 10
def trainer(
log_path: str,
hidden_size_1: int,
hidden_size_2: int,
learning_rate: float,
dropout: float,
trial_idx: int = -1,
) -> specs.AppDef:
# define the log path so we can pass it to the TorchX AppDef
if trial_idx >= 0:
log_path = Path(log_path).joinpath(str(trial_idx)).absolute().as_posix()
batch_size = 32
return utils.python(
# command line args to the training script
"--log_path",
log_path,
"--hidden_size_1",
str(hidden_size_1),
"--hidden_size_2",
str(hidden_size_2),
"--learning_rate",
str(learning_rate),
"--epochs",
str(epochs),
"--dropout",
str(dropout),
"--batch_size",
str(batch_size),
# other config options
name="trainer",
script="mnist_train_nas.py",
image=torchx.version.TORCHX_IMAGE,
)
Ax’s Runner
abstraction allows writing interfaces to various backends.
Ax already comes with Runner for TorchX, so we just need to
configure it. For the purpose of this tutorial, we run jobs locally
in a fully asynchronous fashion. In order to launch them on a cluster, you can instead specify a
different TorchX scheduler and adjust the configuration appropriately.
For example, if you have a Kubernetes cluster, you just need to change the
scheduler from local_cwd
to kubernetes
.
The training job launched by this runner will log partial results to Tensorboard, which will then be monitored by the early stopping strategy. We will show how this is done using an Ax TensorboardCurveMetric below.
# Make a temporary dir to log our results into
log_dir = tempfile.mkdtemp()
ax_runner = TorchXRunner(
tracker_base="/tmp/",
component=trainer,
# NOTE: To launch this job on a cluster instead of locally you can
# specify a different scheduler and adjust args appropriately.
scheduler="local_cwd",
component_const_params={"log_path": log_dir},
cfg={},
)
First, we define our search space. Ax supports both range parameters of type integer and float as well as choice parameters which can have non-numerical types such as strings. We will tune the hidden sizes, learning rate, and dropout parameters.
parameters = [
# NOTE: In a real-world setting, hidden_size_1 and hidden_size_2
# should probably be powers of 2, but in our simple example this
# would mean that num_params can't take on that many values, which
# in turn makes the Pareto frontier look pretty weird.
RangeParameter(
name="hidden_size_1",
lower=16,
upper=128,
parameter_type=ParameterType.INT,
log_scale=True,
),
RangeParameter(
name="hidden_size_2",
lower=16,
upper=128,
parameter_type=ParameterType.INT,
log_scale=True,
),
RangeParameter(
name="learning_rate",
lower=1e-4,
upper=1e-2,
parameter_type=ParameterType.FLOAT,
log_scale=True,
),
RangeParameter(
name="dropout",
lower=0.0,
upper=0.5,
parameter_type=ParameterType.FLOAT,
),
]
search_space = SearchSpace(
parameters=parameters,
# NOTE: In practice, it may make sense to add a constraint
# hidden_size_2 <= hidden_size_1
parameter_constraints=[],
)
Ax has the concept of a Metric that defines properties of outcomes and how observations are obtained for these outcomes. This allows e.g. encodig how data is fetched from some distributed execution backend and post-processed before being passed as input to Ax.
We will optimize the validation accuracy, which is a TensorboardCurveMetric
that points to the logging directory assigned above. Note that we have set is_available_while_running
, allowing for the metric to be queried as the trial progresses. This is critical for the early stopping strategy to monitor partial results.
class MyTensorboardMetric(TensorboardCurveMetric):
# NOTE: We need to tell the new Tensorboard metric how to get the id /
# file handle for the tensorboard logs from a trial. In this case
# our convention is to just save a separate file per trial in
# the pre-specified log dir.
@classmethod
def get_ids_from_trials(cls, trials):
return {
trial.index: Path(log_dir).joinpath(str(trial.index)).as_posix()
for trial in trials
}
# This indicates whether the metric is queryable while the trial is
# still running. This is required for early stopping to monitor the
# progress of the running trial.ArithmeticError
@classmethod
def is_available_while_running(cls):
return True
val_acc = MyTensorboardMetric(
name="val_acc",
curve_name="val_acc",
lower_is_better=False,
)
The OptimizationConfig
specifies the objective for Ax to optimize.
opt_config = OptimizationConfig(
objective=Objective(
metric=val_acc,
minimize=False,
)
)
A PercentileEarlyStoppingStrategy
is a simple method that stops a trial if its performance falls below a certain percentile of other trials at the same step (e.g., when percentile_threshold
is 50, at a given point in time, if a trial ranks in the bottom 50% of trials, it is stopped).
normalize_progressions
which normalizes the progression column (e.g. timestamp, epochs, training data used) to be in [0, 1]. This is useful because one doesn't need to know the maximum progression values of the curve (which might be, e.g., the total number of data points in the training dataset).min_progression
parameter specifies that trials should only be considered for stopping if the latest progression value is greater than this threshold.min_curves
parameter specifies the minimum number of completed curves (i.e., fully completed training jobs) before early stopping will be considered. This should be larger than zero if normalize_progression
is used. In general, we want a few completed curves to have a baseline for comparison.Note that PercentileEarlyStoppingStrategy
does not make use of learning curve modeling or prediction. More sophisticated model-based methods will be available in future versions of Ax.
percentile_early_stopping_strategy = PercentileEarlyStoppingStrategy(
# stop if in bottom 70% of runs at the same progression
percentile_threshold=70,
# the trial must have passed `min_progression` steps before early stopping is initiated
# note that we are using `normalize_progressions`, so this is on a scale of [0, 1]
min_progression=0.3,
# there must be `min_curves` completed trials and `min_curves` trials reporting data in
# order for early stopping to be applicable
min_curves=5,
# specify, e.g., [0, 1] if the first two trials should never be stopped
trial_indices_to_ignore=None,
# check for new data every 10 seconds
seconds_between_polls=10,
normalize_progressions=True,
)
In Ax, the Experiment object is the object that stores all the information about the problem setup.
experiment = Experiment(
name="torchx_mnist",
search_space=search_space,
optimization_config=opt_config,
runner=ax_runner,
)
A GenerationStrategy is the abstract representation of how we would like to perform the optimization. While this can be customized (if you’d like to do so, see this tutorial), in most cases Ax can automatically determine an appropriate strategy based on the search space, optimization config, and the total number of trials we want to run.
Typically, Ax chooses to evaluate a number of random configurations before starting a model-based Bayesian Optimization strategy.
We remark that in Ax, generation strategies and early stopping strategies are separate, a design decision motivated by ease-of-use. However, we should acknowledge that jointly considering generation and stopping using a single strategy would likely be the "proper" formulation.
if SMOKE_TEST:
total_trials = 6
else:
total_trials = 15 # total evaluation budget
gs = choose_generation_strategy(
search_space=experiment.search_space,
optimization_config=experiment.optimization_config,
num_trials=total_trials,
)
[INFO 08-11 15:50:15] ax.modelbridge.dispatch_utils: Using Models.GPEI since there are more ordered parameters than there are categories for the unordered categorical parameters. [INFO 08-11 15:50:15] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=4 num_trials=15 use_batch_trials=False [INFO 08-11 15:50:15] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5 [INFO 08-11 15:50:15] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5 [INFO 08-11 15:50:15] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+GPEI', steps=[Sobol for 5 trials, GPEI for subsequent trials]). Iterations after 5 will take longer to generate due to model-fitting.
The Scheduler
acts as the loop control for the optimization.
It communicates with the backend to launch trials, check their status, retrieve (partial) results, and importantly for this tutorial, calls the early stopping strategy. If the early stopping strategy suggests a trial to be the stopped, the Scheduler
communicates with the backend to terminate the trial.
The Scheduler
requires the Experiment
and the GenerationStrategy
.
A set of options can be passed in via SchedulerOptions
. Here, we
configure the number of total evaluations as well as max_pending_trials
,
the maximum number of trials that should run concurrently. In our
local setting, this is the number of training jobs running as individual
processes, while in a remote execution setting, this would be the number
of machines you want to use in parallel.
scheduler = Scheduler(
experiment=experiment,
generation_strategy=gs,
options=SchedulerOptions(
total_trials=total_trials,
max_pending_trials=5,
early_stopping_strategy=percentile_early_stopping_strategy,
),
)
[INFO 08-11 15:50:15] Scheduler: `Scheduler` requires experiment to have immutable search space and optimization config. Setting property immutable_search_space_and_opt_config to `True` on experiment.
%%time
scheduler.run_all_trials()
[INFO 08-11 15:50:15] Scheduler: Running trials [0]... [INFO 08-11 15:50:16] Scheduler: Running trials [1]... [INFO 08-11 15:50:16] Scheduler: Running trials [2]... [INFO 08-11 15:50:17] Scheduler: Running trials [3]... [INFO 08-11 15:50:18] Scheduler: Running trials [4]... [WARNING 08-11 15:50:19] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:50:19] Scheduler: Fetching data for trials: 0 - 4 because some metrics on experiment are available while trials are running. [INFO 08-11 15:50:19] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/0. Returning without this metric. [INFO 08-11 15:50:19] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:19] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/1. Returning without this metric. [INFO 08-11 15:50:19] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:19] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/2. Returning without this metric. [INFO 08-11 15:50:19] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:19] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/3. Returning without this metric. [INFO 08-11 15:50:19] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:19] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/4. Returning without this metric. [INFO 08-11 15:50:19] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:50:19] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:19] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:19] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:19] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:19] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:50:19] Scheduler: Failed to fetch val_acc for trial 0, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:19] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 0 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:19] Scheduler: Failed to fetch val_acc for trial 1, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:19] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 1 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:19] Scheduler: Failed to fetch val_acc for trial 2, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:19] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 2 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:19] Scheduler: Failed to fetch val_acc for trial 3, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:19] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 3 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:19] Scheduler: Failed to fetch val_acc for trial 4, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:19] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 4 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:50:19] ax.early_stopping.strategies.base: PercentileEarlyStoppingStrategy received empty data. Not stopping any trials. [INFO 08-11 15:50:19] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:50:29] Scheduler: Fetching data for trials: [1, 3] because some metrics on experiment are available while trials are running. [INFO 08-11 15:50:29] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/1. Returning without this metric. [INFO 08-11 15:50:29] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:29] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/3. Returning without this metric. [INFO 08-11 15:50:29] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:50:29] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:29] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:50:29] Scheduler: Failed to fetch val_acc for trial 1, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:29] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 1 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:29] Scheduler: Failed to fetch val_acc for trial 3, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:29] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 3 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:50:29] ax.early_stopping.strategies.base: PercentileEarlyStoppingStrategy received empty data. Not stopping any trials. [INFO 08-11 15:50:29] Scheduler: Retrieved FAILED trials: [0, 2, 4]. [INFO 08-11 15:50:29] Scheduler: Running trials [5]... [INFO 08-11 15:50:30] Scheduler: Running trials [6]... [INFO 08-11 15:50:30] Scheduler: Running trials [7]... [WARNING 08-11 15:50:31] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:50:31] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:50:31] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/1. Returning without this metric. [INFO 08-11 15:50:31] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:31] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/3. Returning without this metric. [INFO 08-11 15:50:31] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:31] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/5. Returning without this metric. [INFO 08-11 15:50:31] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:31] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/6. Returning without this metric. [INFO 08-11 15:50:31] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:31] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/7. Returning without this metric. [INFO 08-11 15:50:31] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:50:31] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:31] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:31] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:31] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:31] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:50:31] Scheduler: Failed to fetch val_acc for trial 1, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:31] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 1 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:31] Scheduler: Failed to fetch val_acc for trial 3, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:31] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 3 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:31] Scheduler: Failed to fetch val_acc for trial 5, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:31] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 5 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:31] Scheduler: Failed to fetch val_acc for trial 6, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:31] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 6 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:31] Scheduler: Failed to fetch val_acc for trial 7, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:31] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 7 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:50:31] ax.early_stopping.strategies.base: PercentileEarlyStoppingStrategy received empty data. Not stopping any trials. [INFO 08-11 15:50:31] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:50:41] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:50:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/1. Returning without this metric. [INFO 08-11 15:50:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/3. Returning without this metric. [INFO 08-11 15:50:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/5. Returning without this metric. [INFO 08-11 15:50:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/6. Returning without this metric. [INFO 08-11 15:50:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/7. Returning without this metric. [INFO 08-11 15:50:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:50:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:50:41] Scheduler: Failed to fetch val_acc for trial 1, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 1 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:41] Scheduler: Failed to fetch val_acc for trial 3, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 3 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:41] Scheduler: Failed to fetch val_acc for trial 5, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 5 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:41] Scheduler: Failed to fetch val_acc for trial 6, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 6 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:41] Scheduler: Failed to fetch val_acc for trial 7, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 7 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:50:41] ax.early_stopping.strategies.base: PercentileEarlyStoppingStrategy received empty data. Not stopping any trials. [INFO 08-11 15:50:41] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:50:51] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:50:51] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/5. Returning without this metric. [INFO 08-11 15:50:51] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:51] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/6. Returning without this metric. [INFO 08-11 15:50:51] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:50:51] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/7. Returning without this metric. [INFO 08-11 15:50:51] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:50:51] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:51] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:50:51] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:50:51] Scheduler: Failed to fetch val_acc for trial 5, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:51] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 5 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:51] Scheduler: Failed to fetch val_acc for trial 6, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:51] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 6 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:50:51] Scheduler: Failed to fetch val_acc for trial 7, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:50:51] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 7 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:50:51] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:50:51] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:01] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:02] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/6. Returning without this metric. [INFO 08-11 15:51:02] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:51:02] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:51:02] Scheduler: Failed to fetch val_acc for trial 6, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:51:02] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 6 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:51:02] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:02] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:12] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:12] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:12] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:22] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:22] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:22] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:32] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:32] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:32] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:42] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:42] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:42] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:51:52] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:51:52] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:51:52] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:02] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:02] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:02] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:12] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:13] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:13] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:23] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:23] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:23] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:33] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:33] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:33] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:43] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:43] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:43] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:52:53] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:52:53] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:52:53] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:03] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:04] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:04] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:14] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:14] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:14] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:24] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:24] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:24] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:34] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:34] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:34] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:44] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:44] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:44] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:53:54] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:53:54] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:53:54] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:54:04] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:05] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:05] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:54:15] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:15] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:15] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:54:25] Scheduler: Fetching data for trials: [1, 3, 5, 6, 7] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:25] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:25] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 5). [INFO 08-11 15:54:35] Scheduler: Fetching data for trials: [1, 3, 5, 6] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:35] ax.early_stopping.strategies.base: The number of completed trials (0) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:35] Scheduler: Retrieved COMPLETED trials: [7]. [INFO 08-11 15:54:35] Scheduler: Fetching data for trials: [7]. [WARNING 08-11 15:54:35] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:54:35] Scheduler: Fetching data for trials: [1, 3, 5, 6] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:35] ax.early_stopping.strategies.base: The number of completed trials (1) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:35] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 4). [INFO 08-11 15:54:45] Scheduler: Fetching data for trials: [1, 5, 6] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:46] ax.early_stopping.strategies.base: The number of completed trials (1) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:46] Scheduler: Retrieved COMPLETED trials: [3]. [INFO 08-11 15:54:46] Scheduler: Fetching data for trials: [3]. [WARNING 08-11 15:54:46] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:54:46] Scheduler: Fetching data for trials: [1, 5, 6] because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:46] ax.early_stopping.strategies.base: The number of completed trials (2) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:46] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:54:56] Scheduler: Fetching data for trials: 5 - 6 because some metrics on experiment are available while trials are running. [INFO 08-11 15:54:56] ax.early_stopping.strategies.base: The number of completed trials (2) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:54:56] Scheduler: Retrieved COMPLETED trials: [1]. [INFO 08-11 15:54:56] Scheduler: Fetching data for trials: [1]. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:54:57] Scheduler: Running trials [8]... [INFO 08-11 15:54:58] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:54:59] Scheduler: Running trials [9]... [INFO 08-11 15:55:01] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:55:02] Scheduler: Running trials [10]... [WARNING 08-11 15:55:03] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:55:03] Scheduler: Fetching data for trials: [6, 8, 9, 10] because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/8. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/9. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/10. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 8, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 8 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 9, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 9 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 10, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 10 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:55:03] ax.early_stopping.strategies.base: The number of completed trials (3) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:55:03] Scheduler: Retrieved COMPLETED trials: [5]. [INFO 08-11 15:55:03] Scheduler: Fetching data for trials: [5]. [WARNING 08-11 15:55:03] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:55:03] Scheduler: Fetching data for trials: [6, 8, 9, 10] because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/8. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/9. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/10. Returning without this metric. [INFO 08-11 15:55:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 8, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 8 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 9, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 9 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:03] Scheduler: Failed to fetch val_acc for trial 10, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 10 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:55:03] ax.early_stopping.strategies.base: The number of completed trials (4) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:55:03] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 4). [INFO 08-11 15:55:13] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/8. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/9. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/10. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 8, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 8 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 9, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 9 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 10, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 10 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:55:13] ax.early_stopping.strategies.base: The number of completed trials (4) is less than the minimum number of curves needed for early stopping (5). Not early stopping. [INFO 08-11 15:55:13] Scheduler: Retrieved COMPLETED trials: [6]. [INFO 08-11 15:55:13] Scheduler: Fetching data for trials: [6]. [WARNING 08-11 15:55:13] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:55:13] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/8. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/9. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/10. Returning without this metric. [INFO 08-11 15:55:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 8, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 8 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 9, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 9 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:13] Scheduler: Failed to fetch val_acc for trial 10, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 10 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:55:13] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 15:55:13] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:55:13] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:55:23] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:23] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/8. Returning without this metric. [INFO 08-11 15:55:23] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:23] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/9. Returning without this metric. [INFO 08-11 15:55:23] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:55:23] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/10. Returning without this metric. [INFO 08-11 15:55:23] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:55:23] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:23] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:55:23] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:55:23] Scheduler: Failed to fetch val_acc for trial 8, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:23] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 8 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:23] Scheduler: Failed to fetch val_acc for trial 9, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:23] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 9 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:55:23] Scheduler: Failed to fetch val_acc for trial 10, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:55:23] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 10 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:55:23] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 15:55:23] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:55:23] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:55:33] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:34] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.09994666666666667. [INFO 08-11 15:55:34] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:55:34] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:55:44] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:44] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.09994666666666667. [INFO 08-11 15:55:44] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:55:44] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:55:54] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:55:54] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.19994666666666666. [INFO 08-11 15:55:54] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:55:54] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:56:04] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:04] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.19994666666666666. [INFO 08-11 15:56:04] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:56:04] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:56:14] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:14] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.29994666666666664. [INFO 08-11 15:56:14] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:56:14] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:56:24] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:24] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.29994666666666664. [INFO 08-11 15:56:24] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:56:24] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:56:34] Scheduler: Fetching data for trials: 8 - 10 because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:34] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Considering trial 8 for early stopping. [INFO 08-11 15:56:34] ax.early_stopping.strategies.base: Last progression of Trial 8 is 0.3999466666666667. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Early stopping decision for 8: False. Reason: Trial objective value 0.9654649496078491 is better than 70.0-th percentile (0.9632726073265075) across comparable trials. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Considering trial 9 for early stopping. [INFO 08-11 15:56:34] ax.early_stopping.strategies.base: Last progression of Trial 9 is 0.3999466666666667. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Early stopping decision for 9: True. Reason: Trial objective value 0.9622863531112671 is worse than 70.0-th percentile (0.9632726073265075) across comparable trials. [INFO 08-11 15:56:34] ax.early_stopping.strategies.percentile: Considering trial 10 for early stopping. [INFO 08-11 15:56:34] ax.early_stopping.strategies.base: Last progression of Trial 10 is 0.29994666666666664. [INFO 08-11 15:56:34] ax.early_stopping.strategies.base: Trial 10's most recent progression (0.29994666666666664) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:56:35] Scheduler: Retrieved EARLY_STOPPED trials: [9]. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:56:37] Scheduler: Running trials [11]... [INFO 08-11 15:56:38] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting. [INFO 08-11 15:56:38] Scheduler: Generated all trials that can be generated currently. Max parallelism currently reached. [WARNING 08-11 15:56:38] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:56:38] Scheduler: Fetching data for trials: [8, 10, 11] because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:38] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:56:38] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:56:38] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:56:38] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:38] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:56:38] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Considering trial 8 for early stopping. [INFO 08-11 15:56:38] ax.early_stopping.strategies.base: Last progression of Trial 8 is 0.3999466666666667. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Early stopping decision for 8: False. Reason: Trial objective value 0.9654649496078491 is better than 70.0-th percentile (0.962700217962265) across comparable trials. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Considering trial 10 for early stopping. [INFO 08-11 15:56:38] ax.early_stopping.strategies.base: Last progression of Trial 10 is 0.3999466666666667. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Early stopping decision for 10: True. Reason: Trial objective value 0.9556012749671936 is worse than 70.0-th percentile (0.962700217962265) across comparable trials. [INFO 08-11 15:56:38] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:56:38] ax.early_stopping.strategies.base: There is not yet any data associated with trial 11. Not early stopping this trial. [INFO 08-11 15:56:38] Scheduler: Retrieved EARLY_STOPPED trials: [10]. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:56:40] Scheduler: Running trials [12]... [INFO 08-11 15:56:41] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting. [INFO 08-11 15:56:41] Scheduler: Generated all trials that can be generated currently. Max parallelism currently reached. [WARNING 08-11 15:56:41] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:56:41] Scheduler: Fetching data for trials: [8, 11, 12] because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:56:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:56:41] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/12. Returning without this metric. [INFO 08-11 15:56:41] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:56:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:56:41] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:56:41] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:56:41] Scheduler: Failed to fetch val_acc for trial 12, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:41] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 12 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:56:41] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:56:41] ax.early_stopping.strategies.percentile: Considering trial 8 for early stopping. [INFO 08-11 15:56:41] ax.early_stopping.strategies.base: Last progression of Trial 8 is 0.3999466666666667. [INFO 08-11 15:56:41] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:56:41] ax.early_stopping.strategies.percentile: Early stopping decision for 8: False. Reason: Trial objective value 0.9654649496078491 is better than 70.0-th percentile (0.962700217962265) across comparable trials. [INFO 08-11 15:56:41] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:56:41] ax.early_stopping.strategies.base: There is not yet any data associated with trial 11. Not early stopping this trial. [INFO 08-11 15:56:41] ax.early_stopping.strategies.percentile: Considering trial 12 for early stopping. [INFO 08-11 15:56:41] ax.early_stopping.strategies.base: There is not yet any data associated with trial 12. Not early stopping this trial. [INFO 08-11 15:56:41] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:56:51] Scheduler: Fetching data for trials: [8, 11, 12] because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:51] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:56:51] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:56:51] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/12. Returning without this metric. [INFO 08-11 15:56:51] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:56:51] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:56:51] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:56:51] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:51] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:56:51] Scheduler: Failed to fetch val_acc for trial 12, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:51] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 12 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:56:51] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.49994666666666665. [INFO 08-11 15:56:51] ax.early_stopping.strategies.percentile: Considering trial 8 for early stopping. [INFO 08-11 15:56:51] ax.early_stopping.strategies.base: Last progression of Trial 8 is 0.49994666666666665. [INFO 08-11 15:56:51] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.949687 3 0.932462 5 0.967243 6 0.967095 7 0.905736 8 0.965938 Name: 0.49994666666666665, dtype: float64. [INFO 08-11 15:56:51] ax.early_stopping.strategies.percentile: Early stopping decision for 8: True. Reason: Trial objective value 0.9659379124641418 is worse than 70.0-th percentile (0.9665164053440094) across comparable trials. [INFO 08-11 15:56:51] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:56:51] ax.early_stopping.strategies.base: There is not yet any data associated with trial 11. Not early stopping this trial. [INFO 08-11 15:56:51] ax.early_stopping.strategies.percentile: Considering trial 12 for early stopping. [INFO 08-11 15:56:51] ax.early_stopping.strategies.base: There is not yet any data associated with trial 12. Not early stopping this trial. [INFO 08-11 15:56:51] Scheduler: Retrieved EARLY_STOPPED trials: [8]. [INFO 08-11 15:56:52] Scheduler: Running trials [13]... [INFO 08-11 15:56:53] ax.modelbridge.torch: The observations are identical to the last set of observations used to fit the model. Skipping model fitting. [INFO 08-11 15:56:53] Scheduler: Generated all trials that can be generated currently. Max parallelism currently reached. [WARNING 08-11 15:56:53] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:56:53] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:56:53] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:56:53] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:56:53] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/12. Returning without this metric. [INFO 08-11 15:56:53] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:56:53] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/13. Returning without this metric. [INFO 08-11 15:56:53] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:56:53] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:56:53] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:56:53] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:56:53] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:53] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:56:53] Scheduler: Failed to fetch val_acc for trial 12, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:53] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 12 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:56:53] Scheduler: Failed to fetch val_acc for trial 13, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:56:53] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 13 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:56:53] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 15:56:53] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:56:53] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:03] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:57:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:57:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/12. Returning without this metric. [INFO 08-11 15:57:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:57:03] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/13. Returning without this metric. [INFO 08-11 15:57:03] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:57:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:57:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:57:03] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:57:03] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:57:03] Scheduler: Failed to fetch val_acc for trial 12, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 12 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:57:03] Scheduler: Failed to fetch val_acc for trial 13, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:03] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 13 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:57:03] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 15:57:03] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:03] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:13] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/11. Returning without this metric. [INFO 08-11 15:57:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:57:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/12. Returning without this metric. [INFO 08-11 15:57:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [INFO 08-11 15:57:13] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/13. Returning without this metric. [INFO 08-11 15:57:13] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:57:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:57:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [ERROR 08-11 15:57:13] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:57:13] Scheduler: Failed to fetch val_acc for trial 11, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 11 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:57:13] Scheduler: Failed to fetch val_acc for trial 12, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 12 is still RUNNING continuing the experiment and retrying on next poll... [WARNING 08-11 15:57:13] Scheduler: Failed to fetch val_acc for trial 13, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:57:13] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 13 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:57:13] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 15:57:13] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:13] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:23] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:23] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.09994666666666667. [INFO 08-11 15:57:23] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:23] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:33] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:33] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.09994666666666667. [INFO 08-11 15:57:33] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:33] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:43] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:44] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.19994666666666666. [INFO 08-11 15:57:44] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:44] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:57:54] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:57:54] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.19994666666666666. [INFO 08-11 15:57:54] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:57:54] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:58:04] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:04] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.29994666666666664. [INFO 08-11 15:58:04] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:58:04] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:58:14] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:14] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.29994666666666664. [INFO 08-11 15:58:14] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 15:58:14] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:58:24] Scheduler: Fetching data for trials: 11 - 13 because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:24] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:58:24] ax.early_stopping.strategies.base: Last progression of Trial 11 is 0.3999466666666667. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Early stopping decision for 11: False. Reason: Trial objective value 0.9668868184089661 is better than 70.0-th percentile (0.9635358095169068) across comparable trials. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Considering trial 12 for early stopping. [INFO 08-11 15:58:24] ax.early_stopping.strategies.base: Last progression of Trial 12 is 0.3999466666666667. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Early stopping decision for 12: True. Reason: Trial objective value 0.9616639614105225 is worse than 70.0-th percentile (0.9635358095169068) across comparable trials. [INFO 08-11 15:58:24] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:24] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.29994666666666664. [INFO 08-11 15:58:24] ax.early_stopping.strategies.base: Trial 13's most recent progression (0.29994666666666664) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:58:25] Scheduler: Retrieved EARLY_STOPPED trials: [12]. /Users/mpolson64/opt/anaconda3/envs/ax-dev/lib/python3.9/site-packages/linear_operator/utils/cholesky.py:40: NumericalWarning: A not p.d., added jitter of 1.0e-08 to the diagonal warnings.warn( [INFO 08-11 15:58:26] Scheduler: Running trials [14]... [WARNING 08-11 15:58:26] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:58:26] Scheduler: Fetching data for trials: [11, 13, 14] because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:26] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/14. Returning without this metric. [INFO 08-11 15:58:26] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:58:26] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:58:26] Scheduler: Failed to fetch val_acc for trial 14, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:58:26] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 14 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:58:26] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:58:26] ax.early_stopping.strategies.base: Last progression of Trial 11 is 0.3999466666666667. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 13 0.964606 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Early stopping decision for 11: False. Reason: Trial objective value 0.9668868184089661 is better than 70.0-th percentile (0.9646064639091492) across comparable trials. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:26] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.3999466666666667. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 13 0.964606 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9646064639091492 is better than 70.0-th percentile (0.9646064639091492) across comparable trials. [INFO 08-11 15:58:26] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:58:26] ax.early_stopping.strategies.base: There is not yet any data associated with trial 14. Not early stopping this trial. [INFO 08-11 15:58:26] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:58:36] Scheduler: Fetching data for trials: [11, 13, 14] because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:36] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/14. Returning without this metric. [INFO 08-11 15:58:36] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:58:36] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:58:36] Scheduler: Failed to fetch val_acc for trial 14, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:58:36] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 14 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:58:36] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.3999466666666667. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:58:36] ax.early_stopping.strategies.base: Last progression of Trial 11 is 0.3999466666666667. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 13 0.964606 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Early stopping decision for 11: False. Reason: Trial objective value 0.9668868184089661 is better than 70.0-th percentile (0.9646064639091492) across comparable trials. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:36] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.3999466666666667. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 13 0.964606 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9646064639091492 is better than 70.0-th percentile (0.9646064639091492) across comparable trials. [INFO 08-11 15:58:36] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:58:36] ax.early_stopping.strategies.base: There is not yet any data associated with trial 14. Not early stopping this trial. [INFO 08-11 15:58:36] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 3). [INFO 08-11 15:58:46] Scheduler: Fetching data for trials: [11, 13, 14] because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:46] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/14. Returning without this metric. [INFO 08-11 15:58:46] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:58:46] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:58:46] Scheduler: Failed to fetch val_acc for trial 14, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:58:46] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 14 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:58:46] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.49994666666666665. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Considering trial 11 for early stopping. [INFO 08-11 15:58:46] ax.early_stopping.strategies.base: Last progression of Trial 11 is 0.49994666666666665. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.949687 3 0.932462 5 0.967243 6 0.967095 7 0.905736 8 0.965938 11 0.967039 13 0.967241 Name: 0.49994666666666665, dtype: float64. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Early stopping decision for 11: True. Reason: Trial objective value 0.967039167881012 is worse than 70.0-th percentile (0.9670893251895905) across comparable trials. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:46] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.49994666666666665. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.949687 3 0.932462 5 0.967243 6 0.967095 7 0.905736 8 0.965938 11 0.967039 13 0.967241 Name: 0.49994666666666665, dtype: float64. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9672407507896423 is better than 70.0-th percentile (0.9670893251895905) across comparable trials. [INFO 08-11 15:58:46] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:58:46] ax.early_stopping.strategies.base: There is not yet any data associated with trial 14. Not early stopping this trial. [INFO 08-11 15:58:47] Scheduler: Retrieved EARLY_STOPPED trials: [11]. [INFO 08-11 15:58:47] Scheduler: Done submitting trials, waiting for remaining 2 running trials... [WARNING 08-11 15:58:47] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:58:47] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:47] ax.metrics.curve: val_acc not yet present in curves from /var/folders/w_/g_40lr6j0s98g6921f3qxcmr0000gn/T/tmporyna1zx/14. Returning without this metric. [INFO 08-11 15:58:47] ax.core.metric: MetricFetchE INFO: Initialized MetricFetchE(message="DataFrame from curve series is empty") [ERROR 08-11 15:58:47] ax.core.experiment: Discovered Metric fetching Err while attaching data MetricFetchE(message="DataFrame from curve series is empty"). Ignoring for now -- will retry query on next call to fetch. [WARNING 08-11 15:58:47] Scheduler: Failed to fetch val_acc for trial 14, found MetricFetchE(message="DataFrame from curve series is empty"). [INFO 08-11 15:58:47] Scheduler: MetricFetchE INFO: Because val_acc is available_while_running and trial 14 is still RUNNING continuing the experiment and retrying on next poll... [INFO 08-11 15:58:47] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.49994666666666665. [INFO 08-11 15:58:47] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:47] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.49994666666666665. [INFO 08-11 15:58:47] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.949687 3 0.932462 5 0.967243 6 0.967095 7 0.905736 8 0.965938 11 0.967039 13 0.967241 Name: 0.49994666666666665, dtype: float64. [INFO 08-11 15:58:47] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9672407507896423 is better than 70.0-th percentile (0.9670893251895905) across comparable trials. [INFO 08-11 15:58:47] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:58:47] ax.early_stopping.strategies.base: There is not yet any data associated with trial 14. Not early stopping this trial. [INFO 08-11 15:58:47] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:58:57] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:58:57] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.49994666666666665. [INFO 08-11 15:58:57] ax.early_stopping.utils: Got exception `x and y arrays must have at least 2 entries` during interpolation. Using uninterpolated values instead. [INFO 08-11 15:58:57] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:58:57] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.49994666666666665. [INFO 08-11 15:58:57] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.949687 3 0.932462 5 0.967243 6 0.967095 7 0.905736 8 0.965938 11 0.967039 13 0.967241 Name: 0.49994666666666665, dtype: float64. [INFO 08-11 15:58:57] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9672407507896423 is better than 70.0-th percentile (0.9670893251895905) across comparable trials. [INFO 08-11 15:58:57] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:58:57] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.09994666666666667. [INFO 08-11 15:58:57] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.09994666666666667) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:58:57] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:07] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:07] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.5999466666666666. [INFO 08-11 15:59:07] ax.early_stopping.utils: Got exception `x and y arrays must have at least 2 entries` during interpolation. Using uninterpolated values instead. [INFO 08-11 15:59:07] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:07] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.5999466666666666. [INFO 08-11 15:59:07] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.953833 3 0.938424 5 0.965705 6 0.969712 7 0.908044 13 0.971898 Name: 0.5999466666666666, dtype: float64. [INFO 08-11 15:59:07] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9718977808952332 is better than 70.0-th percentile (0.96770840883255) across comparable trials. [INFO 08-11 15:59:07] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:07] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.09994666666666667. [INFO 08-11 15:59:07] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.09994666666666667) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:59:07] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:17] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:17] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.5999466666666666. [INFO 08-11 15:59:17] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:17] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.5999466666666666. [INFO 08-11 15:59:17] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.953833 3 0.938424 5 0.965705 6 0.969712 7 0.908044 13 0.971898 Name: 0.5999466666666666, dtype: float64. [INFO 08-11 15:59:17] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9718977808952332 is better than 70.0-th percentile (0.96770840883255) across comparable trials. [INFO 08-11 15:59:17] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:17] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.19994666666666666. [INFO 08-11 15:59:17] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.19994666666666666) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:59:17] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:27] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:27] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.6999466666666667. [INFO 08-11 15:59:27] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:27] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.6999466666666667. [INFO 08-11 15:59:27] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.957948 3 0.942239 5 0.970380 6 0.969113 7 0.904302 13 0.969851 Name: 0.6999466666666667, dtype: float64. [INFO 08-11 15:59:27] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9698507785797119 is better than 70.0-th percentile (0.9694816768169403) across comparable trials. [INFO 08-11 15:59:27] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:27] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.19994666666666666. [INFO 08-11 15:59:27] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.19994666666666666) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:59:27] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:37] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:37] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.6999466666666667. [INFO 08-11 15:59:37] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:37] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.6999466666666667. [INFO 08-11 15:59:37] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.957948 3 0.942239 5 0.970380 6 0.969113 7 0.904302 13 0.969851 Name: 0.6999466666666667, dtype: float64. [INFO 08-11 15:59:37] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9698507785797119 is better than 70.0-th percentile (0.9694816768169403) across comparable trials. [INFO 08-11 15:59:37] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:37] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.29994666666666664. [INFO 08-11 15:59:37] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.29994666666666664) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:59:37] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:47] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:48] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.7999466666666667. [INFO 08-11 15:59:48] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:48] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.7999466666666667. [INFO 08-11 15:59:48] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.961311 3 0.944576 5 0.970860 6 0.971188 7 0.897023 13 0.971315 Name: 0.7999466666666667, dtype: float64. [INFO 08-11 15:59:48] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9713148474693298 is better than 70.0-th percentile (0.9710237085819244) across comparable trials. [INFO 08-11 15:59:48] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:48] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.29994666666666664. [INFO 08-11 15:59:48] ax.early_stopping.strategies.base: Trial 14's most recent progression (0.29994666666666664) falls out of the min/max_progression range (0.3, None). Not early stopping this trial. [INFO 08-11 15:59:48] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 2). [INFO 08-11 15:59:58] Scheduler: Fetching data for trials: 13 - 14 because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:58] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.7999466666666667. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:58] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.7999466666666667. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.961311 3 0.944576 5 0.970860 6 0.971188 7 0.897023 13 0.971315 Name: 0.7999466666666667, dtype: float64. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9713148474693298 is better than 70.0-th percentile (0.9710237085819244) across comparable trials. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Considering trial 14 for early stopping. [INFO 08-11 15:59:58] ax.early_stopping.strategies.base: Last progression of Trial 14 is 0.3999466666666667. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.942970 3 0.924540 5 0.962746 6 0.965378 7 0.900533 8 0.965465 9 0.962286 10 0.955601 11 0.966887 12 0.961664 13 0.964606 14 0.961109 Name: 0.3999466666666667, dtype: float64. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping decision for 14: True. Reason: Trial objective value 0.9611085653305054 is worse than 70.0-th percentile (0.9640483856201172) across comparable trials. [INFO 08-11 15:59:58] Scheduler: Retrieved EARLY_STOPPED trials: [14]. [WARNING 08-11 15:59:58] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate. [INFO 08-11 15:59:58] Scheduler: Fetching data for trials: [13] because some metrics on experiment are available while trials are running. [INFO 08-11 15:59:58] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.7999466666666667. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 15:59:58] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.7999466666666667. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.961311 3 0.944576 5 0.970860 6 0.971188 7 0.897023 13 0.971315 Name: 0.7999466666666667, dtype: float64. [INFO 08-11 15:59:58] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9713148474693298 is better than 70.0-th percentile (0.9710237085819244) across comparable trials. [INFO 08-11 15:59:58] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 1). [INFO 08-11 16:00:08] Scheduler: Fetching data for trials: [13] because some metrics on experiment are available while trials are running. [INFO 08-11 16:00:08] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0.8999466666666667. [INFO 08-11 16:00:08] ax.early_stopping.strategies.percentile: Considering trial 13 for early stopping. [INFO 08-11 16:00:08] ax.early_stopping.strategies.base: Last progression of Trial 13 is 0.8999466666666667. [INFO 08-11 16:00:08] ax.early_stopping.strategies.percentile: Early stopping objective at last progression is: 1 0.963318 3 0.946916 5 0.968964 6 0.973597 7 0.910883 13 0.970080 Name: 0.8999466666666667, dtype: float64. [INFO 08-11 16:00:08] ax.early_stopping.strategies.percentile: Early stopping decision for 13: False. Reason: Trial objective value 0.9700800776481628 is better than 70.0-th percentile (0.9695222079753876) across comparable trials. [INFO 08-11 16:00:08] Scheduler: Waiting for completed trials (for 10 sec, currently running trials: 1). [INFO 08-11 16:00:18] ax.early_stopping.strategies.base: Last progression of any candidate for trial stopping is 0. [INFO 08-11 16:00:18] ax.early_stopping.strategies.base: No trials have reached 0.3. Not stopping any trials. [INFO 08-11 16:00:18] Scheduler: Retrieved COMPLETED trials: [13]. [INFO 08-11 16:00:18] Scheduler: Fetching data for trials: [13]. [WARNING 08-11 16:00:18] Scheduler: Both `init_seconds_between_polls` and `early_stopping_strategy supplied. `init_seconds_between_polls=1` will be overrridden by `early_stopping_strategy.seconds_between_polls=10` and polling will take place at a constant rate.
CPU times: user 1min 5s, sys: 9.67 s, total: 1min 15s Wall time: 10min 3s
OptimizationResult()
First, we examine the data stored on the experiment. This shows that each trial is associated with an entire learning curve, represented by the column "steps".
experiment.lookup_data().map_df.head(n=10)
arm_name | metric_name | mean | sem | trial_index | steps | |
---|---|---|---|---|---|---|
0 | 1_0 | val_acc | 0.902230 | NaN | 1 | 1874.0 |
1 | 1_0 | val_acc | 0.919720 | NaN | 1 | 3749.0 |
2 | 1_0 | val_acc | 0.933238 | NaN | 1 | 5624.0 |
3 | 1_0 | val_acc | 0.942970 | NaN | 1 | 7499.0 |
4 | 1_0 | val_acc | 0.949687 | NaN | 1 | 9374.0 |
5 | 1_0 | val_acc | 0.953833 | NaN | 1 | 11249.0 |
6 | 1_0 | val_acc | 0.957948 | NaN | 1 | 13124.0 |
7 | 1_0 | val_acc | 0.961311 | NaN | 1 | 14999.0 |
8 | 1_0 | val_acc | 0.963318 | NaN | 1 | 16874.0 |
9 | 1_0 | val_acc | 0.964867 | NaN | 1 | 18749.0 |
Below is a summary of the experiment, showing that a portion of trials have been early stopped.
exp_to_df(experiment)
trial_index | arm_name | trial_status | generation_method | val_acc | hidden_size_1 | hidden_size_2 | learning_rate | dropout | |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0_0 | FAILED | Sobol | NaN | 48 | 23 | 0.002791 | 0.485655 |
1 | 1 | 1_0 | COMPLETED | Sobol | 0.964867 | 74 | 40 | 0.000114 | 0.103831 |
2 | 2 | 2_0 | FAILED | Sobol | NaN | 101 | 30 | 0.000704 | 0.009901 |
3 | 3 | 3_0 | COMPLETED | Sobol | 0.950014 | 44 | 24 | 0.000102 | 0.103894 |
4 | 4 | 4_0 | FAILED | Sobol | NaN | 17 | 25 | 0.000144 | 0.365329 |
5 | 5 | 5_0 | COMPLETED | Sobol | 0.970005 | 61 | 54 | 0.000527 | 0.055105 |
6 | 6 | 6_0 | COMPLETED | Sobol | 0.971267 | 71 | 110 | 0.000417 | 0.130198 |
7 | 7 | 7_0 | COMPLETED | Sobol | 0.910804 | 16 | 25 | 0.002721 | 0.125099 |
8 | 8 | 8_0 | EARLY_STOPPED | GPEI | 0.965938 | 101 | 81 | 0.000316 | 0.053658 |
9 | 9 | 9_0 | EARLY_STOPPED | GPEI | 0.962286 | 70 | 68 | 0.000424 | 0.217020 |
10 | 10 | 10_0 | EARLY_STOPPED | GPEI | 0.955601 | 52 | 109 | 0.000186 | 0.045768 |
11 | 11 | 11_0 | EARLY_STOPPED | GPEI | 0.967039 | 79 | 76 | 0.000908 | 0.097330 |
12 | 12 | 12_0 | EARLY_STOPPED | GPEI | 0.961664 | 74 | 65 | 0.000325 | 0.099603 |
13 | 13 | 13_0 | COMPLETED | GPEI | 0.971588 | 89 | 30 | 0.000505 | 0.027777 |
14 | 14 | 14_0 | EARLY_STOPPED | GPEI | 0.961109 | 71 | 128 | 0.001331 | 0.083394 |
We can give a very rough estimate of the amount of computational savings due to early stopping, by looking at the total number of steps used when early stopping is used versus the number of steps used if we ran all trials to completion. Note to do a true comparison, one should run full HPO loops with and without early stopping (as early stopping will influence the model and future points selected by the generation strategy).
map_df = experiment.lookup_data().map_df
trial_to_max_steps = map_df.groupby("trial_index")["steps"].max()
completed_trial_steps = trial_to_max_steps.iloc[0]
savings = 1.0 - trial_to_max_steps.sum() / (
completed_trial_steps * len(trial_to_max_steps)
)
# TODO format nicer
print(f"A rough estimate of the computational savings is {100 * savings}%.")
A rough estimate of the computational savings is 28.335999999999995%.
Finally, we show a visualization of learning curves versus actual elapsed wall time. This helps to illustrate that stopped trials make room for additional trials to be run.
# helper function for getting trial start times
def time_started(row):
trial_index = row["trial_index"]
return experiment.trials[trial_index].time_run_started
# helper function for getting trial completion times
def time_completed(row):
trial_index = row["trial_index"]
return experiment.trials[trial_index].time_completed
# helper function for getting relevant data from experiment
# with early stopping into useful dfs
def early_stopping_exp_to_df(experiment):
trials_df = exp_to_df(experiment)
curve_df = experiment.lookup_data().map_df
training_row_df = (
curve_df.groupby("trial_index").max().reset_index()[["trial_index", "steps"]]
)
trials_df = trials_df.merge(training_row_df, on="trial_index")
trials_df["time_started"] = trials_df.apply(func=time_started, axis=1)
trials_df["time_completed"] = trials_df.apply(func=time_completed, axis=1)
start_time = trials_df["time_started"].min()
trials_df["time_started_rel"] = (
trials_df["time_started"] - start_time
).dt.total_seconds()
trials_df["time_completed_rel"] = (
trials_df["time_completed"] - start_time
).dt.total_seconds()
return trials_df, curve_df
def plot_curves_by_wall_time(trials_df, curve_df):
trials = set(curve_df["trial_index"])
fig, ax = plt.subplots(1, 1, figsize=(10, 6))
ax.set(xlabel="seconds since start", ylabel="validation accuracy")
for trial_index in trials:
this_trial_df = curve_df[curve_df["trial_index"] == trial_index]
start_time_rel = trials_df["time_started_rel"].iloc[trial_index]
completed_time_rel = trials_df["time_completed_rel"].iloc[trial_index]
total_steps = trials_df.loc[trial_index, "steps"]
smoothed_curve = this_trial_df["mean"].rolling(window=3).mean()
x = (
start_time_rel
+ (completed_time_rel - start_time_rel)
/ total_steps
* this_trial_df["steps"]
)
ax.plot(
x,
smoothed_curve,
label=f"trial #{trial_index}" if trial_index % 2 == 1 else None,
)
ax.legend()
# wrap in try/except in case of flaky I/O issues
try:
trials_df, curve_df = early_stopping_exp_to_df(experiment)
plot_curves_by_wall_time(trials_df, curve_df)
except Exception as e:
print(f"Encountered exception while plotting results: {e}")
Encountered exception while plotting results: single positional indexer is out-of-bounds
Total runtime of script: 10 minutes, 48.48 seconds.