{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Ax Service API with RayTune on PyTorch CNN\n", "\n", "Ax integrates easily with different scheduling frameworks and distributed training frameworks. In this example, Ax-driven optimization is executed in a distributed fashion using [RayTune](https://ray.readthedocs.io/en/latest/tune.html). \n", "\n", "RayTune is a scalable framework for hyperparameter tuning that provides many state-of-the-art hyperparameter tuning algorithms and seamlessly scales from laptop to distributed cluster with fault tolerance. RayTune leverages [Ray](https://ray.readthedocs.io/)'s Actor API to provide asynchronous parallel and distributed execution.\n", "\n", "Ray 'Actors' are a simple and clean abstraction for replicating your Python classes across multiple workers and nodes. Each hyperparameter evaluation is asynchronously executed on a separate Ray actor and reports intermediate training progress back to RayTune. Upon reporting, RayTune then uses this information to performs actions such as early termination, re-prioritization, or checkpointing." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import logging\n", "from ray import tune\n", "from ray.tune import track\n", "from ray.tune.suggest.ax import AxSearch\n", "logger = logging.getLogger(tune.__name__) \n", "logger.setLevel(level=logging.CRITICAL) # Reduce the number of Ray warnings that are not relevant here." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:25] ipy_plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.\n" ] }, { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import torch\n", "import numpy as np\n", "\n", "from ax.plot.contour import plot_contour\n", "from ax.plot.trace import optimization_trace_single_method\n", "from ax.service.ax_client import AxClient\n", "from ax.utils.notebook.plotting import render, init_notebook_plotting\n", "from ax.utils.tutorials.cnn_utils import CNN, load_mnist, train, evaluate\n", "\n", "\n", "init_notebook_plotting()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Initialize client\n", "We specify `enforce_sequential_optimization` as False, because Ray runs many trials in parallel. With the sequential optimization enforcement, `AxClient` would expect the first few trials to be completed with data before generating more trials.\n", "\n", "When high parallelism is not required, it is best to enforce sequential optimization, as it allows for achieving optimal results in fewer (but sequential) trials. In cases where parallelism is important, such as with distributed training using Ray, we choose to forego minimizing resource utilization and run more trials in parallel." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:25] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 2 decimal points.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "In WithDBSettings, db settings: None\n" ] } ], "source": [ "ax = AxClient(enforce_sequential_optimization=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Set up experiment\n", "Here we set up the search space and specify the objective; refer to the Ax API tutorials for more detail." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:25] 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.\n" ] } ], "source": [ "ax.create_experiment(\n", " name=\"mnist_experiment\",\n", " parameters=[\n", " {\"name\": \"lr\", \"type\": \"range\", \"bounds\": [1e-6, 0.4], \"log_scale\": True},\n", " {\"name\": \"momentum\", \"type\": \"range\", \"bounds\": [0.0, 1.0]},\n", " ],\n", " objective_name=\"mean_accuracy\",\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Define how to evaluate trials\n", "Since we use the Ax Service API here, we evaluate the parameterizations that Ax suggests, using RayTune. The evaluation function follows its usual pattern, taking in a parameterization and outputting an objective value. For detail on evaluation functions, see [Trial Evaluation](https://ax.dev/docs/runner.html). " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def train_evaluate(parameterization):\n", " device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", " train_loader, valid_loader, test_loader = load_mnist(data_path='~/.data')\n", " net = train(net=CNN(), train_loader=train_loader, parameters=parameterization, dtype=torch.float, device=device)\n", " track.log(\n", " mean_accuracy=evaluate(\n", " net=net,\n", " data_loader=valid_loader,\n", " dtype=torch.float,\n", " device=device,\n", " )\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Run optimization\n", "Execute the Ax optimization and trial evaluation in RayTune using [AxSearch algorithm](https://ray.readthedocs.io/en/latest/tune-searchalg.html#ax-search):" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2020-06-10 18:33:25,414\tINFO resource_spec.py:212 -- Starting Ray with 4.35 GiB memory available for workers and up to 2.18 GiB for objects. You can adjust these settings with ray.init(memory=, object_store_memory=).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2020-06-10 18:33:25,814\tINFO services.py:1170 -- View the Ray dashboard at \u001b[1m\u001b[32mlocalhost:8265\u001b[39m\u001b[22m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:26] ax.service.ax_client: Generated new trial 0 with parameters {'lr': 0.0, 'momentum': 0.9}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:26] ax.service.ax_client: Generated new trial 1 with parameters {'lr': 0.0, 'momentum': 0.67}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:26] ax.service.ax_client: Generated new trial 2 with parameters {'lr': 0.0, 'momentum': 0.32}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:26] ax.service.ax_client: Generated new trial 3 with parameters {'lr': 0.0, 'momentum': 0.59}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:26] ax.service.ax_client: Generated new trial 4 with parameters {'lr': 0.0, 'momentum': 0.96}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:27] ax.service.ax_client: Generated new trial 5 with parameters {'lr': 0.0, 'momentum': 0.15}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:27] ax.service.ax_client: Generated new trial 6 with parameters {'lr': 0.01, 'momentum': 0.21}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:27] ax.service.ax_client: Generated new trial 7 with parameters {'lr': 0.0, 'momentum': 0.43}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 8 with parameters {'lr': 0.04, 'momentum': 0.61}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 9 with parameters {'lr': 0.0, 'momentum': 0.85}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 10 with parameters {'lr': 0.0, 'momentum': 0.7}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 11 with parameters {'lr': 0.05, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 12 with parameters {'lr': 0.05, 'momentum': 0.51}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 13 with parameters {'lr': 0.0, 'momentum': 0.89}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 14 with parameters {'lr': 0.0, 'momentum': 0.27}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:28] ax.service.ax_client: Generated new trial 15 with parameters {'lr': 0.0, 'momentum': 0.58}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 16 with parameters {'lr': 0.0, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 17 with parameters {'lr': 0.04, 'momentum': 0.65}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 18 with parameters {'lr': 0.0, 'momentum': 0.46}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 19 with parameters {'lr': 0.04, 'momentum': 0.79}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 20 with parameters {'lr': 0.0, 'momentum': 0.84}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 21 with parameters {'lr': 0.0, 'momentum': 0.4}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:29] ax.service.ax_client: Generated new trial 22 with parameters {'lr': 0.0, 'momentum': 0.29}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:30] ax.service.ax_client: Generated new trial 23 with parameters {'lr': 0.0, 'momentum': 0.15}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:30] ax.service.ax_client: Generated new trial 24 with parameters {'lr': 0.0, 'momentum': 0.63}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:30] ax.service.ax_client: Generated new trial 25 with parameters {'lr': 0.0, 'momentum': 0.89}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:30] ax.service.ax_client: Generated new trial 26 with parameters {'lr': 0.0, 'momentum': 0.82}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:30] ax.service.ax_client: Generated new trial 27 with parameters {'lr': 0.0, 'momentum': 0.49}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:31] ax.service.ax_client: Generated new trial 28 with parameters {'lr': 0.0, 'momentum': 0.9}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:31] ax.service.ax_client: Generated new trial 29 with parameters {'lr': 0.0, 'momentum': 0.01}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw/train-images-idx3-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m 2020-06-10 18:33:33,702\tINFO trainable.py:217 -- Getting current IP.\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m 2020-06-10 18:33:33,799\tINFO trainable.py:217 -- Getting current IP.\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw/train-images-idx3-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "0.0%\r", "0.1%\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.0%\r", "0.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "0.2%\r", "0.2%\r", "0.3%\r", "0.4%\r", "0.5%\r", "0.6%\r", "0.7%\r", "0.7%\r", "0.8%\r", "0.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.2%\r", "0.2%\r", "0.3%\r", "0.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "1.0%\r", "1.1%\r", "1.2%\r", "1.2%\r", "1.3%\r", "1.4%\r", "1.5%\r", "1.6%\r", "1.7%\r", "1.7%\r", "1.8%\r", "1.9%\r", "2.0%\r", "2.1%\r", "2.1%\r", "2.2%\r", "2.3%\r", "2.4%\r", "2.5%\r", "2.6%\r", "2.6%\r", "2.7%\r", "2.8%\r", "2.9%\r", "3.0%\r", "3.1%\r", "3.1%\r", "3.2%\r", "3.3%\r", "3.4%\r", "3.5%\r", "3.6%\r", "3.6%\r", "3.7%\r", "3.8%\r", "3.9%\r", "4.0%\r", "4.0%\r", "4.1%\r", "4.2%\r", "4.3%\r", "4.4%\r", "4.5%\r", "4.5%\r", "4.6%\r", "4.7%\r", "4.8%\r", "4.9%\r", "5.0%\r", "5.0%\r", "5.1%\r", "5.2%\r", "5.3%\r", "5.4%\r", "5.5%\r", "5.5%\r", "5.6%\r", "5.7%\r", "5.8%\r", "5.9%\r", "6.0%\r", "6.0%\r", "6.1%\r", "6.2%\r", "6.3%\r", "6.4%\r", "6.4%\r", "6.5%\r", "6.6%\r", "6.7%\r", "6.8%\r", "6.9%\r", "6.9%\r", "7.0%\r", "7.1%\r", "7.2%\r", "7.3%\r", "7.4%\r", "7.4%\r", "7.5%\r", "7.6%\r", "7.7%\r", "7.8%\r", "7.9%\r", "7.9%\r", "8.0%\r", "8.1%\r", "8.2%\r", "8.3%\r", "8.3%\r", "8.4%\r", "8.5%\r", "8.6%\r", "8.7%\r", "8.8%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.5%\r", "0.6%\r", "0.7%\r", "0.7%\r", "0.8%\r", "0.9%\r", "1.0%\r", "1.1%\r", "1.2%\r", "1.2%\r", "1.3%\r", "1.4%\r", "1.5%\r", "1.6%\r", "1.7%\r", "1.7%\r", "1.8%\r", "1.9%\r", "2.0%\r", "2.1%\r", "2.1%\r", "2.2%\r", "2.3%\r", "2.4%\r", "2.5%\r", "2.6%\r", "2.6%\r", "2.7%\r", "2.8%\r", "2.9%\r", "3.0%\r", "3.1%\r", "3.1%\r", "3.2%\r", "3.3%\r", "3.4%\r", "3.5%\r", "3.6%\r", "3.6%\r", "3.7%\r", "3.8%\r", "3.9%\r", "4.0%\r", "4.0%\r", "4.1%\r", "4.2%\r", "4.3%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "8.8%\r", "8.9%\r", "9.0%\r", "9.1%\r", "9.2%\r", "9.3%\r", "9.3%\r", "9.4%\r", "9.5%\r", "9.6%\r", "9.7%\r", "9.8%\r", "9.8%\r", "9.9%\r", "10.0%\r", "10.1%\r", "10.2%\r", "10.2%\r", "10.3%\r", "10.4%\r", "10.5%\r", "10.6%\r", "10.7%\r", "10.7%\r", "10.8%\r", "10.9%\r", "11.0%\r", "11.1%\r", "11.2%\r", "11.2%\r", "11.3%\r", "11.4%\r", "11.5%\r", "11.6%\r", "11.7%\r", "11.7%\r", "11.8%\r", "11.9%\r", "12.0%\r", "12.1%\r", "12.1%\r", "12.2%\r", "12.3%\r", "12.4%\r", "12.5%\r", "12.6%\r", "12.6%\r", "12.7%\r", "12.8%\r", "12.9%\r", "13.0%\r", "13.1%\r", "13.1%\r", "13.2%\r", "13.3%\r", "13.4%\r", "13.5%\r", "13.6%\r", "13.6%\r", "13.7%\r", "13.8%\r", "13.9%\r", "14.0%\r", "14.0%\r", "14.1%\r", "14.2%\r", "14.3%\r", "14.4%\r", "14.5%\r", "14.5%\r", "14.6%\r", "14.7%\r", "14.8%\r", "14.9%\r", "15.0%\r", "15.0%\r", "15.1%\r", "15.2%\r", "15.3%\r", "15.4%\r", "15.5%\r", "15.5%\r", "15.6%\r", "15.7%\r", "15.8%\r", "15.9%\r", "16.0%\r", "16.0%\r", "16.1%\r", "16.2%\r", "16.3%\r", "16.4%\r", "16.4%\r", "16.5%\r", "16.6%\r", "16.7%\r", "16.8%\r", "16.9%\r", "16.9%\r", "17.0%\r", "17.1%\r", "17.2%\r", "17.3%\r", "17.4%\r", "17.4%\r", "17.5%\r", "17.6%\r", "17.7%\r", "17.8%\r", "17.9%\r", "17.9%\r", "18.0%\r", "18.1%\r", "18.2%\r", "18.3%\r", "18.3%\r", "18.4%\r", "18.5%\r", "18.6%\r", "18.7%\r", "18.8%\r", "18.8%\r", "18.9%\r", "19.0%\r", "19.1%\r", "19.2%\r", "19.3%\r", "19.3%\r", "19.4%\r", "19.5%\r", "19.6%\r", "19.7%\r", "19.8%\r", "19.8%\r", "19.9%\r", "20.0%\r", "20.1%\r", "20.2%\r", "20.2%\r", "20.3%\r", "20.4%\r", "20.5%\r", "20.6%\r", "20.7%\r", "20.7%\r", "20.8%\r", "20.9%\r", "21.0%\r", "21.1%\r", "21.2%\r", "21.2%\r", "21.3%\r", "21.4%\r", "21.5%\r", "21.6%\r", "21.7%\r", "21.7%\r", "21.8%\r", "21.9%\r", "22.0%\r", "22.1%\r", "22.1%\r", "22.2%\r", "22.3%\r", "22.4%\r", "22.5%\r", "22.6%\r", "22.6%\r", "22.7%\r", "22.8%\r", "22.9%\r", "23.0%\r", "23.1%\r", "23.1%\r", "23.2%\r", "23.3%\r", "23.4%\r", "23.5%\r", "23.6%\r", "23.6%\r", "23.7%\r", "23.8%\r", "23.9%\r", "24.0%\r", "24.0%\r", "24.1%\r", "24.2%\r", "24.3%\r", "24.4%\r", "24.5%\r", "24.5%\r", "24.6%\r", "24.7%\r", "24.8%\r", "24.9%\r", "25.0%\r", "25.0%\r", "25.1%\r", "25.2%\r", "25.3%\r", "25.4%\r", "25.5%\r", "25.5%\r", "25.6%\r", "25.7%\r", "25.8%\r", "25.9%\r", "26.0%\r", "26.0%\r", "26.1%\r", "26.2%\r", "26.3%\r", "26.4%\r", "26.4%\r", "26.5%\r", "26.6%\r", "26.7%\r", "26.8%\r", "26.9%\r", "26.9%\r", "27.0%\r", "27.1%\r", "27.2%\r", "27.3%\r", "27.4%\r", "27.4%\r", "27.5%\r", "27.6%\r", "27.7%\r", "27.8%\r", "27.9%\r", "27.9%\r", "28.0%\r", "28.1%\r", "28.2%\r", "28.3%\r", "28.3%\r", "28.4%\r", "28.5%\r", "28.6%\r", "28.7%\r", "28.8%\r", "28.8%\r", "28.9%\r", "29.0%\r", "29.1%\r", "29.2%\r", "29.3%\r", "29.3%\r", "29.4%\r", "29.5%\r", "29.6%\r", "29.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "4.4%\r", "4.5%\r", "4.5%\r", "4.6%\r", "4.7%\r", "4.8%\r", "4.9%\r", "5.0%\r", "5.0%\r", "5.1%\r", "5.2%\r", "5.3%\r", "5.4%\r", "5.5%\r", "5.5%\r", "5.6%\r", "5.7%\r", "5.8%\r", "5.9%\r", "6.0%\r", "6.0%\r", "6.1%\r", "6.2%\r", "6.3%\r", "6.4%\r", "6.4%\r", "6.5%\r", "6.6%\r", "6.7%\r", "6.8%\r", "6.9%\r", "6.9%\r", "7.0%\r", "7.1%\r", "7.2%\r", "7.3%\r", "7.4%\r", "7.4%\r", "7.5%\r", "7.6%\r", "7.7%\r", "7.8%\r", "7.9%\r", "7.9%\r", "8.0%\r", "8.1%\r", "8.2%\r", "8.3%\r", "8.3%\r", "8.4%\r", "8.5%\r", "8.6%\r", "8.7%\r", "8.8%\r", "8.8%\r", "8.9%\r", "9.0%\r", "9.1%\r", "9.2%\r", "9.3%\r", "9.3%\r", "9.4%\r", "9.5%\r", "9.6%\r", "9.7%\r", "9.8%\r", "9.8%\r", "9.9%\r", "10.0%\r", "10.1%\r", "10.2%\r", "10.2%\r", "10.3%\r", "10.4%\r", "10.5%\r", "10.6%\r", "10.7%\r", "10.7%\r", "10.8%\r", "10.9%\r", "11.0%\r", "11.1%\r", "11.2%\r", "11.2%\r", "11.3%\r", "11.4%\r", "11.5%\r", "11.6%\r", "11.7%\r", "11.7%\r", "11.8%\r", "11.9%\r", "12.0%\r", "12.1%\r", "12.1%\r", "12.2%\r", "12.3%\r", "12.4%\r", "12.5%\r", "12.6%\r", "12.6%\r", "12.7%\r", "12.8%\r", "12.9%\r", "13.0%\r", "13.1%\r", "13.1%\r", "13.2%\r", "13.3%\r", "13.4%\r", "13.5%\r", "13.6%\r", "13.6%\r", "13.7%\r", "13.8%\r", "13.9%\r", "14.0%\r", "14.0%\r", "14.1%\r", "14.2%\r", "14.3%\r", "14.4%\r", "14.5%\r", "14.5%\r", "14.6%\r", "14.7%\r", "14.8%\r", "14.9%\r", "15.0%\r", "15.0%\r", "15.1%\r", "15.2%\r", "15.3%\r", "15.4%\r", "15.5%\r", "15.5%\r", "15.6%\r", "15.7%\r", "15.8%\r", "15.9%\r", "16.0%\r", "16.0%\r", "16.1%\r", "16.2%\r", "16.3%\r", "16.4%\r", "16.4%\r", "16.5%\r", "16.6%\r", "16.7%\r", "16.8%\r", "16.9%\r", "16.9%\r", "17.0%\r", "17.1%\r", "17.2%\r", "17.3%\r", "17.4%\r", "17.4%\r", "17.5%\r", "17.6%\r", "17.7%\r", "17.8%\r", "17.9%\r", "17.9%\r", "18.0%\r", "18.1%\r", "18.2%\r", "18.3%\r", "18.3%\r", "18.4%\r", "18.5%\r", "18.6%\r", "18.7%\r", "18.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "29.8%\r", "29.8%\r", "29.9%\r", "30.0%\r", "30.1%\r", "30.2%\r", "30.2%\r", "30.3%\r", "30.4%\r", "30.5%\r", "30.6%\r", "30.7%\r", "30.7%\r", "30.8%\r", "30.9%\r", "31.0%\r", "31.1%\r", "31.2%\r", "31.2%\r", "31.3%\r", "31.4%\r", "31.5%\r", "31.6%\r", "31.7%\r", "31.7%\r", "31.8%\r", "31.9%\r", "32.0%\r", "32.1%\r", "32.1%\r", "32.2%\r", "32.3%\r", "32.4%\r", "32.5%\r", "32.6%\r", "32.6%\r", "32.7%\r", "32.8%\r", "32.9%\r", "33.0%\r", "33.1%\r", "33.1%\r", "33.2%\r", "33.3%\r", "33.4%\r", "33.5%\r", "33.6%\r", "33.6%\r", "33.7%\r", "33.8%\r", "33.9%\r", "34.0%\r", "34.0%\r", "34.1%\r", "34.2%\r", "34.3%\r", "34.4%\r", "34.5%\r", "34.5%\r", "34.6%\r", "34.7%\r", "34.8%\r", "34.9%\r", "35.0%\r", "35.0%\r", "35.1%\r", "35.2%\r", "35.3%\r", "35.4%\r", "35.5%\r", "35.5%\r", "35.6%\r", "35.7%\r", "35.8%\r", "35.9%\r", "36.0%\r", "36.0%\r", "36.1%\r", "36.2%\r", "36.3%\r", "36.4%\r", "36.4%\r", "36.5%\r", "36.6%\r", "36.7%\r", "36.8%\r", "36.9%\r", "36.9%\r", "37.0%\r", "37.1%\r", "37.2%\r", "37.3%\r", "37.4%\r", "37.4%\r", "37.5%\r", "37.6%\r", "37.7%\r", "37.8%\r", "37.9%\r", "37.9%\r", "38.0%\r", "38.1%\r", "38.2%\r", "38.3%\r", "38.3%\r", "38.4%\r", "38.5%\r", "38.6%\r", "38.7%\r", "38.8%\r", "38.8%\r", "38.9%\r", "39.0%\r", "39.1%\r", "39.2%\r", "39.3%\r", "39.3%\r", "39.4%\r", "39.5%\r", "39.6%\r", "39.7%\r", "39.8%\r", "39.8%\r", "39.9%\r", "40.0%\r", "40.1%\r", "40.2%\r", "40.2%\r", "40.3%\r", "40.4%\r", "40.5%\r", "40.6%\r", "40.7%\r", "40.7%\r", "40.8%\r", "40.9%\r", "41.0%\r", "41.1%\r", "41.2%\r", "41.2%\r", "41.3%\r", "41.4%\r", "41.5%\r", "41.6%\r", "41.7%\r", "41.7%\r", "41.8%\r", "41.9%\r", "42.0%\r", "42.1%\r", "42.1%\r", "42.2%\r", "42.3%\r", "42.4%\r", "42.5%\r", "42.6%\r", "42.6%\r", "42.7%\r", "42.8%\r", "42.9%\r", "43.0%\r", "43.1%\r", "43.1%\r", "43.2%\r", "43.3%\r", "43.4%\r", "43.5%\r", "43.6%\r", "43.6%\r", "43.7%\r", "43.8%\r", "43.9%\r", "44.0%\r", "44.0%\r", "44.1%\r", "44.2%\r", "44.3%\r", "44.4%\r", "44.5%\r", "44.5%\r", "44.6%\r", "44.7%\r", "44.8%\r", "44.9%\r", "45.0%\r", "45.0%\r", "45.1%\r", "45.2%\r", "45.3%\r", "45.4%\r", "45.5%\r", "45.5%\r", "45.6%\r", "45.7%\r", "45.8%\r", "45.9%\r", "45.9%\r", "46.0%\r", "46.1%\r", "46.2%\r", "46.3%\r", "46.4%\r", "46.4%\r", "46.5%\r", "46.6%\r", "46.7%\r", "46.8%\r", "46.9%\r", "46.9%\r", "47.0%\r", "47.1%\r", "47.2%\r", "47.3%\r", "47.4%\r", "47.4%\r", "47.5%\r", "47.6%\r", "47.7%\r", "47.8%\r", "47.9%\r", "47.9%\r", "48.0%\r", "48.1%\r", "48.2%\r", "48.3%\r", "48.3%\r", "48.4%\r", "48.5%\r", "48.6%\r", "48.7%\r", "48.8%\r", "48.8%\r", "48.9%\r", "49.0%\r", "49.1%\r", "49.2%\r", "49.3%\r", "49.3%\r", "49.4%\r", "49.5%\r", "49.6%\r", "49.7%\r", "49.8%\r", "49.8%\r", "49.9%\r", "50.0%\r", "50.1%\r", "50.2%\r", "50.2%\r", "50.3%\r", "50.4%\r", "50.5%\r", "50.6%\r", "50.7%\r", "50.7%\r", "50.8%\r", "50.9%\r", "51.0%\r", "51.1%\r", "51.2%\r", "51.2%\r", "51.3%\r", "51.4%\r", "51.5%\r", "51.6%\r", "51.7%\r", "51.7%\r", "51.8%\r", "51.9%\r", "52.0%\r", "52.1%\r", "52.1%\r", "52.2%\r", "52.3%\r", "52.4%\r", "52.5%\r", "52.6%\r", "52.6%\r", "52.7%\r", "52.8%\r", "52.9%\r", "53.0%\r", "53.1%\r", "53.1%\r", "53.2%\r", "53.3%\r", "53.4%\r", "53.5%\r", "53.6%\r", "53.6%\r", "53.7%\r", "53.8%\r", "53.9%\r", "54.0%\r", "54.0%\r", "54.1%\r", "54.2%\r", "54.3%\r", "54.4%\r", "54.5%\r", "54.5%\r", "54.6%\r", "54.7%\r", "54.8%\r", "54.9%\r", "55.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "18.8%\r", "18.9%\r", "19.0%\r", "19.1%\r", "19.2%\r", "19.3%\r", "19.3%\r", "19.4%\r", "19.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "19.6%\r", "19.7%\r", "19.8%\r", "19.8%\r", "19.9%\r", "20.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "20.1%\r", "20.2%\r", "20.2%\r", "20.3%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "20.4%\r", "20.5%\r", "20.6%\r", "20.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "20.7%\r", "20.8%\r", "20.9%\r", "21.0%\r", "21.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "21.2%\r", "21.2%\r", "21.3%\r", "21.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "21.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "21.6%\r", "21.7%\r", "21.7%\r", "21.8%\r", "21.9%\r", "22.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "22.1%\r", "22.1%\r", "22.2%\r", "22.3%\r", "22.4%\r", "22.5%\r", "22.6%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "22.6%\r", "22.7%\r", "22.8%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "22.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "23.0%\r", "23.1%\r", "23.1%\r", "23.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "23.3%\r", "23.4%\r", "23.5%\r", "23.6%\r", "23.6%\r", "23.7%\r", "23.8%\r", "23.9%\r", "24.0%\r", "24.0%\r", "24.1%\r", "24.2%\r", "24.3%\r", "24.4%\r", "24.5%\r", "24.5%\r", "24.6%\r", "24.7%\r", "24.8%\r", "24.9%\r", "25.0%\r", "25.0%\r", "25.1%\r", "25.2%\r", "25.3%\r", "25.4%\r", "25.5%\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "25.5%\r", "25.6%\r", "25.7%\r", "25.8%\r", "25.9%\r", "26.0%\r", "26.0%\r", "26.1%\r", "26.2%\r", "26.3%\r", "26.4%\r", "26.4%\r", "26.5%\r", "26.6%\r", "26.7%\r", "26.8%\r", "26.9%\r", "26.9%\r", "27.0%\r", "27.1%\r", "27.2%\r", "27.3%\r", "27.4%\r", "27.4%\r", "27.5%\r", "27.6%\r", "27.7%\r", "27.8%\r", "27.9%\r", "27.9%\r", "28.0%\r", "28.1%\r", "28.2%\r", "28.3%\r", "28.3%\r", "28.4%\r", "28.5%\r", "28.6%\r", "28.7%\r", "28.8%\r", "28.8%\r", "28.9%\r", "29.0%\r", "29.1%\r", "29.2%\r", "29.3%\r", "29.3%\r", "29.4%\r", "29.5%\r", "29.6%\r", "29.7%\r", "29.8%\r", "29.8%\r", "29.9%\r", "30.0%\r", "30.1%\r", "30.2%\r", "30.2%\r", "30.3%\r", "30.4%\r", "30.5%\r", "30.6%\r", "30.7%\r", "30.7%\r", "30.8%\r", "30.9%\r", "31.0%\r", "31.1%\r", "31.2%\r", "31.2%\r", "31.3%\r", "31.4%\r", "31.5%\r", "31.6%\r", "31.7%\r", "31.7%\r", "31.8%\r", "31.9%\r", "32.0%\r", "32.1%\r", "32.1%\r", "32.2%\r", "32.3%\r", "32.4%\r", "32.5%\r", "32.6%\r", "32.6%\r", "32.7%\r", "32.8%\r", "32.9%\r", "33.0%\r", "33.1%\r", "33.1%\r", "33.2%\r", "33.3%\r", "33.4%\r", "33.5%\r", "33.6%\r", "33.6%\r", "33.7%\r", "33.8%\r", "33.9%\r", "34.0%\r", "34.0%\r", "34.1%\r", "34.2%\r", "34.3%\r", "34.4%\r", "34.5%\r", "34.5%\r", "34.6%\r", "34.7%\r", "34.8%\r", "34.9%\r", "35.0%\r", "35.0%\r", "35.1%\r", "35.2%\r", "35.3%\r", "35.4%\r", "35.5%\r", "35.5%\r", "35.6%\r", "35.7%\r", "35.8%\r", "35.9%\r", "36.0%\r", "36.0%\r", "36.1%\r", "36.2%\r", "36.3%\r", "36.4%\r", "36.4%\r", "36.5%\r", "36.6%\r", "36.7%\r", "36.8%\r", "36.9%\r", "36.9%\r", "37.0%\r", "37.1%\r", "37.2%\r", "37.3%\r", "37.4%\r", "37.4%\r", "37.5%\r", "37.6%\r", "37.7%\r", "37.8%\r", "37.9%\r", "37.9%\r", "38.0%\r", "38.1%\r", "38.2%\r", "38.3%\r", "38.3%\r", "38.4%\r", "38.5%\r", "38.6%\r", "38.7%\r", "38.8%\r", "38.8%\r", "38.9%\r", "39.0%\r", "39.1%\r", "39.2%\r", "39.3%\r", "39.3%\r", "39.4%\r", "39.5%\r", "39.6%\r", "39.7%\r", "39.8%\r", "39.8%\r", "39.9%\r", "40.0%\r", "40.1%\r", "40.2%\r", "40.2%\r", "40.3%\r", "40.4%\r", "40.5%\r", "40.6%\r", "40.7%\r", "40.7%\r", "40.8%\r", "40.9%\r", "41.0%\r", "41.1%\r", "41.2%\r", "41.2%\r", "41.3%\r", "41.4%\r", "41.5%\r", "41.6%\r", "41.7%\r", "41.7%\r", "41.8%\r", "41.9%\r", "42.0%\r", "42.1%\r", "42.1%\r", "42.2%\r", "42.3%\r", "42.4%\r", "42.5%\r", "42.6%\r", "42.6%\r", "42.7%\r", "42.8%\r", "42.9%\r", "43.0%\r", "43.1%\r", "43.1%\r", "43.2%\r", "43.3%\r", "43.4%\r", "43.5%\r", "43.6%\r", "43.6%\r", "43.7%\r", "43.8%\r", "43.9%\r", "44.0%\r", "44.0%\r", "44.1%\r", "44.2%\r", "44.3%\r", "44.4%\r", "44.5%\r", "44.5%\r", "44.6%\r", "44.7%\r", "44.8%\r", "44.9%\r", "45.0%\r", "45.0%\r", "45.1%\r", "45.2%\r", "45.3%\r", "45.4%\r", "45.5%\r", "45.5%\r", "45.6%\r", "45.7%\r", "45.8%\r", "45.9%\r", "45.9%\r", "46.0%\r", "46.1%\r", "46.2%\r", "46.3%\r", "46.4%\r", "46.4%\r", "46.5%\r", "46.6%\r", "46.7%\r", "46.8%\r", "46.9%\r", "46.9%\r", "47.0%\r", "47.1%\r", "47.2%\r", "47.3%\r", "47.4%\r", "47.4%\r", "47.5%\r", "47.6%\r", "47.7%\r", "47.8%\r", "47.9%\r", "47.9%\r", "48.0%\r", "48.1%\r", "48.2%\r", "48.3%\r", "48.3%\r", "48.4%\r", "48.5%\r", "48.6%\r", "48.7%\r", "48.8%\r", "48.8%\r", "48.9%\r", "49.0%\r", "49.1%\r", "49.2%\r", "49.3%\r", "49.3%\r", "49.4%\r", "49.5%\r", "49.6%\r", "49.7%\r", "49.8%\r", "49.8%\r", "49.9%\r", "50.0%\r", "50.1%\r", "50.2%\r", "50.2%\r", "50.3%\r", "50.4%\r", "50.5%\r", "50.6%\r", "50.7%\r", "50.7%\r", "50.8%\r", "50.9%\r", "51.0%\r", "51.1%\r", "51.2%\r", "51.2%\r", "51.3%\r", "51.4%\r", "51.5%\r", "51.6%\r", "51.7%\r", "51.7%\r", "51.8%\r", "51.9%\r", "52.0%\r", "52.1%\r", "52.1%\r", "52.2%\r", "52.3%\r", "52.4%\r", "52.5%\r", "52.6%\r", "52.6%\r", "52.7%\r", "52.8%\r", "52.9%\r", "53.0%\r", "53.1%\r", "53.1%\r", "53.2%\r", "53.3%\r", "53.4%\r", "53.5%\r", "53.6%\r", "53.6%\r", "53.7%\r", "53.8%\r", "53.9%\r", "54.0%\r", "54.0%\r", "54.1%\r", "54.2%\r", "54.3%\r", "54.4%\r", "54.5%\r", "54.5%\r", "54.6%\r", "54.7%\r", "54.8%\r", "54.9%\r", "55.0%\r", "55.0%\r", "55.1%\r", "55.2%\r", "55.3%\r", "55.4%\r", "55.5%\r", "55.5%\r", "55.6%\r", "55.7%\r", "55.8%\r", "55.9%\r", "55.9%\r", "56.0%\r", "56.1%\r", "56.2%\r", "56.3%\r", "56.4%\r", "56.4%\r", "56.5%\r", "56.6%\r", "56.7%\r", "56.8%\r", "56.9%\r", "56.9%\r", "57.0%\r", "57.1%\r", "57.2%\r", "57.3%\r", "57.4%\r", "57.4%\r", "57.5%\r", "57.6%\r", "57.7%\r", "57.8%\r", "57.9%\r", "57.9%\r", "58.0%\r", "58.1%\r", "58.2%\r", "58.3%\r", "58.3%\r", "58.4%\r", "58.5%\r", "58.6%\r", "58.7%\r", "58.8%\r", "58.8%\r", "58.9%\r", "59.0%\r", "59.1%\r", "59.2%\r", "59.3%\r", "59.3%\r", "59.4%\r", "59.5%\r", "59.6%\r", "59.7%\r", "59.8%\r", "59.8%\r", "59.9%\r", "60.0%\r", "60.1%\r", "60.2%\r", "60.2%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "55.0%\r", "55.1%\r", "55.2%\r", "55.3%\r", "55.4%\r", "55.5%\r", "55.5%\r", "55.6%\r", "55.7%\r", "55.8%\r", "55.9%\r", "55.9%\r", "56.0%\r", "56.1%\r", "56.2%\r", "56.3%\r", "56.4%\r", "56.4%\r", "56.5%\r", "56.6%\r", "56.7%\r", "56.8%\r", "56.9%\r", "56.9%\r", "57.0%\r", "57.1%\r", "57.2%\r", "57.3%\r", "57.4%\r", "57.4%\r", "57.5%\r", "57.6%\r", "57.7%\r", "57.8%\r", "57.9%\r", "57.9%\r", "58.0%\r", "58.1%\r", "58.2%\r", "58.3%\r", "58.3%\r", "58.4%\r", "58.5%\r", "58.6%\r", "58.7%\r", "58.8%\r", "58.8%\r", "58.9%\r", "59.0%\r", "59.1%\r", "59.2%\r", "59.3%\r", "59.3%\r", "59.4%\r", "59.5%\r", "59.6%\r", "59.7%\r", "59.8%\r", "59.8%\r", "59.9%\r", "60.0%\r", "60.1%\r", "60.2%\r", "60.2%\r", "60.3%\r", "60.4%\r", "60.5%\r", "60.6%\r", "60.7%\r", "60.7%\r", "60.8%\r", "60.9%\r", "61.0%\r", "61.1%\r", "61.2%\r", "61.2%\r", "61.3%\r", "61.4%\r", "61.5%\r", "61.6%\r", "61.7%\r", "61.7%\r", "61.8%\r", "61.9%\r", "62.0%\r", "62.1%\r", "62.1%\r", "62.2%\r", "62.3%\r", "62.4%\r", "62.5%\r", "62.6%\r", "62.6%\r", "62.7%\r", "62.8%\r", "62.9%\r", "63.0%\r", "63.1%\r", "63.1%\r", "63.2%\r", "63.3%\r", "63.4%\r", "63.5%\r", "63.6%\r", "63.6%\r", "63.7%\r", "63.8%\r", "63.9%\r", "64.0%\r", "64.0%\r", "64.1%\r", "64.2%\r", "64.3%\r", "64.4%\r", "64.5%\r", "64.5%\r", "64.6%\r", "64.7%\r", "64.8%\r", "64.9%\r", "65.0%\r", "65.0%\r", "65.1%\r", "65.2%\r", "65.3%\r", "65.4%\r", "65.5%\r", "65.5%\r", "65.6%\r", "65.7%\r", "65.8%\r", "65.9%\r", "65.9%\r", "66.0%\r", "66.1%\r", "66.2%\r", "66.3%\r", "66.4%\r", "66.4%\r", "66.5%\r", "66.6%\r", "66.7%\r", "66.8%\r", "66.9%\r", "66.9%\r", "67.0%\r", "67.1%\r", "67.2%\r", "67.3%\r", "67.4%\r", "67.4%\r", "67.5%\r", "67.6%\r", "67.7%\r", "67.8%\r", "67.9%\r", "67.9%\r", "68.0%\r", "68.1%\r", "68.2%\r", "68.3%\r", "68.3%\r", "68.4%\r", "68.5%\r", "68.6%\r", "68.7%\r", "68.8%\r", "68.8%\r", "68.9%\r", "69.0%\r", "69.1%\r", "69.2%\r", "69.3%\r", "69.3%\r", "69.4%\r", "69.5%\r", "69.6%\r", "69.7%\r", "69.8%\r", "69.8%\r", "69.9%\r", "70.0%\r", "70.1%\r", "70.2%\r", "70.2%\r", "70.3%\r", "70.4%\r", "70.5%\r", "70.6%\r", "70.7%\r", "70.7%\r", "70.8%\r", "70.9%\r", "71.0%\r", "71.1%\r", "71.2%\r", "71.2%\r", "71.3%\r", "71.4%\r", "71.5%\r", "71.6%\r", "71.7%\r", "71.7%\r", "71.8%\r", "71.9%\r", "72.0%\r", "72.1%\r", "72.1%\r", "72.2%\r", "72.3%\r", "72.4%\r", "72.5%\r", "72.6%\r", "72.6%\r", "72.7%\r", "72.8%\r", "72.9%\r", "73.0%\r", "73.1%\r", "73.1%\r", "73.2%\r", "73.3%\r", "73.4%\r", "73.5%\r", "73.6%\r", "73.6%\r", "73.7%\r", "73.8%\r", "73.9%\r", "74.0%\r", "74.0%\r", "74.1%\r", "74.2%\r", "74.3%\r", "74.4%\r", "74.5%\r", "74.5%\r", "74.6%\r", "74.7%\r", "74.8%\r", "74.9%\r", "75.0%\r", "75.0%\r", "75.1%\r", "75.2%\r", "75.3%\r", "75.4%\r", "75.5%\r", "75.5%\r", "75.6%\r", "75.7%\r", "75.8%\r", "75.9%\r", "75.9%\r", "76.0%\r", "76.1%\r", "76.2%\r", "76.3%\r", "76.4%\r", "76.4%\r", "76.5%\r", "76.6%\r", "76.7%\r", "76.8%\r", "76.9%\r", "76.9%\r", "77.0%\r", "77.1%\r", "77.2%\r", "77.3%\r", "77.4%\r", "77.4%\r", "77.5%\r", "77.6%\r", "77.7%\r", "77.8%\r", "77.9%\r", "77.9%\r", "78.0%\r", "78.1%\r", "78.2%\r", "78.3%\r", "78.3%\r", "78.4%\r", "78.5%\r", "78.6%\r", "78.7%\r", "78.8%\r", "78.8%\r", "78.9%\r", "79.0%\r", "79.1%\r", "79.2%\r", "79.3%\r", "79.3%\r", "79.4%\r", "79.5%\r", "79.6%\r", "79.7%\r", "79.8%\r", "79.8%\r", "79.9%\r", "80.0%\r", "80.1%\r", "80.2%\r", "80.2%\r", "80.3%\r", "80.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "60.3%\r", "60.4%\r", "60.5%\r", "60.6%\r", "60.7%\r", "60.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "60.8%\r", "60.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.0%\r", "61.1%\r", "61.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.2%\r", "61.3%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "80.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "80.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "80.7%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "80.7%\r", "80.8%\r", "80.9%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "81.0%\r", "81.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "81.2%\r", "81.2%\r", "81.3%\r", "81.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "81.5%\r", "81.6%\r", "81.7%\r", "81.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.5%\r", "61.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "81.8%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.7%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "81.9%\r", "82.0%\r", "82.1%\r", "82.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "61.8%\r", "61.9%\r", "62.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "62.1%\r", "62.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "82.2%\r", "82.3%\r", "82.4%\r", "82.5%\r", "82.6%\r", "82.6%\r", "82.7%\r", "82.8%\r", "82.9%\r", "83.0%\r", "83.1%\r", "83.1%\r", "83.2%\r", "83.3%\r", "83.4%\r", "83.5%\r", "83.6%\r", "83.6%\r", "83.7%\r", "83.8%\r", "83.9%\r", "84.0%\r", "84.0%\r", "84.1%\r", "84.2%\r", "84.3%\r", "84.4%\r", "84.5%\r", "84.5%\r", "84.6%\r", "84.7%\r", "84.8%\r", "84.9%\r", "85.0%\r", "85.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "62.2%\r", "62.3%\r", "62.4%\r", "62.5%\r", "62.6%\r", "62.6%\r", "62.7%\r", "62.8%\r", "62.9%\r", "63.0%\r", "63.1%\r", "63.1%\r", "63.2%\r", "63.3%\r", "63.4%\r", "63.5%\r", "63.6%\r", "63.6%\r", "63.7%\r", "63.8%\r", "63.9%\r", "64.0%\r", "64.0%\r", "64.1%\r", "64.2%\r", "64.3%\r", "64.4%\r", "64.5%\r", "64.5%\r", "64.6%\r", "64.7%\r", "64.8%\r", "64.9%\r", "65.0%\r", "65.0%\r", "65.1%\r", "65.2%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "85.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "65.3%\r", "65.4%\r", "65.5%\r", "65.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "65.6%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "65.7%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "85.2%\r", "85.3%\r", "85.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "85.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "85.5%\r", "85.6%\r", "85.7%\r", "85.8%\r", "85.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "65.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "85.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "65.9%\r", "65.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.0%\r", "66.1%\r", "66.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.3%\r", "66.4%\r", "66.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "86.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "86.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "86.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "86.3%\r", "86.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.7%\r", "66.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "86.4%\r", "86.5%\r", "86.6%\r", "86.7%\r", "86.8%\r", "86.9%\r", "86.9%\r", "87.0%\r", "87.1%\r", "87.2%\r", "87.3%\r", "87.4%\r", "87.4%\r", "87.5%\r", "87.6%\r", "87.7%\r", "87.8%\r", "87.9%\r", "87.9%\r", "88.0%\r", "88.1%\r", "88.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "66.9%\r", "66.9%\r", "67.0%\r", "67.1%\r", "67.2%\r", "67.3%\r", "67.4%\r", "67.4%\r", "67.5%\r", "67.6%\r", "67.7%\r", "67.8%\r", "67.9%\r", "67.9%\r", "68.0%\r", "68.1%\r", "68.2%\r", "68.3%\r", "68.3%\r", "68.4%\r", "68.5%\r", "68.6%\r", "68.7%\r", "68.8%\r", "68.8%\r", "68.9%\r", "69.0%\r", "69.1%\r", "69.2%\r", "69.3%\r", "69.3%\r", "69.4%\r", "69.5%\r", "69.6%\r", "69.7%\r", "69.8%\r", "69.8%\r", "69.9%\r", "70.0%\r", "70.1%\r", "70.2%\r", "70.2%\r", "70.3%\r", "70.4%\r", "70.5%\r", "70.6%\r", "70.7%\r", "70.7%\r", "70.8%\r", "70.9%\r", "71.0%\r", "71.1%\r", "71.2%\r", "71.2%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "88.3%\r", "88.3%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "88.4%\r", "88.5%\r", "88.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "88.7%\r", "88.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "88.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "88.9%\r", "89.0%\r", "89.1%\r", "89.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "71.3%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "71.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "89.3%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "71.5%\r", "71.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "89.3%\r", "89.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "71.7%\r", "71.7%\r", "71.8%\r", "71.9%\r", "72.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.1%\r", "72.1%\r", "72.2%\r", "72.3%\r", "72.4%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "89.5%\r", "89.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "89.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "89.8%\r", "89.8%\r", "89.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.6%\r", "72.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "90.0%\r", "90.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.7%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "90.2%\r", "90.2%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "90.3%\r", "90.4%\r", "90.5%\r", "90.6%\r", "90.7%\r", "90.7%\r", "90.8%\r", "90.9%\r", "91.0%\r", "91.1%\r", "91.2%\r", "91.2%\r", "91.3%\r", "91.4%\r", "91.5%\r", "91.6%\r", "91.7%\r", "91.7%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "72.9%\r", "73.0%\r", "73.1%\r", "73.1%\r", "73.2%\r", "73.3%\r", "73.4%\r", "73.5%\r", "73.6%\r", "73.6%\r", "73.7%\r", "73.8%\r", "73.9%\r", "74.0%\r", "74.0%\r", "74.1%\r", "74.2%\r", "74.3%\r", "74.4%\r", "74.5%\r", "74.5%\r", "74.6%\r", "74.7%\r", "74.8%\r", "74.9%\r", "75.0%\r", "75.0%\r", "75.1%\r", "75.2%\r", "75.3%\r", "75.4%\r", "75.5%\r", "75.5%\r", "75.6%\r", "75.7%\r", "75.8%\r", "75.9%\r", "75.9%\r", "76.0%\r", "76.1%\r", "76.2%\r", "76.3%\r", "76.4%\r", "76.4%\r", "76.5%\r", "76.6%\r", "76.7%\r", "76.8%\r", "76.9%\r", "76.9%\r", "77.0%\r", "77.1%\r", "77.2%\r", "77.3%\r", "77.4%\r", "77.4%\r", "77.5%\r", "77.6%\r", "77.7%\r", "77.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "91.8%\r", "91.9%\r", "92.0%\r", "92.1%\r", "92.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "92.2%\r", "92.3%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "77.9%\r", "77.9%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "92.4%\r", "92.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "78.0%\r", "78.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "92.6%\r", "92.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "92.7%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "92.8%\r", "92.9%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "93.0%\r", "93.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "93.1%\r", "93.2%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "93.3%\r", "93.4%\r", "93.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "93.6%\r", "93.6%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "93.7%\r", "93.8%\r", "93.9%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "78.2%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "94.0%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "78.3%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "94.0%\r", "94.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "78.3%\r", "78.4%\r", "78.5%\r", "78.6%\r", "78.7%\r", "78.8%\r", "78.8%\r", "78.9%\r", "79.0%\r", "79.1%\r", "79.2%\r", "79.3%\r", "79.3%\r", "79.4%\r", "79.5%\r", "79.6%\r", "79.7%\r", "79.8%\r", "79.8%\r", "79.9%\r", "80.0%\r", "80.1%\r", "80.2%\r", "80.2%\r", "80.3%\r", "80.4%\r", "80.5%\r", "80.6%\r", "80.7%\r", "80.7%\r", "80.8%\r", "80.9%\r", "81.0%\r", "81.1%\r", "81.2%\r", "81.2%\r", "81.3%\r", "81.4%\r", "81.5%\r", "81.6%\r", "81.7%\r", "81.7%\r", "81.8%\r", "81.9%\r", "82.0%\r", "82.1%\r", "82.1%\r", "82.2%\r", "82.3%\r", "82.4%\r", "82.5%\r", "82.6%\r", "82.6%\r", "82.7%\r", "82.8%\r", "82.9%\r", "83.0%\r", "83.1%\r", "83.1%\r", "83.2%\r", "83.3%\r", "83.4%\r", "83.5%\r", "83.6%\r", "83.6%\r", "83.7%\r", "83.8%\r", "83.9%\r", "84.0%\r", "84.0%\r", "84.1%\r", "84.2%\r", "84.3%\r", "84.4%\r", "84.5%\r", "84.5%\r", "84.6%\r", "84.7%\r", "84.8%\r", "84.9%\r", "85.0%\r", "85.0%\r", "85.1%\r", "85.2%\r", "85.3%\r", "85.4%\r", "85.5%\r", "85.5%\r", "85.6%\r", "85.7%\r", "85.8%\r", "85.9%\r", "85.9%\r", "86.0%\r", "86.1%\r", "86.2%\r", "86.3%\r", "86.4%\r", "86.4%\r", "86.5%\r", "86.6%\r", "86.7%\r", "86.8%\r", "86.9%\r", "86.9%\r", "87.0%\r", "87.1%\r", "87.2%\r", "87.3%\r", "87.4%\r", "87.4%\r", "87.5%\r", "87.6%\r", "87.7%\r", "87.8%\r", "87.9%\r", "87.9%\r", "88.0%\r", "88.1%\r", "88.2%\r", "88.3%\r", "88.3%\r", "88.4%\r", "88.5%\r", "88.6%\r", "88.7%\r", "88.8%\r", "88.8%\r", "88.9%\r", "89.0%\r", "89.1%\r", "89.2%\r", "89.3%\r", "89.3%\r", "89.4%\r", "89.5%\r", "89.6%\r", "89.7%\r", "89.8%\r", "89.8%\r", "89.9%\r", "90.0%\r", "90.1%\r", "90.2%\r", "90.2%\r", "90.3%\r", "90.4%\r", "90.5%\r", "90.6%\r", "90.7%\r", "90.7%\r", "90.8%\r", "90.9%\r", "91.0%\r", "91.1%\r", "91.2%\r", "91.2%\r", "91.3%\r", "91.4%\r", "91.5%\r", "91.6%\r", "91.7%\r", "91.7%\r", "91.8%\r", "91.9%\r", "92.0%\r", "92.1%\r", "92.1%\r", "92.2%\r", "92.3%\r", "92.4%\r", "92.5%\r", "92.6%\r", "92.6%\r", "92.7%\r", "92.8%\r", "92.9%\r", "93.0%\r", "93.1%\r", "93.1%\r", "93.2%\r", "93.3%\r", "93.4%\r", "93.5%\r", "93.6%\r", "93.6%\r", "93.7%\r", "93.8%\r", "93.9%\r", "94.0%\r", "94.0%\r", "94.1%\r", "94.2%\r", "94.3%\r", "94.4%\r", "94.5%\r", "94.5%\r", "94.6%\r", "94.7%\r", "94.8%\r", "94.9%\r", "95.0%\r", "95.0%\r", "95.1%\r", "95.2%\r", "95.3%\r", "95.4%\r", "95.5%\r", "95.5%\r", "95.6%\r", "95.7%\r", "95.8%\r", "95.9%\r", "95.9%\r", "96.0%\r", "96.1%\r", "96.2%\r", "96.3%\r", "96.4%\r", "96.4%\r", "96.5%\r", "96.6%\r", "96.7%\r", "96.8%\r", "96.9%\r", "96.9%\r", "97.0%\r", "97.1%\r", "97.2%\r", "97.3%\r", "97.4%\r", "97.4%\r", "97.5%\r", "97.6%\r", "97.7%\r", "97.8%\r", "97.9%\r", "97.9%\r", "98.0%\r", "98.1%\r", "98.2%\r", "98.3%\r", "98.3%\r", "98.4%\r", "98.5%\r", "98.6%\r", "98.7%\r", "98.8%\r", "98.8%\r", "98.9%\r", "99.0%\r", "99.1%\r", "99.2%\r", "99.3%\r", "99.3%\r", "99.4%\r", "99.5%\r", "99.6%\r", "99.7%\r", "99.8%\r", "99.8%\r", "99.9%\r", "100.0%\r", "100.1%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Extracting /home/travis/.data/MNIST/raw/train-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "94.2%\r", "94.3%\r", "94.4%\r", "94.5%\r", "94.5%\r", "94.6%\r", "94.7%\r", "94.8%\r", "94.9%\r", "95.0%\r", "95.0%\r", "95.1%\r", "95.2%\r", "95.3%\r", "95.4%\r", "95.5%\r", "95.5%\r", "95.6%\r", "95.7%\r", "95.8%\r", "95.9%\r", "95.9%\r", "96.0%\r", "96.1%\r", "96.2%\r", "96.3%\r", "96.4%\r", "96.4%\r", "96.5%\r", "96.6%\r", "96.7%\r", "96.8%\r", "96.9%\r", "96.9%\r", "97.0%\r", "97.1%\r", "97.2%\r", "97.3%\r", "97.4%\r", "97.4%\r", "97.5%\r", "97.6%\r", "97.7%\r", "97.8%\r", "97.9%\r", "97.9%\r", "98.0%\r", "98.1%\r", "98.2%\r", "98.3%\r", "98.3%\r", "98.4%\r", "98.5%\r", "98.6%\r", "98.7%\r", "98.8%\r", "98.8%\r", "98.9%\r", "99.0%\r", "99.1%\r", "99.2%\r", "99.3%\r", "99.3%\r", "99.4%\r", "99.5%\r", "99.6%\r", "99.7%\r", "99.8%\r", "99.8%\r", "99.9%\r", "100.0%\r", "100.1%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Extracting /home/travis/.data/MNIST/raw/train-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw/train-labels-idx1-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw/train-labels-idx1-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "0.0%\r", "28.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.0%\r", "28.4%\r", "56.7%\r", "85.1%\r", "113.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Extracting /home/travis/.data/MNIST/raw/train-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw/t10k-images-idx3-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Extracting /home/travis/.data/MNIST/raw/train-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw/t10k-images-idx3-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "56.7%\r", "85.1%\r", "113.5%\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "0.0%\r", "0.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.0%\r", "0.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "1.0%\r", "1.5%\r", "2.0%\r", "2.5%\r", "3.0%\r", "3.5%\r", "4.0%\r", "4.5%\r", "5.0%\r", "5.5%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "1.0%\r", "1.5%\r", "2.0%\r", "2.5%\r", "3.0%\r", "3.5%\r", "4.0%\r", "4.5%\r", "5.0%\r", "5.5%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "6.0%\r", "6.5%\r", "7.0%\r", "7.5%\r", "7.9%\r", "8.4%\r", "8.9%\r", "9.4%\r", "9.9%\r", "10.4%\r", "10.9%\r", "11.4%\r", "11.9%\r", "12.4%\r", "12.9%\r", "13.4%\r", "13.9%\r", "14.4%\r", "14.9%\r", "15.4%\r", "15.9%\r", "16.4%\r", "16.9%\r", "17.4%\r", "17.9%\r", "18.4%\r", "18.9%\r", "19.4%\r", "19.9%\r", "20.4%\r", "20.9%\r", "21.4%\r", "21.9%\r", "22.4%\r", "22.9%\r", "23.4%\r", "23.8%\r", "24.3%\r", "24.8%\r", "25.3%\r", "25.8%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "6.0%\r", "6.5%\r", "7.0%\r", "7.5%\r", "7.9%\r", "8.4%\r", "8.9%\r", "9.4%\r", "9.9%\r", "10.4%\r", "10.9%\r", "11.4%\r", "11.9%\r", "12.4%\r", "12.9%\r", "13.4%\r", "13.9%\r", "14.4%\r", "14.9%\r", "15.4%\r", "15.9%\r", "16.4%\r", "16.9%\r", "17.4%\r", "17.9%\r", "18.4%\r", "18.9%\r", "19.4%\r", "19.9%\r", "20.4%\r", "20.9%\r", "21.4%\r", "21.9%\r", "22.4%\r", "22.9%\r", "23.4%\r", "23.8%\r", "24.3%\r", "24.8%\r", "25.3%\r", "25.8%\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Extracting /home/travis/.data/MNIST/raw/t10k-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "26.3%\r", "26.8%\r", "27.3%\r", "27.8%\r", "28.3%\r", "28.8%\r", "29.3%\r", "29.8%\r", "30.3%\r", "30.8%\r", "31.3%\r", "31.8%\r", "32.3%\r", "32.8%\r", "33.3%\r", "33.8%\r", "34.3%\r", "34.8%\r", "35.3%\r", "35.8%\r", "36.3%\r", "36.8%\r", "37.3%\r", "37.8%\r", "38.3%\r", "38.8%\r", "39.2%\r", "39.7%\r", "40.2%\r", "40.7%\r", "41.2%\r", "41.7%\r", "42.2%\r", "42.7%\r", "43.2%\r", "43.7%\r", "44.2%\r", "44.7%\r", "45.2%\r", "45.7%\r", "46.2%\r", "46.7%\r", "47.2%\r", "47.7%\r", "48.2%\r", "48.7%\r", "49.2%\r", "49.7%\r", "50.2%\r", "50.7%\r", "51.2%\r", "51.7%\r", "52.2%\r", "52.7%\r", "53.2%\r", "53.7%\r", "54.2%\r", "54.7%\r", "55.1%\r", "55.6%\r", "56.1%\r", "56.6%\r", "57.1%\r", "57.6%\r", "58.1%\r", "58.6%\r", "59.1%\r", "59.6%\r", "60.1%\r", "60.6%\r", "61.1%\r", "61.6%\r", "62.1%\r", "62.6%\r", "63.1%\r", "63.6%\r", "64.1%\r", "64.6%\r", "65.1%\r", "65.6%\r", "66.1%\r", "66.6%\r", "67.1%\r", "67.6%\r", "68.1%\r", "68.6%\r", "69.1%\r", "69.6%\r", "70.1%\r", "70.5%\r", "71.0%\r", "71.5%\r", "72.0%\r", "72.5%\r", "73.0%\r", "73.5%\r", "74.0%\r", "74.5%\r", "75.0%\r", "75.5%\r", "76.0%\r", "76.5%\r", "77.0%\r", "77.5%\r", "78.0%\r", "78.5%\r", "79.0%\r", "79.5%\r", "80.0%\r", "80.5%\r", "81.0%\r", "81.5%\r", "82.0%\r", "82.5%\r", "83.0%\r", "83.5%\r", "84.0%\r", "84.5%\r", "85.0%\r", "85.5%\r", "86.0%\r", "86.4%\r", "86.9%\r", "87.4%\r", "87.9%\r", "88.4%\r", "88.9%\r", "89.4%\r", "89.9%\r", "90.4%\r", "90.9%\r", "91.4%\r", "91.9%\r", "92.4%\r", "92.9%\r", "93.4%\r", "93.9%\r", "94.4%\r", "94.9%\r", "95.4%\r", "95.9%\r", "96.4%\r", "96.9%\r", "97.4%\r", "97.9%\r", "98.4%\r", "98.9%\r", "99.4%\r", "99.9%\r", "100.4%\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "26.3%\r", "26.8%\r", "27.3%\r", "27.8%\r", "28.3%\r", "28.8%\r", "29.3%\r", "29.8%\r", "30.3%\r", "30.8%\r", "31.3%\r", "31.8%\r", "32.3%\r", "32.8%\r", "33.3%\r", "33.8%\r", "34.3%\r", "34.8%\r", "35.3%\r", "35.8%\r", "36.3%\r", "36.8%\r", "37.3%\r", "37.8%\r", "38.3%\r", "38.8%\r", "39.2%\r", "39.7%\r", "40.2%\r", "40.7%\r", "41.2%\r", "41.7%\r", "42.2%\r", "42.7%\r", "43.2%\r", "43.7%\r", "44.2%\r", "44.7%\r", "45.2%\r", "45.7%\r", "46.2%\r", "46.7%\r", "47.2%\r", "47.7%\r", "48.2%\r", "48.7%\r", "49.2%\r", "49.7%\r", "50.2%\r", "50.7%\r", "51.2%\r", "51.7%\r", "52.2%\r", "52.7%\r", "53.2%\r", "53.7%\r", "54.2%\r", "54.7%\r", "55.1%\r", "55.6%\r", "56.1%\r", "56.6%\r", "57.1%\r", "57.6%\r", "58.1%\r", "58.6%\r", "59.1%\r", "59.6%\r", "60.1%\r", "60.6%\r", "61.1%\r", "61.6%\r", "62.1%\r", "62.6%\r", "63.1%\r", "63.6%\r", "64.1%\r", "64.6%\r", "65.1%\r", "65.6%\r", "66.1%\r", "66.6%\r", "67.1%\r", "67.6%\r", "68.1%\r", "68.6%\r", "69.1%\r", "69.6%\r", "70.1%\r", "70.5%\r", "71.0%\r", "71.5%\r", "72.0%\r", "72.5%\r", "73.0%\r", "73.5%\r", "74.0%\r", "74.5%\r", "75.0%\r", "75.5%\r", "76.0%\r", "76.5%\r", "77.0%\r", "77.5%\r", "78.0%\r", "78.5%\r", "79.0%\r", "79.5%\r", "80.0%\r", "80.5%\r", "81.0%\r", "81.5%\r", "82.0%\r", "82.5%\r", "83.0%\r", "83.5%\r", "84.0%\r", "84.5%\r", "85.0%\r", "85.5%\r", "86.0%\r", "86.4%\r", "86.9%\r", "87.4%\r", "87.9%\r", "88.4%\r", "88.9%\r", "89.4%\r", "89.9%\r", "90.4%\r", "90.9%\r", "91.4%\r", "91.9%\r", "92.4%\r", "92.9%\r", "93.4%\r", "93.9%\r", "94.4%\r", "94.9%\r", "95.4%\r", "95.9%\r", "96.4%\r", "96.9%\r", "97.4%\r", "97.9%\r", "98.4%\r", "98.9%\r", "99.4%\r", "99.9%\r", "100.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Extracting /home/travis/.data/MNIST/raw/t10k-images-idx3-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \r", "0.0%\r", "180.4%\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Extracting /home/travis/.data/MNIST/raw/t10k-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Processing...\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Extracting /home/travis/.data/MNIST/raw/t10k-labels-idx1-ubyte.gz to /home/travis/.data/MNIST/raw\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Processing...\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \r", "0.0%\r", "180.4%\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4170)\u001b[0m /pytorch/torch/csrc/utils/tensor_numpy.cpp:141: UserWarning:\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program.\n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m \n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m /pytorch/torch/csrc/utils/tensor_numpy.cpp:141: UserWarning:\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program.\n", "\u001b[2m\u001b[36m(pid=4171)\u001b[0m \n", "\u001b[2m\u001b[36m(pid=4170)\u001b[0m Done!\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4171)\u001b[0m Done!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:56] ax.service.ax_client: Completed trial 1 with data: {'mean_accuracy': (0.95, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:33:57] ax.service.ax_client: Completed trial 0 with data: {'mean_accuracy': (0.97, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4265)\u001b[0m 2020-06-10 18:33:59,884\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4275)\u001b[0m 2020-06-10 18:34:01,045\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:34:20] ax.service.ax_client: Completed trial 2 with data: {'mean_accuracy': (0.34, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:34:20] ax.service.ax_client: Completed trial 3 with data: {'mean_accuracy': (0.97, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4300)\u001b[0m 2020-06-10 18:34:24,103\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4299)\u001b[0m 2020-06-10 18:34:24,381\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:34:44] ax.service.ax_client: Completed trial 4 with data: {'mean_accuracy': (0.93, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:34:45] ax.service.ax_client: Completed trial 5 with data: {'mean_accuracy': (0.92, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4309)\u001b[0m 2020-06-10 18:34:47,146\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4344)\u001b[0m 2020-06-10 18:34:48,688\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:07] ax.service.ax_client: Completed trial 6 with data: {'mean_accuracy': (0.11, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:08] ax.service.ax_client: Completed trial 7 with data: {'mean_accuracy': (0.92, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4370)\u001b[0m 2020-06-10 18:35:10,809\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4381)\u001b[0m 2020-06-10 18:35:12,575\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:31] ax.service.ax_client: Completed trial 8 with data: {'mean_accuracy': (0.11, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:33] ax.service.ax_client: Completed trial 9 with data: {'mean_accuracy': (0.76, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4402)\u001b[0m 2020-06-10 18:35:34,907\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4415)\u001b[0m 2020-06-10 18:35:37,328\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:54] ax.service.ax_client: Completed trial 10 with data: {'mean_accuracy': (0.82, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:35:58] ax.service.ax_client: Completed trial 11 with data: {'mean_accuracy': (0.11, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4433)\u001b[0m 2020-06-10 18:35:58,959\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4446)\u001b[0m 2020-06-10 18:36:02,468\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:36:19] ax.service.ax_client: Completed trial 12 with data: {'mean_accuracy': (0.09, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4447)\u001b[0m 2020-06-10 18:36:22,817\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:36:23] ax.service.ax_client: Completed trial 13 with data: {'mean_accuracy': (0.96, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4483)\u001b[0m 2020-06-10 18:36:27,918\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:36:43] ax.service.ax_client: Completed trial 14 with data: {'mean_accuracy': (0.77, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4504)\u001b[0m 2020-06-10 18:36:47,442\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:36:48] ax.service.ax_client: Completed trial 15 with data: {'mean_accuracy': (0.83, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4520)\u001b[0m 2020-06-10 18:36:53,054\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:37:07] ax.service.ax_client: Completed trial 16 with data: {'mean_accuracy': (0.9, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4537)\u001b[0m 2020-06-10 18:37:11,977\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:37:12] ax.service.ax_client: Completed trial 17 with data: {'mean_accuracy': (0.1, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4554)\u001b[0m 2020-06-10 18:37:16,727\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:37:32] ax.service.ax_client: Completed trial 18 with data: {'mean_accuracy': (0.96, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:37:36] ax.service.ax_client: Completed trial 19 with data: {'mean_accuracy': (0.1, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4570)\u001b[0m 2020-06-10 18:37:37,139\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4583)\u001b[0m 2020-06-10 18:37:41,236\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:37:58] ax.service.ax_client: Completed trial 20 with data: {'mean_accuracy': (0.91, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:38:01] ax.service.ax_client: Completed trial 21 with data: {'mean_accuracy': (0.9, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4584)\u001b[0m 2020-06-10 18:38:02,200\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4615)\u001b[0m 2020-06-10 18:38:05,584\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:38:23] ax.service.ax_client: Completed trial 22 with data: {'mean_accuracy': (0.57, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:38:26] ax.service.ax_client: Completed trial 23 with data: {'mean_accuracy': (0.58, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4616)\u001b[0m 2020-06-10 18:38:26,588\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2020-06-10 18:38:27,114\tWARNING worker.py:1090 -- The actor or task with ID ffffffffffffffffa9ccc7780100 is pending and cannot currently be scheduled. It requires {CPU: 1.000000} for execution and {CPU: 1.000000} for placement, but this node only has remaining {node:10.30.4.147: 1.000000}, {CPU: 1.000000}, {memory: 4.345703 GiB}, {object_store_memory: 1.464844 GiB}. In total there are 0 pending tasks and 1 pending actors on this node. This is likely due to all cluster resources being claimed by actors. To resolve the issue, consider creating fewer actors or increase the resources available to this Ray cluster. You can ignore this message if this Ray cluster is expected to auto-scale.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4655)\u001b[0m 2020-06-10 18:38:30,868\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:38:48] ax.service.ax_client: Completed trial 24 with data: {'mean_accuracy': (0.47, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:38:51] ax.service.ax_client: Completed trial 25 with data: {'mean_accuracy': (0.96, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4673)\u001b[0m 2020-06-10 18:38:52,113\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4686)\u001b[0m 2020-06-10 18:38:55,017\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:39:13] ax.service.ax_client: Completed trial 26 with data: {'mean_accuracy': (0.11, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:39:15] ax.service.ax_client: Completed trial 27 with data: {'mean_accuracy': (0.18, 0.0)}.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4706)\u001b[0m 2020-06-10 18:39:17,232\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2m\u001b[36m(pid=4719)\u001b[0m 2020-06-10 18:39:18,594\tINFO trainable.py:217 -- Getting current IP.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:39:38] ax.service.ax_client: Completed trial 28 with data: {'mean_accuracy': (0.11, 0.0)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 06-10 18:39:38] ax.service.ax_client: Completed trial 29 with data: {'mean_accuracy': (0.43, 0.0)}.\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tune.run(\n", " train_evaluate, \n", " num_samples=30, \n", " search_alg=AxSearch(ax), # Note that the argument here is the `AxClient`.\n", " verbose=0, # Set this level to 1 to see status updates and to 2 to also see trial results.\n", " # To use GPU, specify: resources_per_trial={\"gpu\": 1}.\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Retrieve the optimization results" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'lr': 0.0017583437892744037, 'momentum': 0.5872646635398269}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "best_parameters, values = ax.get_best_parameters()\n", "best_parameters" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'mean_accuracy': 0.9705}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "means, covariances = values\n", "means" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Plot the response surface and optimization trace" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/numpy/core/fromnumeric.py:3335: RuntimeWarning:\n", "\n", "Mean of empty slice.\n", "\n", "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning:\n", "\n", "invalid value encountered in double_scalars\n", "\n" ] }, { "ename": "NotImplementedError", "evalue": "RandomModelBridge does not support prediction.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNotImplementedError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m render(\n\u001b[1;32m 2\u001b[0m plot_contour(\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgeneration_strategy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_x\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'lr'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'momentum'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetric_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'mean_accuracy'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m )\n\u001b[1;32m 5\u001b[0m )\n", "\u001b[0;32m~/build/facebook/Ax/ax/plot/contour.py\u001b[0m in \u001b[0;36mplot_contour\u001b[0;34m(model, param_x, param_y, metric_name, generator_runs_dict, relative, density, slice_values, lower_is_better, fixed_features, trial_index)\u001b[0m\n\u001b[1;32m 153\u001b[0m \u001b[0mgenerator_runs_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgenerator_runs_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[0mdensity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdensity\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 155\u001b[0;31m \u001b[0mslice_values\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mslice_values\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 156\u001b[0m )\n\u001b[1;32m 157\u001b[0m config = {\n", "\u001b[0;32m~/build/facebook/Ax/ax/plot/contour.py\u001b[0m in \u001b[0;36m_get_contour_predictions\u001b[0;34m(model, x_param_name, y_param_name, metric, generator_runs_dict, density, slice_values, fixed_features)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0mparam_grid_obsf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 97\u001b[0;31m \u001b[0mmu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcov\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparam_grid_obsf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 98\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \u001b[0mf_plt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmu\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmetric\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/build/facebook/Ax/ax/modelbridge/base.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, observation_features)\u001b[0m\n\u001b[1;32m 493\u001b[0m \u001b[0;31m# Predict in single batch.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 494\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 495\u001b[0;31m \u001b[0mobservation_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_batch_predict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobservation_features\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 496\u001b[0m \u001b[0;31m# Predict one by one.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 497\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/build/facebook/Ax/ax/modelbridge/base.py\u001b[0m in \u001b[0;36m_batch_predict\u001b[0;34m(self, observation_features)\u001b[0m\n\u001b[1;32m 423\u001b[0m )\n\u001b[1;32m 424\u001b[0m \u001b[0;31m# Apply terminal transform and predict\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 425\u001b[0;31m \u001b[0mobservation_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_predict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobservation_features\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 426\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 427\u001b[0m \u001b[0;31m# Apply reverse transforms, in reverse order\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/build/facebook/Ax/ax/modelbridge/random.py\u001b[0m in \u001b[0;36m_predict\u001b[0;34m(self, observation_features)\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 103\u001b[0m \"\"\"\n\u001b[0;32m--> 104\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mNotImplementedError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"RandomModelBridge does not support prediction.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m def _cross_validate(\n", "\u001b[0;31mNotImplementedError\u001b[0m: RandomModelBridge does not support prediction." ] } ], "source": [ "render(\n", " plot_contour(\n", " model=ax.generation_strategy.model, param_x='lr', param_y='momentum', metric_name='mean_accuracy'\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ], "y": [ 11.4, 11.4, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "legendgroup": "mean", "line": { "color": "rgba(128,177,211,1)" }, "mode": "lines", "name": "mean", "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ], "y": [ 11.4, 11.4, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ], "y": [ 11.4, 11.4, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.16666666666667, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333, 96.88333333333333 ] } ], "layout": { "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Model performance vs. # of iterations" }, "xaxis": { "title": { "text": "Iteration" } }, "yaxis": { "title": { "text": "Accuracy" } } } }, "text/html": [ "
\n", " \n", " \n", "
\n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# `plot_single_method` expects a 2-d array of means, because it expects to average means from multiple \n", "# optimization runs, so we wrap out best objectives array in another array.\n", "best_objectives = np.array([[trial.objective_mean * 100 for trial in ax.experiment.trials.values()]])\n", "best_objective_plot = optimization_trace_single_method(\n", " y=np.maximum.accumulate(best_objectives, axis=1),\n", " title=\"Model performance vs. # of iterations\",\n", " ylabel=\"Accuracy\",\n", ")\n", "render(best_objective_plot)" ] } ], "metadata": { "kernelspec": { "display_name": "python3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }