기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Rekognition Custom Labels 모델 삭제
Amazon Rekognition Custom Labels 콘솔을 사용하거나 DeleteProjectVersion API를 사용하여 모델을 삭제할 수 있습니다. 실행 중이거나 훈련 중인 모델은 삭제할 수 없습니다. 실행 중인 모델을 중지하려면 StopProjectVersion API를 사용하세요. 자세한 내용은 Amazon Rekognition Custom Labels 모델 중지(SDK) 섹션을 참조하세요. 모델이 훈련 중이면 완료될 때까지 기다린 후 모델을 삭제하세요.
삭제된 모델은 복구할 수 없습니다.
Amazon Rekognition Custom Labels 모델 삭제(콘솔)
다음 절차는 프로젝트 세부 정보 페이지에서 모델을 삭제하는 방법을 보여줍니다. 모델의 세부 정보 페이지에서도 모델을 삭제할 수 있습니다.
모델을 삭제하려면(콘솔)
https://console.aws.amazon.com/rekognition/에서 Amazon Rekognition 콘솔을 엽니다.
-
사용자 지정 레이블 사용을 선택합니다.
-
시작하기를 선택합니다.
-
왼쪽 탐색 창에서 프로젝트를 선택합니다.
-
삭제하려는 모델이 들어 있는 프로젝트를 선택합니다. 프로젝트 세부 정보 페이지가 열립니다.
-
모델 항목에서 삭제하려는 모델을 선택합니다.
모델을 선택할 수 없으면 모델이 실행 중이거나 훈련 중이라서 삭제할 수 없다는 뜻입니다. 상태 필드를 확인하고 실행 중인 모델을 중지한 후 다시 시도하거나 훈련이 완료될 때까지 기다리세요.
-
모델 삭제를 선택하면 모델 삭제 대화 상자가 표시됩니다.
-
삭제를 입력하여 삭제를 확인합니다.
-
삭제를 선택하여 모델을 삭제합니다. 모델 삭제를 완료하는 데 시간이 걸릴 수 있습니다.
모델 삭제 중에 대화 상자를 닫아도 모델은 삭제됩니다.
Amazon Rekognition Custom Labels 모델 삭제(SDK)
DeleteProjectVersion을 호출하고 삭제할 모델의 Amazon 리소스 이름(ARN)을 제공하여 Amazon Rekognition Custom Labels 모델을 삭제합니다. Amazon Rekognition Custom Labels 콘솔의 모델 세부 정보 페이지에 있는 모델 사용 항목에서 모델 ARN을 가져올 수 있습니다. 또는 DescribeProjectVersions를 호출하고 다음을 제공하세요.
모델 ARN은 DescribeProjectVersions
응답의 ProjectVersionDescription 객체에 있는 ProjectVersionArn
필드입니다.
실행 중이거나 훈련 중인 모델은 삭제할 수 없습니다. 모델이 실행 중인지 훈련 중인지 확인하려면 DescribeProjectVersions를 호출하고 모델의 ProjectVersionDescription 객체의 Status
필드를 확인하세요. 실행 중인 모델을 중지하려면 StopProjectVersion API를 사용하세요. 자세한 내용은 Amazon Rekognition Custom Labels 모델 중지(SDK) 섹션을 참조하세요. 모델을 삭제하려면 먼저 훈련이 완료될 때까지 기다려야 합니다.
모델을 삭제하려면(SDK)
-
아직 하지 않았다면 AWS CLI 및 AWS SDK를 설치하고 구성하세요. 자세한 내용은 4단계: 설정 AWS CLI 그리고 AWS SDKs 섹션을 참조하세요.
-
다음 코드를 사용하여 모델을 삭제하세요.
- AWS CLI
-
project-version-arn
의 값을 삭제하려는 프로젝트의 이름으로 변경합니다.
aws rekognition delete-project-version --project-version-arn model_arn
\
--profile custom-labels-access
- Python
-
다음 명령줄 파라미터를 제공하세요.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Purpose
Shows how to delete an existing Amazon Rekognition Custom Labels model.
"""
import argparse
import logging
import time
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
def find_forward_slash(input_string, n):
"""
Returns the location of '/' after n number of occurences.
:param input_string: The string you want to search
: n: the occurence that you want to find.
"""
position = input_string.find('/')
while position >= 0 and n > 1:
position = input_string.find('/', position + 1)
n -= 1
return position
def delete_model(rek_client, project_arn, model_arn):
"""
Deletes an Amazon Rekognition Custom Labels model.
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param model_arn: The ARN of the model version that you want to delete.
"""
try:
# Delete the model
logger.info("Deleting dataset: {%s}", model_arn)
rek_client.delete_project_version(ProjectVersionArn=model_arn)
# Get the model version name
start = find_forward_slash(model_arn, 3) + 1
end = find_forward_slash(model_arn, 4)
version_name = model_arn[start:end]
deleted = False
# model might not be deleted yet, so wait deletion finishes.
while deleted is False:
describe_response = rek_client.describe_project_versions(ProjectArn=project_arn,
VersionNames=[version_name])
if len(describe_response['ProjectVersionDescriptions']) == 0:
deleted = True
else:
logger.info("Waiting for model deletion %s", model_arn)
time.sleep(5)
logger.info("model deleted: %s", model_arn)
return True
except ClientError as err:
logger.exception("Couldn't delete model - %s: %s",
model_arn, err.response['Error']['Message'])
raise
def add_arguments(parser):
"""
Adds command line arguments to the parser.
:param parser: The command line parser.
"""
parser.add_argument(
"project_arn", help="The ARN of the project that contains the model that you want to delete."
)
parser.add_argument(
"model_arn", help="The ARN of the model version that you want to delete."
)
def confirm_model_deletion(model_arn):
"""
Confirms deletion of the model. Returns True if delete entered.
:param model_arn: The ARN of the model that you want to delete.
"""
print(f"Are you sure you wany to delete model {model_arn} ?\n", model_arn)
start = input("Enter delete to delete your model: ")
if start == "delete":
return True
else:
return False
def main():
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
try:
# Get command line arguments.
parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
add_arguments(parser)
args = parser.parse_args()
if confirm_model_deletion(args.model_arn) is True:
print(f"Deleting model: {args.model_arn}")
# Delete the model.
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
delete_model(rekognition_client,
args.project_arn,
args.model_arn)
print(f"Finished deleting model: {args.model_arn}")
else:
print(f"Not deleting model {args.model_arn}")
except ClientError as err:
print(f"Problem deleting model: {err}")
if __name__ == "__main__":
main()
- Java V2
-
//Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.)
import java.net.URI;
import java.util.logging.Level;
import java.util.logging.Logger;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.DeleteProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
public class DeleteModel {
public static final Logger logger = Logger.getLogger(DeleteModel.class.getName());
public static int findForwardSlash(String modelArn, int n) {
int start = modelArn.indexOf('/');
while (start >= 0 && n > 1) {
start = modelArn.indexOf('/', start + 1);
n -= 1;
}
return start;
}
public static void deleteMyModel(RekognitionClient rekClient, String projectArn, String modelArn)
throws InterruptedException {
try {
logger.log(Level.INFO, "Deleting model: {0}", projectArn);
// Delete the model
DeleteProjectVersionRequest deleteProjectVersionRequest = DeleteProjectVersionRequest.builder()
.projectVersionArn(modelArn).build();
DeleteProjectVersionResponse response =
rekClient.deleteProjectVersion(deleteProjectVersionRequest);
logger.log(Level.INFO, "Status: {0}", response.status());
// Get the model version
int start = findForwardSlash(modelArn, 3) + 1;
int end = findForwardSlash(modelArn, 4);
String versionName = modelArn.substring(start, end);
Boolean deleted = false;
DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
.projectArn(projectArn).versionNames(versionName).build();
// Wait until model is deleted.
do {
DescribeProjectVersionsResponse describeProjectVersionsResponse = rekClient
.describeProjectVersions(describeProjectVersionsRequest);
if (describeProjectVersionsResponse.projectVersionDescriptions().size()==0) {
logger.log(Level.INFO, "Waiting for model deletion: {0}", modelArn);
Thread.sleep(5000);
} else {
deleted = true;
logger.log(Level.INFO, "Model deleted: {0}", modelArn);
}
} while (Boolean.FALSE.equals(deleted));
logger.log(Level.INFO, "Model deleted: {0}", modelArn);
} catch (
RekognitionException e) {
logger.log(Level.SEVERE, "Client error occurred: {0}", e.getMessage());
throw e;
}
}
public static void main(String args[]) {
final String USAGE = "\n" + "Usage: " + "<project_arn> <model_arn>\n\n" + "Where:\n"
+ " project_arn - The ARN of the project that contains the model that you want to delete.\n\n"
+ " model_version - The ARN of the model that you want to delete.\n\n";
if (args.length != 2) {
System.out.println(USAGE);
System.exit(1);
}
String projectArn = args[0];
String modelVersion = args[1];
try {
RekognitionClient rekClient = RekognitionClient.builder().build();
// Delete the model
deleteMyModel(rekClient, projectArn, modelVersion);
System.out.println(String.format("model deleted: %s", modelVersion));
rekClient.close();
} catch (RekognitionException rekError) {
logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
System.exit(1);
}
catch (InterruptedException intError) {
logger.log(Level.SEVERE, "Exception while sleeping: {0}", intError.getMessage());
System.exit(1);
}
}
}