API платформы GCP AI

Я пытаюсь программно создавать блокноты AI Platform в GCP. В gcloud sdk есть некоторая поддержка для управления этими записными книжками, но не для их создания. И нет клиентской библиотеки для поддержки Node.js (язык, который я использую). Однако создание записных книжек поддерживается GCP REST API, как описано в здесь. Однако я изо всех сил пытаюсь понять, как указать, какой блокнот я хочу в JSON запроса. В веб-интерфейсе GCP мне нужны следующие настройки:

  • имя экземпляра: test-instance
  • регион: европа-запад2
  • зона: europe-west2a
  • среда: TensorFlow Enterprise 2.1 (с Intel® MKL-DNN / MKL)
  • тип машины: e2-highmem-2 (эффективный экземпляр, 2 виртуальных ЦП, 16 ГБ ОЗУ)
  • доступ к jupyter lab: только для одного пользователя
  • электронная почта пользователя: [email protected]
  • сервисный аккаунт: [email protected]

Но я изо всех сил пытаюсь перевести это в запрос JSON для REST API. Ниже то, что у меня есть на данный момент. Я не уверен, что это правильно, и мне определенно не хватает среды (tenorflow 2.1) и доступа только для одного пользователя. Я понятия не имею, как добиться этого, кроме как случайным образом пробовать разные запросы, пока он не сработает. (Я оставил часть JSON, просто указав типы в соответствии с документами, пока для справки).

POST https://notebooks.googleapis.com/v1beta1/projects/my-project/locations/europe-west2/instances
{
  "name" : "testing-instance",
  "instanceOwners": [
    string
  ],
  "serviceAccount": "[email protected]",
  "machineType": "e2-highmem-2 (Efficient Instance, 2 vCPUs, 16 GB RAM)",
  "acceleratorConfig": {
    object (AcceleratorConfig)
  },
  "state": enum (State),
  "installGpuDriver": boolean,
  "customGpuDriverPath": string,
  "bootDiskType": enum (DiskType),
  "bootDiskSizeGb": string,
  "dataDiskType": enum (DiskType),
  "dataDiskSizeGb": string,
  "noRemoveDataDisk": boolean,
  "diskEncryption": enum (DiskEncryption),
  "kmsKey": string,
  "noPublicIp": boolean,
  "noProxyAccess": boolean,
  "network": string,
  "subnet": string,
  "labels": {
    string: string,
    ...
  },
  "metadata": {
    string: string,
    ...
  },
  "createTime": string,
  "updateTime": string,

  // Union field environment can be only one of the following:
  "vmImage": {
    object (VmImage)
  },
  "containerImage": {
    object (ContainerImage)
  }
  // End of list of possible types for union field environment.
}

person Max888    schedule 08.09.2020    source источник
comment
У вас есть ошибка или что-то, что может объяснить такое поведение?   -  person guillaume blaquiere    schedule 08.09.2020
comment
Ошибок нет, я еще не пытался сделать запрос, так как он не завершен. Моя проблема в том, что я не знаю, как заполнить JSON для запроса.   -  person Max888    schedule 09.09.2020
comment
Вы знаете, как выполнить этот запрос с помощью gcloud SQK?   -  person guillaume blaquiere    schedule 09.09.2020
comment
Нет, gcloud sdk имеет некоторую поддержку для управления записными книжками, но не для их создания.   -  person Max888    schedule 09.09.2020


Ответы (1)


Здесь требуемый JSON

{
  "name": "testing-instance",
  "machineType": "zones/europe-west2-a/machineTypes/e2-highmem-2",
  "guestAccelerators": [],
  "metadata": {
    "items": [
      {
        "key": "proxy-mode",
        "value": "mail"
      },
      {
        "key": "framework",
        "value": "TensorFlow:2.1"
      },
      {
        "key": "proxy-user-mail",
        "value": "[email protected]"
      }
    ]
  },
  "disks": [
    {
      "boot": true,
      "autoDelete": true,
      "initializeParams": {
        "diskType": "zones/europe-west2-a/diskTypes/pd-standard",
        "diskSizeGb": "100",
        "sourceImage": "projects/deeplearning-platform-release/global/images/family/tf2-2-1-cu101-notebooks-debian-9"
      }
    }
  ],
  "scheduling": {
    "onHostMaintenance": "MIGRATE"
  },
  "networkInterfaces": [
    {
      "subnetwork": "https://www.googleapis.com/compute/v1/projects/gbl-imt-homerider-basguillaueb/regions/europe-west2/subnetworks/datalab-network",
      "accessConfigs": [
        {
          "name": "external-nat",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "serviceAccounts": [
    {
      "email": "[email protected]",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform",
        "https://www.googleapis.com/auth/userinfo.email"
      ]
    }
  ],
  "tags": {
    "items": [
      "deeplearning-vm"
    ]
  }
}

Сами угадать невозможно. Как я сделал? Сделайте это с помощью консоли и перед отправкой откройте отладчик Chorme и запишите сетевой запрос. Почтовый запрос содержит этот JSON!

Наслаждаться

person guillaume blaquiere    schedule 09.09.2020