

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

# Menjalankan model Label Kustom Rekognition Amazon yang terlatih
<a name="running-model"></a>

Ketika Anda puas dengan kinerja model, Anda dapat mulai menggunakannya. Anda dapat memulai dan menghentikan model dengan menggunakan konsol atau AWS SDK. Konsol juga menyertakan contoh operasi SDK yang dapat Anda gunakan.

**Topics**
+ [Unit inferensi](#running-model-inference-units)
+ [Zona Ketersediaan](#running-model-availability-zones)
+ [Memulai model Label Kustom Rekognition Amazon](rm-start.md)
+ [Menghentikan model Label Kustom Rekognition Amazon](rm-stop.md)
+ [Melaporkan durasi berjalan dan unit inferensi yang digunakan](rm-model-usage.md)

## Unit inferensi
<a name="running-model-inference-units"></a>

Saat memulai model, Anda menentukan jumlah sumber daya komputasi, yang dikenal sebagai unit inferensi, yang digunakan model. 

**penting**  
Anda dikenakan biaya untuk jumlah jam yang dijalankan model Anda dan untuk jumlah unit inferensi yang digunakan model Anda saat berjalan, berdasarkan cara Anda mengonfigurasi pengoperasian model Anda. Misalnya, jika Anda memulai model dengan dua unit inferensi dan menggunakan model selama 8 jam, Anda akan dikenakan biaya selama 16 jam inferensi (8 jam waktu berjalan \$1 dua unit inferensi). Untuk informasi lebih lanjut, lihat [Jam inferensi](https://aws.amazon.com/rekognition/pricing/#Amazon_Rekognition_Custom_Labels_pricing). Jika Anda tidak secara eksplisit [menghentikan model Anda](rm-stop.md), Anda dikenakan biaya bahkan jika Anda tidak secara aktif menganalisis gambar dengan model Anda. 

Transaksi per detik (TPS) yang didukung oleh unit inferensi tunggal dipengaruhi oleh hal-hal berikut.
+ Model yang mendeteksi label tingkat gambar (klasifikasi) umumnya memiliki TPS yang lebih tinggi daripada model yang mendeteksi dan melokalisasi objek dengan kotak pembatas (deteksi objek).
+ Kompleksitas model.
+ Gambar beresolusi lebih tinggi membutuhkan lebih banyak waktu untuk analisis.
+ Lebih banyak objek dalam gambar membutuhkan lebih banyak waktu untuk analisis.
+ Gambar yang lebih kecil dianalisis lebih cepat daripada gambar yang lebih besar. 
+ Gambar yang diteruskan sebagai byte gambar dianalisis lebih cepat daripada pertama kali mengunggah gambar ke bucket Amazon S3 dan kemudian merujuk gambar yang diunggah. Gambar yang diteruskan sebagai byte gambar harus lebih kecil dari 4,0 MB. Kami menyarankan Anda menggunakan byte gambar untuk pemrosesan gambar secara real time dan ketika ukuran gambar kurang dari 4,0 MB. Misalnya, gambar yang diambil dari kamera IP.
+ Memproses gambar yang disimpan dalam bucket Amazon S3 lebih cepat daripada mengunduh gambar, mengonversi ke byte gambar, dan kemudian meneruskan byte gambar untuk dianalisis.
+ Menganalisis gambar yang sudah disimpan dalam bucket Amazon S3 mungkin lebih cepat daripada menganalisis gambar yang sama yang diteruskan sebagai byte gambar. Itu terutama benar jika ukuran gambar lebih besar.

Jika jumlah panggilan `DetectCustomLabels` melebihi TPS maksimum yang didukung oleh jumlah unit inferensi yang digunakan model, Amazon Rekognition Custom Labels mengembalikan pengecualian. `ProvisionedThroughputExceededException` 

### Mengelola throughput dengan unit inferensi
<a name="running-model-manage-throughput"></a>

Anda dapat menambah atau mengurangi throughput model Anda tergantung pada permintaan pada aplikasi Anda. Untuk meningkatkan throughput, gunakan unit inferensi tambahan. Setiap unit inferensi tambahan meningkatkan kecepatan pemrosesan Anda dengan satu unit inferensi. Untuk informasi tentang menghitung jumlah unit inferensi yang Anda butuhkan, lihat [Menghitung unit inferensi untuk Label Kustom Amazon Rekognition dan Amazon Lookout for](https://aws.amazon.com/blogs/machine-learning/calculate-inference-units-for-an-amazon-rekognition-custom-labels-model/) Vision model. Jika Anda ingin mengubah throughput model yang didukung, Anda memiliki dua opsi: 

#### Menambahkan atau menghapus unit inferensi secara manual
<a name="running-model-manual-inference-units"></a>

[Hentikan](rm-stop.md) model dan kemudian [restart](rm-start.md) dengan jumlah unit inferensi yang diperlukan. Kerugian dengan pendekatan ini adalah model tidak dapat menerima permintaan saat memulai ulang dan tidak dapat digunakan untuk menangani lonjakan permintaan. Gunakan pendekatan ini jika model Anda memiliki throughput yang stabil dan kasus penggunaan Anda dapat mentolerir waktu henti 10-20 menit. Contohnya adalah jika Anda ingin melakukan batch panggilan ke model Anda menggunakan jadwal mingguan. 

#### Unit inferensi skala otomatis
<a name="running-model-auto-scale-inference-units"></a>

Jika model Anda harus mengakomodasi lonjakan permintaan, Label Kustom Rekognition Amazon dapat secara otomatis menskalakan jumlah unit inferensi yang digunakan model Anda. Seiring meningkatnya permintaan, Amazon Rekognition Custom Labels menambahkan unit inferensi tambahan ke model dan menghapusnya saat permintaan menurun. 

Untuk memungkinkan Amazon Rekognition Custom Labels secara otomatis menskalakan unit inferensi untuk model[,](rm-start.md) mulai model dan atur jumlah maksimum unit inferensi yang dapat digunakan dengan menggunakan parameter. `MaxInferenceUnits` Menetapkan jumlah maksimum unit inferensi memungkinkan Anda mengelola biaya menjalankan model dengan membatasi jumlah unit inferensi yang tersedia untuknya. Jika Anda tidak menentukan jumlah unit maksimum, Label Kustom Rekognition Amazon tidak akan secara otomatis menskalakan model Anda, hanya menggunakan jumlah unit inferensi yang Anda mulai. Untuk informasi mengenai jumlah maksimum unit inferensi, lihat [Service](https://docs.aws.amazon.com/general/latest/gr/rekognition.html#limits_rekognition) Quotas. 

Anda juga dapat menentukan jumlah minimum unit inferensi dengan menggunakan `MinInferenceUnits` parameter. Ini memungkinkan Anda menentukan throughput minimum untuk model Anda, di mana satu unit inferensi mewakili 1 jam waktu pemrosesan.

**catatan**  
Anda tidak dapat menyetel jumlah maksimum unit inferensi dengan konsol Amazon Rekognition Custom Labels. Sebagai gantinya, tentukan parameter `MaxInferenceUnits` input ke `StartProjectVersion` operasi.

Label Kustom Rekognition Amazon menyediakan metrik Log CloudWatch Amazon berikut yang dapat Anda gunakan untuk menentukan status penskalaan otomatis saat ini untuk model.


| Metrik | Deskripsi | 
| --- | --- | 
|  `DesiredInferenceUnits`  |  Jumlah unit inferensi yang meningkatkan atau menurunkan Label Kustom Rekognition Amazon.   | 
|  `InServiceInferenceUnits`  |  Jumlah unit inferensi yang digunakan model.  | 

Jika `DesiredInferenceUnits` =`InServiceInferenceUnits`, Amazon Rekognition Custom Labels saat ini tidak menskalakan jumlah unit inferensi. 

Jika `DesiredInferenceUnits` >`InServiceInferenceUnits`, Amazon Rekognition Custom Labels ditingkatkan hingga nilai. `DesiredInferenceUnits` 

Jika `DesiredInferenceUnits` <`InServiceInferenceUnits`, Amazon Rekognition Custom Labels memperkecil ke nilai. `DesiredInferenceUnits` 

 [Untuk informasi selengkapnya mengenai metrik yang ditampilkan oleh Label Kustom Amazon Rekognition dan dimensi pemfilteran, CloudWatch lihat metrik untuk Rekognition.](https://docs.aws.amazon.com/rekognition/latest/dg/cloudwatch-metricsdim.html)

Untuk mengetahui jumlah maksimum unit inferensi yang Anda minta untuk model, panggil `DescribeProjectsVersion` dan periksa `MaxInferenceUnits` bidang dalam respons. Untuk kode sampel, lihat [Menjelaskan model (SDK)](md-describing-model-sdk.md). 

## Zona Ketersediaan
<a name="running-model-availability-zones"></a>

Amazon Rekognition Custom Labels mendistribusikan unit inferensi di beberapa Availability Zone dalam AWS suatu Wilayah untuk meningkatkan ketersediaan. Untuk informasi selengkapnya, lihat [Availability Zone](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/#Availability_Zones). Untuk membantu melindungi model produksi Anda dari pemadaman Availability Zone dan kegagalan unit inferensi, mulailah model produksi Anda dengan setidaknya dua unit inferensi. 

Jika terjadi pemadaman Availability Zone, semua unit inferensi di Availability Zone tidak tersedia dan kapasitas model berkurang. Panggilan ke [DetectCustomLabels](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels)didistribusikan kembali di seluruh unit inferensi yang tersisa. Panggilan tersebut berhasil jika tidak melebihi Transaksi Per Detik (TPS) yang didukung dari unit inferensi yang tersisa. Setelah AWS memperbaiki Availability Zone, unit inferensi dimulai ulang, dan kapasitas penuh dipulihkan. 

Jika unit inferensi tunggal gagal, Label Kustom Rekognition Amazon secara otomatis memulai unit inferensi baru di Availability Zone yang sama. Kapasitas model dikurangi sampai unit inferensi baru dimulai.

# 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);
           }
   
           
   
       }
   
   }
   ```

------

# Menghentikan model Label Kustom Rekognition Amazon
<a name="rm-stop"></a>

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

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

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

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

**Untuk menghentikan 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 hentikan.

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

1. Pilih tab **Gunakan model**.

1. 

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

   1. Di bagian **Mulai atau hentikan model**, pilih **Berhenti**.

   1. Dalam kotak dialog **Stop model**, masukkan **stop** untuk mengonfirmasi bahwa Anda ingin menghentikan model.

   1. Pilih **Berhenti** untuk menghentikan model Anda.

------
#### [ Stop 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 Stop** salin kode contoh.

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

------

1. Pilih nama proyek Anda di bagian atas halaman untuk kembali ke halaman ikhtisar proyek.

1. Di bagian **Model**, periksa status model. Model telah berhenti ketika status model **BERHENTI**.

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

Anda menghentikan model dengan memanggil [StopProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StopProjectVersion)API dan meneruskan Amazon Resource Name (ARN) model dalam parameter `ProjectVersionArn` input. 

Seorang model mungkin membutuhkan waktu beberapa saat untuk berhenti. Untuk memeriksa status saat ini, gunakan`DescribeProjectVersions`. 

**Untuk menghentikan 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 menghentikan model yang sedang berjalan.

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

   Ubah nilai `project-version-arn` ke ARN dari versi model yang ingin Anda hentikan.

   ```
   aws rekognition stop-project-version --project-version-arn "model arn" \
     --profile custom-labels-access
   ```

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

   Contoh berikut menghentikan model yang sudah berjalan.

   Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang berisi model yang ingin Anda hentikan.
   + `model_arn`— ARN dari model yang ingin Anda hentikan.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   
   """
   Purpose
   Shows how to stop a running Amazon Lookout for Vision model.
   """
   
   import argparse
   import logging
   import time
   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.
       """
   
       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]
   
       # Get the model status.
       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"]
   
       # No model found.
       logger.exception("Model %s not found.", model_arn)
       raise Exception("Model %s not found.", model_arn)
   
   
   def stop_model(rek_client, project_arn, model_arn):
       """
       Stops a running Amazon Rekognition Custom Labels Model.
       :param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
       :param project_arn: The ARN of the project that you want to stop running.
       :param model_arn:  The ARN of the model (ProjectVersion) that you want to stop running.
       """
   
       logger.info("Stopping model: %s", model_arn)
   
       try:
           # Stop the model.
           response=rek_client.stop_project_version(ProjectVersionArn=model_arn)
   
           logger.info("Status: %s", response['Status'])
   
           # stops when hosting has stopped or failure.
           status = ""
           finished = False
   
           while finished is False:
   
               status=get_model_status(rek_client, project_arn, model_arn)
   
               if status == "STOPPING":
                   logger.info("Model stopping in progress...")
                   time.sleep(10)
                   continue
               if status == "STOPPED":
                   logger.info("Model is not running.")
                   finished = True
                   continue
   
               error_message = f"Error stopping model. Unexepected state: {status}"
               logger.exception(error_message)
               raise Exception(error_message)
   
           logger.info("finished. Status %s", status)
           return status
   
       except ClientError as err:
           logger.exception("Couldn't stop 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 stop."
       )
       parser.add_argument(
           "model_arn", help="The ARN of the model that you want to stop."
       )
   
   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()
   
           # Stop the model.
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
   
           status=stop_model(rekognition_client, args.project_arn, args.model_arn)
   
           print(f"Finished stopping model: {args.model_arn}")
           print(f"Status: {status}")
   
       except ClientError as err:
           logger.exception("Problem stopping model:%s",err)
           print(f"Failed to stop model: {err}")
       
       except Exception as err:
           logger.exception("Problem stopping model:%s", err)
           print(f"Failed to stop model: {err}")
   
   if __name__ == "__main__":
       main()
   ```

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

   Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang berisi model yang ingin Anda hentikan.
   + `model_arn`— ARN dari model yang ingin Anda hentikan.

   ```
   /*
      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.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.StopProjectVersionRequest;
   import software.amazon.awssdk.services.rekognition.model.StopProjectVersionResponse;
   
   
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   public class StopModel {
   
       public static final Logger logger = Logger.getLogger(StopModel.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 stopMyModel(RekognitionClient rekClient, String projectArn, String modelArn)
               throws Exception, RekognitionException {
   
           try {
   
               logger.log(Level.INFO, "Stopping {0}", modelArn);
   
               StopProjectVersionRequest stopProjectVersionRequest = StopProjectVersionRequest.builder()
                       .projectVersionArn(modelArn).build();
   
               StopProjectVersionResponse response = rekClient.stopProjectVersion(stopProjectVersionRequest);
   
               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 stops
   
               DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
                       .projectArn(projectArn).versionNames(versionName).build();
   
               boolean stopped = false;
   
               // Wait until create finishes
   
               do {
   
                   DescribeProjectVersionsResponse describeProjectVersionsResponse = rekClient
                           .describeProjectVersions(describeProjectVersionsRequest);
   
                   for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
                           .projectVersionDescriptions()) {
   
                       ProjectVersionStatus status = projectVersionDescription.status();
   
                       logger.log(Level.INFO, "stopping model: {0} ", modelArn);
   
                       switch (status) {
   
                       case STOPPED:
                           logger.log(Level.INFO, "Model stopped");
                           stopped = true;
                           break;
   
                       case STOPPING:
                           Thread.sleep(5000);
                           break;
   
                       case FAILED:
                           String error = "Model stopping failed: " + projectVersionDescription.statusAsString() + " "
                                   + projectVersionDescription.statusMessage() + " " + modelArn;
                           logger.log(Level.SEVERE, error);
                           throw new Exception(error);
   
                       default:
                           String unexpectedError = "Unexpected stopping state: "
                                   + projectVersionDescription.statusAsString() + " "
                                   + projectVersionDescription.statusMessage() + " " + modelArn;
                           logger.log(Level.SEVERE, unexpectedError);
                           throw new Exception(unexpectedError);
                       }
                   }
   
               } while (stopped == false);
   
           } catch (RekognitionException e) {
               logger.log(Level.SEVERE, "Could not stop model: {0}", e.getMessage());
               throw e;
           }
   
       }
   
       public static void main(String[] args) {
   
           String modelArn = null;
           String projectArn = null;
   
   
           final String USAGE = "\n" + "Usage: " + "<project_name> <version_name>\n\n" + "Where:\n"
                   + "   project_arn - The ARN of the project that contains the model that you want to stop. \n\n"
                   + "   model_arn - The ARN of the model version that you want to stop.\n\n";
   
           if (args.length != 2) {
               System.out.println(USAGE);
               System.exit(1);
           }
   
           projectArn = args[0];
           modelArn = args[1];
   
   
           try {
   
               // Get the Rekognition client.
               RekognitionClient rekClient = RekognitionClient.builder()
               .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
               .region(Region.US_WEST_2)
               .build();
   
               // Stop model
               stopMyModel(rekClient, projectArn, modelArn);
   
               System.out.println(String.format("Model stopped: %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);
           }
   
       }
   
   }
   ```

------

# Melaporkan durasi berjalan dan unit inferensi yang digunakan
<a name="rm-model-usage"></a>

Jika Anda melatih dan memulai model setelah Agustus 2022, Anda dapat menggunakan CloudWatch metrik `InServiceInferenceUnits` Amazon untuk menentukan berapa jam model berjalan dan jumlah [unit inferensi](running-model.md#running-model-inference-units) yang digunakan selama jam-jam tersebut.

**catatan**  
Jika Anda hanya memiliki satu model di suatu AWS wilayah, Anda juga bisa mendapatkan waktu berjalan untuk model tersebut dengan melacak panggilan yang berhasil ke `StartprojectVersion` dan `StopProjectVersion` masuk CloudWatch. Pendekatan ini tidak berfungsi jika Anda menjalankan lebih dari satu model di AWS Wilayah karena metrik tidak menyertakan informasi tentang model.  
Atau, Anda dapat menggunakan AWS CloudTrail untuk melacak panggilan ke `StartProjectVersion` dan `StopProjectVersion` (yang mencakup model ARN di `requestParameters` bidang [riwayat acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html?icmpid=docs_console_unmapped)). CloudTrail acara dibatasi hingga 90 hari, tetapi Anda dapat menyimpan acara hingga 7 tahun di [CloudTrailDanau](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

Prosedur berikut membuat grafik untuk yang berikut:
+ Jumlah jam yang dijalankan oleh model.
+ Jumlah unit inferensi yang digunakan model.

Anda dapat memilih jangka waktu hingga 15 bulan yang lalu. Untuk informasi selengkapnya tentang retensi metrik, lihat [Retensi metrik](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#metrics-retention). 

**Untuk menentukan durasi model dan unit inferensi yang digunakan untuk model**

1. Masuk ke Konsol Manajemen AWS dan buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. **Di panel navigasi kiri, pilih **Semua metrik di bawah Metrik**.**

1. Di panel konten, pilih tab **Sumber**.

1. Pastikan tombol **Dashboard** dipilih.

1. Di kotak edit, ganti JSON yang ada dengan JSON berikut. Ubah nilai berikut:
   + `Project_Name`— Proyek yang berisi model yang ingin Anda grafik.
   + `Version_Name`— Versi model yang ingin Anda grafik.
   + `AWS_Region`— AWS Wilayah yang berisi model. Pastikan CloudWatch konsol berada di AWS Wilayah yang sama, dengan memeriksa pemilih Wilayah di bilah navigasi di bagian atas halaman. Perbarui seperlunya.

   ```
   {
       "sparkline": true,
       "metrics": [
           [
               {
                   "expression": "SUM(m1)*m1",
                   "label": "Inference units used",
                   "id": "e1"
               }
           ],
           [
               {
                   "expression": "DATAPOINT_COUNT(m1)*m1/m1",
                   "label": "Hours running",
                   "id": "e2"
               }
           ],
           [
               "AWS/Rekognition",
               "InServiceInferenceUnits",
               "ProjectName",
               "Project_Name",
               "VersionName",
               "Version_Name",
               {
                   "id": "m1",
                   "visible": false
               }
           ]
       ],
       "view": "singleValue",
       "stacked": false,
       "region": "AWS_Region",
       "stat": "Average",
       "period": 3600,
       "title": "Hours run and inference units used"
   }
   ```

1. Pilih **Perbarui**.

1. Di bagian atas halaman, pilih garis waktu. Anda akan melihat angka untuk unit inferensi yang digunakan dan jam berjalan selama timeline. Kesenjangan dalam grafik menunjukkan waktu ketika model tidak berjalan. Tangkapan layar konsol di bawah ini menunjukkan unit inferensi yang digunakan dan jam berjalan selama periode waktu, dengan waktu khusus 2 minggu ditetapkan, dengan nilai tertinggi 214 unit inferensi dan 209 jam berjalan.  
![\[Grafik yang menunjukkan unit inferensi.\]](http://docs.aws.amazon.com/id_id/rekognition/latest/customlabels-dg/images/model-duration.png)

1. (Opsional) Tambahkan grafik ke dasbor dengan memilih **Tindakan** dan kemudian **Tambahkan ke dasbor - ditingkatkan**.