Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从cloud ml中删除模型及其所有版本_Python_Google Cloud Platform_Google Cloud Ml - Fatal编程技术网

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

Python 从cloud ml中删除模型及其所有版本,python,google-cloud-platform,google-cloud-ml,Python,Google Cloud Platform,Google Cloud Ml,显然,要从云ml中删除模型并不容易,不能使用UI或pythonAPI。有人知道从云ml中删除模型及其所有版本的快速方法吗 我编写了一个python函数,从cloud ml及其所有版本中删除一个模型。它很凌乱,但很有效 from googleapiclient import discovery from googleapiclient import errors import time def remove_model_cloud_ml (model_name:str, gc_project_i

显然,要从
云ml
中删除模型并不容易,不能使用
UI
或python
API
。有人知道从
云ml
中删除模型及其所有版本的快速方法吗

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

from googleapiclient import discovery
from googleapiclient import errors
import time

def remove_model_cloud_ml (model_name:str, gc_project_id:str):

    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

我编写了一个python函数来从
cloudml
及其所有版本中删除一个模型。它很凌乱,但很有效

from googleapiclient import discovery
from googleapiclient import errors
import time

def remove_model_cloud_ml (model_name:str, gc_project_id:str):

    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

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

  • 从模型中删除所有非默认版本,因此最终只得到一个版本
  • 删除最后一个版本(默认版本)
  • 删除模型

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

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

  • 从模型中删除所有非默认版本,因此最终只得到一个版本
  • 删除最后一个版本(默认版本)
  • 删除模型

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

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

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

    在cloud shell中可以执行一个命令:

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

    您可以在cloud shell中执行一个命令:

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