{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "colab_type": "text",
        "id": "view-in-github"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/allegroai/clearml/blob/master/examples/clearml_agent/clearml_colab_agent.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mC3A4rio6Y--"
      },
      "source": [
        "# Google Colab Used to Launch ClearML Agent\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "EPYjmFLy1zuC"
      },
      "source": [
        "## Step 1: Install all necessary packages"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "DwFC3fL8JAP3"
      },
      "outputs": [],
      "source": [
        "!pip install clearml\n",
        "!pip install clearml-agent"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gb41kM8i1-7T"
      },
      "source": [
        "## Step 2: Export this environment variable\n",
        "\n",
        "This environment variable makes Matplotlib work in headless mode, so it won't output graphs to the screen"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "3-Bm4811VMLK"
      },
      "outputs": [],
      "source": [
        "! export MPLBACKEND=TkAg"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Step 2b (OPTIONAL): Enter your github credentials (only for private repositories)\n",
        "In order for the agent to pull your code, it needs access to your repositories. If these are private, you'll have to supply the agent with github credentials to log in. Github/Bitbucket will no longer let you log in using username/password combinations. Instead, you have to use a personal token, read more about it [here for Github](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) and [here for Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)\n",
        "\n",
        "We can let the agent know which credentials to use by setting the following env variables"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "#@title Insert your Git Credentials\n",
        "\n",
        "import os\n",
        "os.environ[\"CLEARML_AGENT_GIT_USER\"] = \"username-goes-here\" #@param {type:\"string\"}\n",
        "os.environ[\"CLEARML_AGENT_GIT_PASS\"] = \"git-personal-access-token\" #@param {type:\"string\"}"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "chuUzBaU2NyB"
      },
      "source": [
        "## Step 3: Create new credentials: \n",
        "1. Go to your [ClearML WebApp **Settings**](https://app.clear.ml/settings/workspace-configuration). \n",
        "1. Under the **WORKSPACES** section, go to **App Credentials**, and click **+ Create new credentials**\n",
        "1. Copy your credentials"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1Kloxwfj0Vnq"
      },
      "source": [
        "## Step 4: Set your ClearML Credentials\n",
        "\n",
        "Insert the credentials you created in Step 3. \n",
        "\n",
        "If you aren't using the ClearML hosted server, make sure to modify the server variables. "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "YBPdmP4sJHnQ"
      },
      "outputs": [],
      "source": [
        "#@title Insert your own Credentials\n",
        "\n",
        "from clearml import Task\n",
        "\n",
        "web_server = 'https://app.clear.ml'#@param {type:\"string\"}  \n",
        "api_server = 'https://api.clear.ml'#@param {type:\"string\"} \n",
        "files_server = 'https://files.clear.ml'#@param {type:\"string\"}\n",
        "access_key = ''#@param {type:\"string\"}\n",
        "secret_key = ''#@param {type:\"string\"}\n",
        "\n",
        "Task.set_credentials(web_host=web_server,\n",
        "                     api_host=api_server,\n",
        "                     files_host=files_server,\n",
        "                     key=access_key,\n",
        "                     secret=secret_key\n",
        "                     )\n",
        "  \n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "DStY3iZnRpYb"
      },
      "outputs": [],
      "source": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Er3HUBty4m7i"
      },
      "source": [
        "## Step 4: Run clearml-agent"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "QcczeU7OJ9G-"
      },
      "outputs": [],
      "source": [
        "!clearml-agent daemon --queue default"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "authorship_tag": "ABX9TyMKeTOHrlQb98s9lDHxWFts",
      "collapsed_sections": [],
      "include_colab_link": true,
      "name": "clearml_colab_agent.ipynb",
      "provenance": [],
      "toc_visible": true
    },
    "interpreter": {
      "hash": "d75e902da2bbfe9f41879fcf2334f5819447e02a7f656a079df344fef4e78809"
    },
    "kernelspec": {
      "display_name": "Python 3.7.12 64-bit ('.env')",
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": ""
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}