From cd0bd1baf7ccb301a384091a99f1521552a3c635 Mon Sep 17 00:00:00 2001 From: Revital Date: Mon, 23 Aug 2021 11:26:36 +0300 Subject: [PATCH] add advanced to ToC, add image, add more info to execute_remotely.md --- docs/guides/advanced/execute_remotely.md | 59 ++++++++++++++++-- .../examples_remote_execution_artifacts.png | Bin 0 -> 40943 bytes sidebars.js | 1 + 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 docs/img/examples_remote_execution_artifacts.png diff --git a/docs/guides/advanced/execute_remotely.md b/docs/guides/advanced/execute_remotely.md index d73419a0..56470f51 100644 --- a/docs/guides/advanced/execute_remotely.md +++ b/docs/guides/advanced/execute_remotely.md @@ -7,13 +7,60 @@ script demonstrates the use of the [`execute_remotely`](../../references/sdk/tas The script does the following: * Trains a simple deep neural network on the PyTorch built-in MNIST dataset. -* Uses ClearML automatic logging. +* Uses ClearML's automatic and explicit logging. * Creates an experiment named `remote_execution pytorch mnist train`, which is associated with the `examples` project. -When the code is executed, the training runs for one epoch to make sure nothing crashes, then the code passes the `execute_remotely` method -which terminates the local execution of the code. Execution will switch to remote execution by the agent listening to -queue specified in the `queue_name` parameter of the method. +## Execution Flow -This feature is especially helpful if you want to run the first epoch locally on your machine to debug and to -make sure code doesn't crash, and then move to a stronger machine for the entire training. +The following describes the code's execution flow: +1. The training runs for one epoch. +1. The code passes the `execute_remotely` method which terminates the local execution of the code. +1. Execution switches to remote execution by the agent listening to queue specified in the `queue_name` parameter of the method. + +The `execute_remotely` method is especially helpful when running code on a development machine for a few iterations +to debug and to make sure the code doesn't crash, or setting up an environment. After that, the training can be +moved to be executed by a stronger machine. + +## Scalars + +In the example script's `train` function, the following code explicitly reports scalars to **ClearML**: + +```python +Logger.current_logger().report_scalar( + "train", "loss", iteration=(epoch * len(train_loader) + batch_idx), value=loss.item()) +``` + +In the `test` method, the code explicitly reports `loss` and `accuracy` scalars. + +```python +Logger.current_logger().report_scalar( + "test", "loss", iteration=epoch, value=test_loss) +Logger.current_logger().report_scalar( + "test", "accuracy", iteration=epoch, value=(correct / len(test_loader.dataset))) +``` + +These scalars can be visualized in plots, which appear in the ClearML web UI, in the experiment's +page **>** **RESULTS** **>** **SCALARS**. + +![image](../../img/examples_pytorch_mnist_07.png) + +## Hyperparameters + +ClearML automatically logs command line options defined with `argparse`. They appear in **CONFIGURATIONS** **>** **HYPER PARAMETERS** **>** **Args**. + +![image](../../img/examples_pytorch_mnist_01.png) + +## Console + +Text printed to the console for training progress, as well as all other console output, appear in **RESULTS** **>** **CONSOLE**. + +![image](../../img/examples_pytorch_mnist_06.png) + +## Artifacts + +Model artifacts associated with the experiment appear in the info panel of the **EXPERIMENTS** tab and in +the info panel of the **MODELS** tab. + + +![image](../../img/examples_remote_execution_artifacts.png) diff --git a/docs/img/examples_remote_execution_artifacts.png b/docs/img/examples_remote_execution_artifacts.png new file mode 100644 index 0000000000000000000000000000000000000000..fd73512f2cce1b8073c86dc0b043e6f2414f3605 GIT binary patch literal 40943 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