

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai model Label Kustom Rekognition Amazon
<a name="rm-start"></a>

Anda dapat mulai menjalankan model Amazon Rekognition Custom Labels dengan menggunakan konsol atau dengan menggunakan operasi. [StartProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartProjectVersion)

**penting**  
Anda dikenakan biaya untuk jumlah jam yang dijalankan model Anda dan untuk jumlah unit inferensi yang digunakan model Anda saat sedang berjalan. Untuk informasi selengkapnya, lihat [Menjalankan model Label Kustom Rekognition Amazon yang terlatih](running-model.md).

Memulai model mungkin membutuhkan waktu beberapa menit untuk menyelesaikannya. Untuk memeriksa status kesiapan model saat ini, periksa halaman detail untuk proyek atau penggunaan [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions).

Setelah model dimulai Anda menggunakan [DetectCustomLabels](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels), untuk menganalisis gambar menggunakan model. Untuk informasi selengkapnya, lihat [Menganalisis gambar dengan model terlatih](detecting-custom-labels.md). Konsol juga menyediakan contoh kode untuk dipanggil`DetectCustomLabels`. 

**Topics**
+ [Memulai model Label Kustom Rekognition Amazon (Konsol)](#rm-start-console)
+ [Memulai model Label Kustom Rekognition Amazon (SDK)](#rm-start-sdk)

## Memulai model Label Kustom Rekognition Amazon (Konsol)
<a name="rm-start-console"></a>

Gunakan prosedur berikut untuk mulai menjalankan model Amazon Rekognition Custom Labels dengan konsol. Anda dapat memulai model langsung dari konsol atau menggunakan kode AWS SDK yang disediakan oleh konsol. 

**Untuk memulai model (konsol)**

1. Buka konsol Amazon Rekognition di. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Pilih **Gunakan Label Kustom**.

1. Pilih **Mulai**. 

1. Di panel navigasi kiri, pilih **Proyek**.

1. Pada halaman Sumber daya **proyek**, pilih proyek yang berisi model terlatih yang ingin Anda mulai.

1. Di bagian **Model**, pilih model yang ingin Anda mulai. 

1. Pilih tab **Gunakan model**.

1. Lakukan salah satu tindakan berikut:

------
#### [ Start model using the console ]

   Di bagian **Mulai atau hentikan model** lakukan hal berikut:

   1. Pilih jumlah unit inferensi yang ingin Anda gunakan. Untuk informasi selengkapnya, lihat [Menjalankan model Label Kustom Rekognition Amazon yang terlatih](running-model.md).

   1. Pilih **Mulai**.

   1. Dalam kotak dialog **Mulai model**, pilih **Mulai**. 

------
#### [ Start model using the AWS SDK ]

   Di bagian **Gunakan model Anda** lakukan hal berikut:

   1. Pilih **Kode API.**

   1. **Pilih **AWS CLI** atau Python.**

   1. Dalam **model Mulai** salin kode contoh.

   1. Gunakan kode contoh untuk memulai model Anda. Untuk informasi selengkapnya, lihat [Memulai model Label Kustom Rekognition Amazon (SDK)](#rm-start-sdk).

------

1. Untuk kembali ke halaman ikhtisar proyek, pilih nama proyek Anda di bagian atas halaman.

1. Di bagian **Model**, periksa status model. Saat status model sedang **BERJALAN**, Anda dapat menggunakan model untuk menganalisis gambar. Untuk informasi selengkapnya, lihat [Menganalisis gambar dengan model terlatih](detecting-custom-labels.md).

## Memulai model Label Kustom Rekognition Amazon (SDK)
<a name="rm-start-sdk"></a>

Anda memulai model dengan memanggil [StartProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartProjectVersion)API dan meneruskan Amazon Resource Name (ARN) model dalam parameter `ProjectVersionArn` input. Anda juga menentukan jumlah unit inferensi yang ingin Anda gunakan. Untuk informasi selengkapnya, lihat [Menjalankan model Label Kustom Rekognition Amazon yang terlatih](running-model.md).

Sebuah model mungkin membutuhkan waktu beberapa saat untuk memulai. Contoh Python dan Java dalam topik ini menggunakan pelayan untuk menunggu model dimulai. Pelayan adalah metode utilitas yang melakukan polling untuk keadaan tertentu terjadi. Atau, Anda dapat memeriksa status saat ini dengan menelepon [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions). 

**Untuk memulai model (SDK)**

1. Jika Anda belum melakukannya, instal dan konfigurasikan AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat [Langkah 4: Mengatur AWS CLI dan AWS SDKs](su-awscli-sdk.md).

1. Gunakan kode contoh berikut untuk memulai model.

------
#### [ CLI ]

   Ubah nilai `project-version-arn` ke ARN model yang ingin Anda mulai. Ubah nilai `--min-inference-units` ke jumlah unit inferensi yang ingin Anda gunakan. Secara opsional, ubah `--max-inference-units` ke jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis.

   ```
   aws rekognition start-project-version  --project-version-arn model_arn \
      --min-inference-units minimum number of units \
      --max-inference-units maximum number of units \
      --profile custom-labels-access
   ```

------
#### [ Python ]

   Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang berisi model yang ingin Anda mulai.
   + `model_arn`— ARN dari model yang ingin Anda mulai.
   + `min_inference_units`— jumlah unit inferensi yang ingin Anda gunakan.
   + (Opsional) `--max_inference_units` Jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis. 

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   
   """
   Purpose
   Shows how to start running an Amazon Lookout for Vision model.
   """
   
   import argparse
   import logging
   import boto3
   from botocore.exceptions import ClientError
   
   logger = logging.getLogger(__name__)
   
   
   def get_model_status(rek_client, project_arn, model_arn):
       """
       Gets the current status of an Amazon Rekognition Custom Labels model
       :param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
       :param project_name:  The name of the project that you want to use.
       :param model_arn:  The name of the model that you want the status for.
       :return: The model status
       """
   
       logger.info("Getting status for %s.", model_arn)
   
       # Extract the model version from the model arn.
       version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
   
       models = rek_client.describe_project_versions(ProjectArn=project_arn,
                                                     VersionNames=[version_name])
   
       for model in models['ProjectVersionDescriptions']:
   
           logger.info("Status: %s", model['StatusMessage'])
           return model["Status"]
   
       error_message = f"Model {model_arn} not found."
       logger.exception(error_message)
       raise Exception(error_message)
   
   
   def start_model(rek_client, project_arn, model_arn, min_inference_units, max_inference_units=None):
       """
       Starts the hosting of an Amazon Rekognition Custom Labels model.
       :param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
       :param project_name:  The name of the project that contains the
       model that you want to start hosting.
       :param min_inference_units: The number of inference units to use for hosting.
       :param max_inference_units: The number of inference units to use for auto-scaling
       the model. If not supplied, auto-scaling does not happen.
       """
   
       try:
           # Start the model
           logger.info(f"Starting model: {model_arn}. Please wait....")
   
           if max_inference_units is None:
               rek_client.start_project_version(ProjectVersionArn=model_arn,
                                                MinInferenceUnits=int(min_inference_units))
           else:
               rek_client.start_project_version(ProjectVersionArn=model_arn,
                                                MinInferenceUnits=int(
                                                    min_inference_units),
                                                MaxInferenceUnits=int(max_inference_units))
   
           # Wait for the model to be in the running state
           version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
           project_version_running_waiter = rek_client.get_waiter(
               'project_version_running')
           project_version_running_waiter.wait(
               ProjectArn=project_arn, VersionNames=[version_name])
   
           # Get the running status
           return get_model_status(rek_client, project_arn, model_arn)
   
       except ClientError as err:
           logger.exception("Client error: Problem starting model: %s", err)
           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 that the model you want to start."
       )
       parser.add_argument(
           "model_arn", help="The ARN of the model that you want to start."
       )
       parser.add_argument(
           "min_inference_units", help="The minimum number of inference units to use."
       )
       parser.add_argument(
           "--max_inference_units",  help="The maximum number of inference units to use for auto-scaling the model.", required=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()
   
           # Start the model.
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
           
           status = start_model(rekognition_client,
                                args.project_arn, args.model_arn,
                                args.min_inference_units,
                                args.max_inference_units)
   
           print(f"Finished starting model: {args.model_arn}")
           print(f"Status: {status}")
   
       except ClientError as err:
           error_message = f"Client error: Problem starting model: {err}"
           logger.exception(error_message)
           print(error_message)
   
       except Exception as err:
           error_message = f"Problem starting model:{err}"
           logger.exception(error_message)
           print(error_message)
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang berisi model yang ingin Anda mulai.
   + `model_arn`— ARN dari model yang ingin Anda mulai.
   + `min_inference_units`— jumlah unit inferensi yang ingin Anda gunakan.
   + (Opsional) `max_inference_units` — jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis. Jika Anda tidak menentukan nilai, penskalaan otomatis tidak akan terjadi.

   ```
   /*
      Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
      SPDX-License-Identifier: Apache-2.0
   */
   package com.example.rekognition;
   
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.core.waiters.WaiterResponse;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
   import software.amazon.awssdk.services.rekognition.model.ProjectVersionDescription;
   import software.amazon.awssdk.services.rekognition.model.ProjectVersionStatus;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.StartProjectVersionRequest;
   import software.amazon.awssdk.services.rekognition.model.StartProjectVersionResponse;
   import software.amazon.awssdk.services.rekognition.waiters.RekognitionWaiter;
   
   import java.util.Optional;
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   public class StartModel {
   
       public static final Logger logger = Logger.getLogger(StartModel.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 startMyModel(RekognitionClient rekClient, String projectArn, String modelArn,
               Integer minInferenceUnits, Integer maxInferenceUnits
               ) throws Exception, RekognitionException {
   
           try {
               
               logger.log(Level.INFO, "Starting model: {0}", modelArn);
               
               StartProjectVersionRequest startProjectVersionRequest = null;
               
               if (maxInferenceUnits == null) {
                   startProjectVersionRequest = StartProjectVersionRequest.builder()
                       .projectVersionArn(modelArn)
                       .minInferenceUnits(minInferenceUnits)
                       .build();
               }
               else {
                   startProjectVersionRequest = StartProjectVersionRequest.builder()
                           .projectVersionArn(modelArn)
                           .minInferenceUnits(minInferenceUnits)
                           .maxInferenceUnits(maxInferenceUnits)
                           .build();
                   
               }
   
               StartProjectVersionResponse response = rekClient.startProjectVersion(startProjectVersionRequest);
   
               logger.log(Level.INFO, "Status: {0}", response.statusAsString() );
               
               
               // Get the model version
   
               int start = findForwardSlash(modelArn, 3) + 1;
               int end = findForwardSlash(modelArn, 4);
   
               String versionName = modelArn.substring(start, end);
   
   
               // wait until model starts
   
               DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
                       .versionNames(versionName)
                       .projectArn(projectArn)
                       .build();
   
               RekognitionWaiter waiter = rekClient.waiter();
   
               WaiterResponse<DescribeProjectVersionsResponse> waiterResponse = waiter
                       .waitUntilProjectVersionRunning(describeProjectVersionsRequest);
   
               Optional<DescribeProjectVersionsResponse> optionalResponse = waiterResponse.matched().response();
   
               DescribeProjectVersionsResponse describeProjectVersionsResponse = optionalResponse.get();
   
               for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
                       .projectVersionDescriptions()) {
                   if(projectVersionDescription.status() == ProjectVersionStatus.RUNNING) {
                       logger.log(Level.INFO, "Model is running" );
                    
                   }
                   else {
                       String error = "Model training failed: " + projectVersionDescription.statusAsString() + " "
                               + projectVersionDescription.statusMessage() + " " + modelArn;
                       logger.log(Level.SEVERE, error);
                       throw new Exception(error);
                   }
                   
               }
   
   
           } catch (RekognitionException e) {
               logger.log(Level.SEVERE, "Could not start model: {0}", e.getMessage());
               throw e;
           }
   
       }
   
       public static void main(String[] args) {
   
           String modelArn = null;
           String projectArn = null;
           Integer minInferenceUnits = null;
           Integer maxInferenceUnits = null;
           
   
   
   
           final String USAGE = "\n" + "Usage: " + "<project_name> <version_name> <min_inference_units> <max_inference_units>\n\n" + "Where:\n"
                   + "   project_arn - The ARN of the project that contains the model that you want to start. \n\n"
                   + "   model_arn - The ARN of the model version that you want to start.\n\n"
                   + "   min_inference_units - The number of inference units to start the model with.\n\n"
                   + "   max_inference_units - The maximum number of inference units that Custom Labels can use to "
                   + "   automatically scale the model. If the value is null, automatic scaling doesn't happen.\n\n";
   
           if (args.length < 3  || args.length >4) {
               System.out.println(USAGE);
               System.exit(1);
           }
   
           projectArn = args[0];
           modelArn = args[1];
           minInferenceUnits=Integer.parseInt(args[2]);
           
           if (args.length == 4) {
               maxInferenceUnits = Integer.parseInt(args[3]);
           }
     
           try {
   
   
               // Get the Rekognition client.
               RekognitionClient rekClient = RekognitionClient.builder()
               .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
               .region(Region.US_WEST_2)
               .build();
   
               // Start the model.
               startMyModel(rekClient, projectArn, modelArn, minInferenceUnits, maxInferenceUnits);
               
   
               System.out.println(String.format("Model started: %s", modelArn));
   
               rekClient.close();
   
           } catch (RekognitionException rekError) {
               logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
               System.exit(1);
           } catch (Exception rekError) {
               logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage());
               System.exit(1);
           }
   
           
   
       }
   
   }
   ```

------