Unverified Commit 1fd844d8 authored by Andrews Cordolino Sobral's avatar Andrews Cordolino Sobral Committed by GitHub
Browse files

AutoML workflows documentation update (#725)

parent 6f679169
......@@ -201,54 +201,57 @@ image::AutoML_2.png[align=center]
| `TUNING_ALGORITHM`
| Specifies the tuner algorithm that will be used for hyperparameter optimization.
| List [Bayes, Grid, Random, QuasiRandom, CMAES, MOCMAES] (default=Random)
| `WORKFLOW_TO_OPTIMIZE`
| Specifies the workflow path from the catalog that should be optimized.
| String (default=auto-ml-optimization/Himmelblau_Function)
| `NUMBER_OF_REPETITIONS`
| Specifies the number of hyperparameter sampling repetitions. Ensures every experiment is repeated a given number of times. It should be an integer number higher than one. Set `-1` to never see repetitions.
| Int (default=-1)
| `MAX_ITERATIONS`
| Specifies the number of maximum iterations. It should be an integer number higher than zero. Set `-1` for an infinite loop.
| Int (default=2)
| `PARALLEL_EXECUTIONS_PER_ITERATION`
| Specifies the number of parallel executions per iteration. It should be an integer number higher than zero.
| Int (default=2)
| `NUMBER_OF_REPETITIONS`
| Specifies the number of hyperparameter sampling repetitions. Ensures every experiment is repeated a given number of times. It should be an integer number higher than one. Set `-1` to never see repetitions.
| Int (default=-1)
| `PAUSE_AFTER_EVERY_ITERATIONS`
| If higher than zero, pause the workflow after every specified number of iterations. Set `-1` to disable.
| Int (default=-1)
| `TARGET_WORKFLOW`
| Specifies the workflow path from the catalog that should be optimized.
| String (default=auto-ml-optimization/Himmelblau_Function)
| `TARGET_NATIVE_SCHEDULER`
| Name of the native scheduler node source to use on the target workflow tasks when deployed inside a cluster such as SLURM, LSF, etc.
| String (default=empty)
| `TARGET_NATIVE_SCHEDULER_PARAMS`
| Parameters given to the native scheduler (SLURM, LSF, etc) while requesting a ProActive node used to deploy the target workflow tasks.
| String (default=empty)
| `TARGET_NODE_ACCESS_TOKEN`
| If not empty, the target workflow tasks will be run only on nodes that contains the specified token.
| String (default=empty)
| `TARGET_NODE_SOURCE_NAME`
| If not empty, the target workflow tasks will be run only on nodes belonging to the specified node source.
| String (default=empty)
| `TARGET_CONTAINER_PLATFORM`
| Specifies the container platform to be used for executing the target workflow tasks.
| List [no-container, docker, podman, singularity] (default=empty)
| `TARGET_CONTAINER_IMAGE`
| Specifies the name of the container image that will be used to run the target workflow tasks.
| List [docker://activeeon/dlm3, docker://activeeon/cuda, docker://activeeon/cuda2, docker://activeeon/rapidsai, docker://activeeon/nvidia:rapidsai, docker://activeeon/nvidia:pytorch, docker://activeeon/nvidia:tensorflow, docker://activeeon/tensorflow:latest, docker://activeeon/tensorflow:latest-gpu] (default=empty)
| `TARGET_CONTAINER_GPU_ENABLED`
| If True, it will activate the use of GPU for the target workflow tasks on the selected container platform.
| Boolean (default=empty)
| `TARGET_NVIDIA_RAPIDS_ENABLED`
| If True, it will activate the use of NVIDIA RAPIDS for the target workflow tasks on the selected container platform.
| Boolean (default=empty)
| `VISDOM_ENABLED`
| If True, the Visdom service is started allowing the user to visualize the hyperparameter optimization using the Visdom web interface.
| Boolean (default=False)
| `VISDOM_PROXYFIED`
| If True, requests to Visdom are sent via a proxy server.
| Boolean (default=False)
| `VISDOM_ENABLE_LOGIN`
| If True, the user will be asked to insert a username and password to access the Visdom web interface.
| Boolean (default=False)
| `VISDOM_USERNAME`
| The username used to access the Visdom web interface.
| String (default=empty)
| `VISDOM_PASSWORD`
| The password used to access the Visdom web interface.
| String (default=empty)
| `VISDOM_INSTANCE_NAME`
| Specifies the name of the service instance that will run Visdom.
| String (default=visdom-server-${PA_JOB_ID})
| `TENSORBOARD_ENABLED`
| If True, the TensorBoard service is started allowing the user to visualize the hyperparameter optimization using the TensorBoard web interface.
| Boolean (default=False)
| `TENSORBOARD_INSTANCE_NAME`
| Specifies the name of the service instance that will run TensorBoard.
| String (default=tensorboard-server-${PA_JOB_ID})
| `TENSORBOARD_LOG_PATH`
| Specifies the path where TensorBoard logs stored on the host.
| String (default=/shared/$TENSORBOARD_INSTANCE_NAME)
| `TENSORBOARD_DOCKER_LOG_PATH`
| Specifies the path where TensorBoard logs are stored on the docker container.
| String (default=/graphs/$TENSORBOARD_INSTANCE_NAME)
| `PROPAGATE_CONTAINER_PLATFORM`
| If True, the selected container platform (docker, singularity, ...) will propagate to the workflow that should be optimized.
| (default=True)
| `TENSORBOARD_PROXYFIED`
| If True, requests to TensorBoard are sent via a proxy server.
| Boolean (default=False)
|===
image::AutoML_Full.png[align=center]
......@@ -273,24 +276,18 @@ The choice of the tuner depends on the following aspects:
In the following, we briefly describe the different tuners proposed by the `Distributed_Auto_ML` workflow:
- *Grid sampling* applies when all variables are discrete, and the number of possibilities is low.
A grid search is a naive approach that will simply try all possibilities making the search extremely long even for medium-sized problems.
- *Grid sampling* applies when all variables are discrete, and the number of possibilities is low. A grid search is a naive approach that will simply try all possibilities making the search extremely long even for medium-sized problems.
- *Random sampling* is an alternative to grid search when the number of discrete parameters to optimize, and the time required for each evaluation is high.
Random search picks the point randomly from the configuration space.
- *Random sampling* is an alternative to grid search when the number of discrete parameters to optimize, and the time required for each evaluation is high. Random search picks the point randomly from the configuration space.
- *QuasiRandom sampling* ensures a much more uniform exploration of the search space than traditional pseudo random.
Thus, quasi random sampling is preferable when not all variables are discrete, the number of dimensions is high, and the time required to evaluate a solution is high.
- *QuasiRandom sampling* ensures a much more uniform exploration of the search space than traditional pseudo random. Thus, quasi random sampling is preferable when not all variables are discrete, the number of dimensions is high, and the time required to evaluate a solution is high.
- *Bayes search* models the search space using gaussian process regression, which allows an estimation of the loss function, and the uncertainty on that estimate at every point of the search space.
Modeling the search space suffers from the curse of dimensionality, which makes this method more suitable when the number of dimensions is low.
- *Bayes search* models the search space using gaussian process regression, which allows an estimation of the loss function, and the uncertainty on that estimate at every point of the search space. Modeling the search space suffers from the curse of dimensionality, which makes this method more suitable when the number of dimensions is low.
- *CMAES search* (Covariance Matrix Adaptation Evolution Strategy) is one of the most powerful black-box optimization algorithm.
However, it requires a significant number of model evaluation (in the order of 10 to 50 times the number of dimensions) to converge to an optimal solution.
This search method is more suitable when the time required for a model evaluation is relatively low.
However, it requires a significant number of model evaluation (in the order of 10 to 50 times the number of dimensions) to converge to an optimal solution. This search method is more suitable when the time required for a model evaluation is relatively low.
- *MOCMAES search* (Multi-Objective Covariance Matrix Adaptation Evolution Strategy) is a multi-objective algorithm optimizing multiple tradeoffs simultaneously.
To do that, MOCMAES employs a number of CMAES algorithms.
- *MOCMAES search* (Multi-Objective Covariance Matrix Adaptation Evolution Strategy) is a multi-objective algorithm optimizing multiple tradeoffs simultaneously. To do that, MOCMAES employs a number of CMAES algorithms.
Here is a table that resumes when to use each algorithm.
|===
......@@ -336,7 +333,7 @@ Here is a table that resumes when to use each algorithm.
=== Objective Functions
The following workflows represent some mathematical functions that can be optimized by the AutoML tuners.
The following workflows represent some mathematical functions that can be optimized by the `Distributed_Auto_ML` tuners.
*Himmelblau_Function:* is a multi-modal function containing four identical local minima. It's used to test the performance of optimization algorithms. For more info, please click https://en.wikipedia.org/wiki/Himmelblau%27s_function[here].
......@@ -382,7 +379,7 @@ The following workflows have common variables with the above illustrated workflo
*Image_Object_Detection:* trains a YOLO model on the coco dataset using PML deep learning generic tasks.
*Iris_Classification:* trains multiple types of SVM models on the Iris flower dataset.
*Digits_Classification:* python script illustrating an example of multiple machine learning models optimization.
*Text_Generation:* trains a simple Long Short-Term Memory (LSTM) to learn sequences of characters from 'The Alchemist' book. It's a novel by Brazilian author Paulo Coelho that was first published in 1988.
......@@ -391,8 +388,14 @@ The following workflows have common variables with the above illustrated workflo
The following workflows contain a search space containing a set of possible neural networks architectures that can be used by `Distributed_Auto_ML` to automatically find the best combinations of neural architectures within the search space.
*Handwritten_Digit_Classification:* train a simple deep CNN on the MNIST dataset using the PyTorch library.
*Handwritten_Digit_Classification:* trains a simple deep CNN on the MNIST dataset using the PyTorch library.
=== Distributed Training
The following workflows illustrate some examples of multi-node and multi-gpu distributed learning.
*TensorFlow_Keras_Multi_Node_Multi_GPU:* is a TensorFlow + Keras workflow template for distributed training (multi-node multi-gpu) with AutoML support.
=== Templates
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment