# Overview

{% hint style="warning" %}
Experiments have been replaced by a more general framework called Workflows. For the latest info go to [Workflows](https://docs.paperspace.com/gradient/explore-train-deploy/workflows).
{% endhint %}

Experiments are used to train machine learning models. Gradient supports single-node experiments as well as distributed training through multi-node experiments. Gradient also supports [Hyperparameter Search](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments/hyperparameters).

![The Experiments view is available within each individual project](https://1320806315-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LHZRFUkajubOAmgu6Rd%2F-MRO9mvaetkJWKr7-fqb%2F-MROBMrCQlMkjzRt_lLs%2FScreen%20Shot%202021-01-18%20at%209.50.00%20PM.png?alt=media\&token=e2cbc49c-0646-4d0f-b8b2-d4f61b4af1b0)

## Creating Experiments

Experiments can be run from the **Experiment Builder** web interface, the **CLI,** the **GradientCI** bot, or the **SDK**. Here is a quick overview and instructions for each option:

The **web UI** is great for getting familiar with Experiments and running sample projects and the **CLI** (command-line interface) is a more advanced tool for launching Experiments. Both options are powerful, flexible, and easy-to-use.

{% content-ref url="using-experiments" %}
[using-experiments](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments)
{% endcontent-ref %}

\*\*\*\*

**GradientCI** enables you to submit Experiments directly from a GitHub commit (or branch). You can launch Experiments without ever leaving your code.

{% content-ref url="../projects/gradientci-v2" %}
[gradientci-v2](https://paperspace.gitbook.io/gradient/master/projects/gradientci-v2)
{% endcontent-ref %}

The **SDK** lets you programmatically interact with the Gradient platform. The SDK can be incorporated into any python project and enables more advanced ML pipelines.

{% content-ref url="../gradient-python-sdk/gradient-python-sdk" %}
[gradient-python-sdk](https://paperspace.gitbook.io/gradient/master/gradient-python-sdk/gradient-python-sdk)
{% endcontent-ref %}

## Experiment Modes

### Single-node

In your your CLI command or`config.yaml`, specify the experiment type as `singlenode`

### Multi-node

Gradient supports both gRPC and MPI protocols for distributed TensorFlow model training. In your CLI command or`config.yaml`, specify the experiment type as either `multinode.` The two types are:

```
type: "multi-grpc"
```

or

```
type: "multi-mpi"
```

### Hyperparamater Tuning

See this [article](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments/hyperparameters) for more info.

## Storage

#### Persistent Storage

Persistent storage is a persistent filesystem located at `/storage` which is automatically mounted on every Experiment, Job, and Notebook and is ideal for storing data like images, datasets, model checkpoints, and more. Learn more [here](https://paperspace.gitbook.io/gradient/master/data/storage#persistent-storage).

#### Artifact Storage

Artifact storage is collected and made available after the Experiment or Job run in the CLI and web interface. You can download any files that your job has placed in the `/artifacts` directory from the CLI or UI. If you need to get result data from a job run out of Gradient, use the Artifacts directory. Learn more [here](https://paperspace.gitbook.io/gradient/master/data/storage#artifact-storage).

#### Workspace Storage

The Workspace storage is typically imported from the local directory in which you started your job. The contents of that directory are zipped up and uploaded to the container in which your job runs. The Workspace exists for the duration of the job run. If you need to push code up to Gradient and run it, using the Workspace storage is the way to do it. Learn more [here](https://paperspace.gitbook.io/gradient/master/data/storage#workspace-storage).

#### Private Datasets

Gradient provides the ability to mount S3 compatible object storage buckets to an experiment at runtime. Learn more [here](https://paperspace.gitbook.io/gradient/master/data/private-datasets-repository).

{% content-ref url="../data/private-datasets-repository" %}
[private-datasets-repository](https://paperspace.gitbook.io/gradient/master/data/private-datasets-repository)
{% endcontent-ref %}

## **Optional Experiment features**

There are many features you will want to check out like outputting your [models](https://paperspace.gitbook.io/gradient/master/models/create-a-model/model-path), the [persistent data layer](https://paperspace.gitbook.io/gradient/master/data/storage#persistent-storage) at `/storage`, graphing with [Experiment Metrics](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments/experiment-metrics), sharing underling Jobs with the [Public Jobs](https://github.com/dkobran/Docs/blob/master/jobs/public-jobs.md) feature, sourcing your code from [private GitHub repositories](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments/experiment-options), and [opening ports](https://paperspace.gitbook.io/gradient/master/experiments/using-experiments/ports).

## Instance Types

Jobs can be chosen to run on a variety of hardware. Pricing and details for all available options can be found [here](https://gradient.paperspace.com/instances).

## State Transitions

An experiment goes through a number of "states" between being submitted to Gradient (through the CLI, SDK, the GradientCI GitHub App, or Job Builder Web UI). These states are enumerated below:

| State                               | Name                  |
| ----------------------------------- | --------------------- |
| `EXPERIMENT_STATE_CREATED`          | Created               |
| `EXPERIMENT_STATE_PENDING`          | Pending               |
| `EXPERIMENT_STATE_PROVISIONING`     | Provisioning          |
| `EXPERIMENT_STATE_PROVISIONED`      | Provisioned           |
| `EXPERIMENT_STATE_NETWORK_SETUP`    | Network Setup         |
| `EXPERIMENT_STATE_RUNNING`          | Running               |
| `EXPERIMENT_STATE_NETWORK_TEARDOWN` | Network Teardown      |
| `EXPERIMENT_STATE_STOPPED`          | Stopped (aka Success) |
| `EXPERIMENT_STATE_FAILED`           | Failed                |
| `EXPERIMENT_STATE_CANCELLED`        | Cancelled             |
| `EXPERIMENT_STATE_ERROR`            | Error                 |

![](https://1320806315-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LHZRFUkajubOAmgu6Rd%2Fsync%2F5baa0de6c55b6cbfb07accf4574af21ce1c3826c.png?generation=1628686190653822\&alt=media)
