> For the complete documentation index, see [llms.txt](https://docs.cloudeka.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cloudeka.ai/deka-gpu-documentations/panduan-untuk-enterprise/deka-gpu-mlops/experiments-automl/create-experiments-automl-using-python-sdk.md).

# Buat Experiments (AutoML) menggunakan Python SDK

Anda dapat menjalankan *experiment hyperparameter tuning Katib* pertama menggunakan *Python SDK*. Pada contoh berikut, kami memaksimalkan fungsi objektif sederhana.

$$
F(a,b)=4a-b^2
$$

Semakin besar nilai **a** dan semakin kecil nilai **b**, semakin besar nilai fungsi **F**.

Anda dapat membuka *JupyLab Notebook* di *KubeFlow*, atau [membuatnya](/deka-gpu-documentations/panduan-untuk-enterprise/deka-gpu-mlops/notebook.md#create-notebooks) terlebih dahulu untuk menjalankan skrip ini.

<figure><img src="https://753761090-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtAYQyBIz2BclZ3ZHHlS4%2Fuploads%2Fgit-blob-0fe29fc0ba66fb7a568dbad60c3c49fd8e008a29%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

```python
# [0] Install Depedency Libraries
!pip install kfp
!pip install kubeflow-katib

# [1] Create an objective function.
def objective(parameters):
    # Import required packages.
    import time
    time.sleep(5)
    # Calculate objective function.
    result = 4 * int(parameters["a"]) - float(parameters["b"]) ** 2
    # Katib parses metrics in this format: <metric-name>=<metric-value>.
    print(f"result={result}")

import kubeflow.katib as katib

# [2] Create hyperparameter search space.
parameters = {
    "a": katib.search.int(min=10, max=20),
    "b": katib.search.double(min=0.1, max=0.2)
}

# [3] Create Katib Experiment with 12 Trials and 2 CPUs per Trial.
katib_client = katib.KatibClient(namespace="kubeflow")

name = "tune-experiment"
katib_client.tune(
    name=name,
    objective=objective,
    parameters=parameters,
    objective_metric_name="result",
    max_trial_count=12,
    resources_per_trial={"cpu": "2"},
)

# [4] Wait until Katib Experiment is complete
katib_client.wait_for_experiment_condition(name=name)

# [5] Get the best hyperparameters.
print(katib_client.get_optimal_hyperparameters(name))

```

Setelah *experiment* selesai, Anda akan melihat keluaran seperti contoh berikut. Keluaran mencakup *trial* paling optimal, *hyperparameter*, dan metrik observasi.

```python
{
  "best_trial_name": "tune-experiment-nmggpxx2",
  "parameter_assignments": [
    {
      "name": "a",
      "value": "19"
    },
    {
      "name": "b",
      "value": "0.13546396192975868"
    }
  ],
  "observation": {
    "metrics": [
      {
        "latest": "75.98164951501829",
        "max": "75.98164951501829",
        "min": "75.98164951501829",
        "name": "result"
      }
    ]
  }
}
```
