# MLCloudModel

The `MLCloudModel` represents an ML model that makes predictions on NatML's cloud infrastructure. As such, it forms the basis for implementing cloud predictors in code.

## Creating the Model

```csharp
/// <summary>
/// Create a cloud ML model.
/// </summary>
/// <param name="tag">Predictor tag.</param>
/// <param name="accessKey">NatML access key.</param>
static Task<MLCloudModel> Create (string tag, string accessKey = null);
```

The model can be created from a predictor on NatML Hub:

{% embed url="<https://hub.natml.ai/>" %}
NatML Hub predictor catalog.
{% endembed %}

{% hint style="info" %}
The predictor MUST have an active prediction endpoint.
{% endhint %}

## Making Predictions

```csharp
/// <summary>
/// Make a prediction on one or more cloud ML features.
/// </summary>
/// <param name="inputs">Input cloud ML features.</param>
/// <returns>Output cloud ML features.</returns>
MLFeatureCollection<MLCloudFeature> Predict (params MLCloudFeature[] inputs);
```

The `MLCloudModel` model defines a `Predict` method which makes predictions on one or more `MLCloudFeature` instances.

{% hint style="warning" %}
The input and output features MUST be disposed when they are no longer needed. Call `Dispose` on the individual features, or on the returned feature collection to do so.
{% endhint %}

## Disposing the Model

```csharp
/// <summary>
/// Dispose the model and release resources.
/// </summary>
void Dispose ();
```

Refer to the [Disposing the Model](https://docs.natml.ai/unity/api/mlmodel/..#disposing-the-model) section of the [`MLModel`](https://docs.natml.ai/unity/api/mlmodel) class for more information.
