从cloud-ml删除模型及其所有版本

时间:2018-07-23 22:42:34

标签: python google-cloud-platform google-cloud-ml

显然,没有一种简单的方法可以从cloud-ml删除模型,而不是使用UI或使用Python API。是否有人知道从cloud-ml删除模型及其所有版本的快速方法?

4 个答案:

答案 0 :(得分:1)

我编写了一个python函数,用于从cloud-ml及其所有版本中删除模型。它凌乱,但有效。

from googleapiclient import discovery
from googleapiclient import errors
import time

def remove_model_cloud_ml (
    model_name,
    gc_project_id
    ):

project_id = 'projects/{}'.format(gc_project_id)
model_id = '{}/models/{}'.format(project_id, model_name)

ml = discovery.build('ml','v1')
request = ml.projects().models().versions().list(parent=model_id)
response = request.execute()

# check if model has versions
if 'versions' in response.keys():    
    versions = response['versions']
    while len(versions) >= 1:
        for version in response['versions']:
            request = ml.projects().models().versions().delete(name = version['name'])
            try:
                request.execute()
            except errors.HttpError as err:
                reason = err._get_reason()
                if 'Cannot delete the default version' in reason:
                    next

        request = ml.projects().models().versions().list(parent=model_id)
        response = request.execute()
        time.sleep(1)
        try:
            versions = response['versions']
        except:
            break

# remove the model         
request = ml.projects().models().delete(name=model_id)

# make the call to remove
while True:    
    try:
        response = request.execute()
        # Any additional code on success goes here (logging, etc.)
    except errors.HttpError as err:
        # Something went wrong, print out some information.
        print('There was an error deleting the model.' +
              ' Check the details:')
        reason = err._get_reason()
        print(reason)
        # Wait for 1000 milliseconds.
        if 'A model with versions cannot be deleted' in reason:
            # this probably means that the last delete version call 
            # has not yet completed, so wait and retry 
            time.sleep(1) 
            continue
    break

答案 1 :(得分:1)

要删除模型,您需要先删除版本[1],然后删除模型[2]。为此,您需要遵循以下步骤:

  1. 从模型中删除所有NOT DEFAULT版本,因此最终只有一个版本。
  2. 删除最后一个版本(默认版本)。
  3. 删除模型。

您可以通过使用UI,命令行或API来实现。所有需要的信息和命令都在我提供的链接上。

答案 2 :(得分:1)

以上建议的方法是删除模型的正确方法,即先删除版本(非默认,然后是默认),然后删除模型本身。我们知道这可能很麻烦,并且正在努力使我们的用户更容易使用此界面。一种方法是拥有一些基本上以递归方式删除版本和模型的东西。还有其他更合适的方法可以做到吗?

答案 3 :(得分:0)

您可以在云Shell中执行一个命令:

gcloud ai-platform versions list --model=NAMEOFYOURMODEL|xargs -n 1 gcloud ai-platform versions delete --model=NAMEOFYOURMODEL--quiet