

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione di un modello Amazon Rekognition Custom Labels addestrato
<a name="running-model"></a>

Quando sei soddisfatto delle prestazioni del modello, puoi iniziare a usarlo. È possibile avviare e arrestare un modello utilizzando la console o l' AWS SDK. La console include anche esempi di operazioni SDK che è possibile utilizzare.

**Topics**
+ [Unità di inferenza](#running-model-inference-units)
+ [Zone di disponibilità](#running-model-availability-zones)
+ [Avvio di un modello Amazon Rekognition Custom Labels](rm-start.md)
+ [Amazon Rekognition Custom Labels](rm-stop.md)
+ [Segnalazione della durata dell'esecuzione e delle unità di inferenza utilizzate](rm-model-usage.md)

## Unità di inferenza
<a name="running-model-inference-units"></a>

Quando si avvia il modello, si specifica il numero di risorse di calcolo, note come unità di inferenza, utilizzate dal modello. 

**Importante**  
Ti viene addebitato il numero di ore di esecuzione del modello e il numero di unità di inferenza utilizzate dal modello durante l'esecuzione, in base a come configuri l'esecuzione del modello. Ad esempio, se avvii il modello con due unità di inferenza e lo utilizzi per 8 ore, ti verranno addebitate 16 ore di inferenza (8 ore di esecuzione \$1 due unità di inferenza). Per ulteriori informazioni, consulta [Ore di inferenza](https://aws.amazon.com/rekognition/pricing/#Amazon_Rekognition_Custom_Labels_pricing). Se non [interrompi il modello](rm-stop.md) esplicitamente, ti verrà addebitato un costo anche se non stai analizzando attivamente le immagini con il modello. 

Le transazioni al secondo (TPS) supportate da un'unica unità di inferenza sono influenzate da quanto segue.
+ Un modello che rileva etichette a livello di immagine (classificazione) ha generalmente un TPS più elevato rispetto a un modello che rileva e localizza oggetti con riquadri di delimitazione (rilevamento di oggetti).
+ La complessità del modello.
+ Un'immagine a risoluzione più elevata richiede più tempo per l'analisi.
+ Un numero maggiore di oggetti in un'immagine richiede più tempo per l'analisi.
+ Le immagini più piccole vengono analizzate più velocemente delle immagini più grandi. 
+ Un'immagine trasmessa come byte di immagine viene analizzata più velocemente rispetto al primo caricamento dell'immagine in un bucket Amazon S3 e quindi al riferimento all'immagine caricata. Le immagini trasmesse come byte di immagine devono avere dimensioni inferiori a 4,0 MB. Si consiglia di utilizzare i byte di immagine per l'elaborazione delle immagini quasi in tempo reale e quando le dimensioni dell'immagine sono inferiori a 4,0 MB. Ad esempio, immagini acquisite da una telecamera IP.
+ L'elaborazione delle immagini archiviate in un bucket Amazon S3 è più rapida rispetto al download delle immagini, alla conversione in byte di immagine e al passaggio dei byte dell'immagine per l'analisi.
+ L'analisi di un'immagine già archiviata in un bucket Amazon S3 è probabilmente più veloce dell'analisi della stessa immagine trasmessa come byte di immagine. Ciò è particolarmente vero se la dimensione dell'immagine è maggiore.

Se il numero di chiamate a `DetectCustomLabels` supera il TPS massimo supportato dalla somma delle unità di inferenza utilizzate da un modello, Amazon Rekognition Custom Labels restituisce un'eccezione `ProvisionedThroughputExceededException`. 

### Gestione della velocità effettiva con unità di inferenza
<a name="running-model-manage-throughput"></a>

È possibile aumentare o diminuire la velocità effettiva del modello in base alle esigenze dell'applicazione. Per aumentare la velocità effettiva, utilizzate unità di inferenza aggiuntive. Ogni unità di inferenza aggiuntiva aumenta la velocità di elaborazione di un'unità di inferenza. Per informazioni sul calcolo del numero di unità di inferenza necessarie, consulta [Calcolare le unità di inferenza](https://aws.amazon.com/blogs/machine-learning/calculate-inference-units-for-an-amazon-rekognition-custom-labels-model/) per i modelli Amazon Rekognition Custom Labels e Amazon Lookout for Vision. Se desideri modificare la velocità di trasmissione supportata dal modello, sono disponibili due opzioni: 

#### Aggiungi o rimuovi manualmente le unità di inferenza
<a name="running-model-manual-inference-units"></a>

[Interrompi](rm-stop.md) il modello e [riavvia](rm-start.md) lo stesso con il numero richiesto di unità di inferenza. Lo svantaggio di questo approccio è che il modello non può ricevere richieste durante il riavvio e non può essere utilizzato per gestire i picchi di domanda. Utilizza questo approccio se il tuo modello ha una velocità effettiva costante e il tuo caso d'uso può tollerare 10-20 minuti di inattività. Un esempio potrebbe essere se desideri eseguire chiamate in batch al modello utilizzando una pianificazione settimanale. 

#### Unità di inferenza con ridimensionamento automatico
<a name="running-model-auto-scale-inference-units"></a>

Se il tuo modello deve far fronte ai picchi di domanda, Amazon Rekognition Custom Labels può ridimensionare automaticamente il numero di unità di inferenza utilizzate dal modello. Con l'aumento della domanda, Amazon Rekognition Custom Labels aggiunge unità di inferenza aggiuntive al modello e le rimuove quando la domanda diminuisce. 

Per consentire ad Amazon Rekognition Custom Labels di ridimensionare automaticamente le unità di inferenza per un modello, [avvia](rm-start.md) il modello e imposta il numero massimo di unità di inferenza che può utilizzare utilizzando il parametro `MaxInferenceUnits`. L'impostazione di un numero massimo di unità di inferenza consente di gestire i costi di esecuzione del modello limitando il numero di unità di inferenza disponibili. Se non specifichi un numero massimo di unità, Amazon Rekognition Custom Labels non ridimensionerà automaticamente il modello, ma utilizzerà solo il numero di unità di inferenza con cui hai iniziato. Per informazioni sul numero massimo di unità di inferenza, vedere [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/rekognition.html#limits_rekognition). 

È inoltre possibile specificare un numero minimo di unità di inferenza utilizzando il parametro `MinInferenceUnits`. Ciò consente di specificare la velocità effettiva minimo per il modello, dove una singola unità di inferenza rappresenta 1 ora di tempo di elaborazione.

**Nota**  
Non puoi impostare il numero massimo di unità di inferenza con la console Amazon Rekognition Custom Labels. Specificate invece il parametro di input `MaxInferenceUnits` per l'operazione `StartProjectVersion`.

Amazon Rekognition Custom Labels fornisce le seguenti metriche di CloudWatch Amazon Logs che puoi utilizzare per determinare lo stato corrente del ridimensionamento automatico di un modello.


| Metrica | Description | 
| --- | --- | 
|  `DesiredInferenceUnits`  |  Il numero di unità di inferenza a cui Amazon Rekognition Custom Labels viene ridimensionato verso l'alto o verso il basso.   | 
|  `InServiceInferenceUnits`  |  Il numero di unità di inferenza utilizzate dal modello.  | 

Se `DesiredInferenceUnits` = `InServiceInferenceUnits`, al momento Amazon Rekognition Custom Labels non sta ridimensionando il numero di unità di inferenza. 

Se `DesiredInferenceUnits` > `InServiceInferenceUnits`, Amazon Rekognition Custom Labels sta ridimensionando il numero di unità di inferenza fino al valore di `DesiredInferenceUnits`. 

Se `DesiredInferenceUnits` < `InServiceInferenceUnits`, Amazon Rekognition Custom Labels sta ridimensionando il numero di unità di inferenza fino al valore di `DesiredInferenceUnits`. 

 [Per ulteriori informazioni sui parametri restituiti da Amazon Rekognition Custom Labels e sulle dimensioni di filtraggio, consulta Metrics for Rekognition. CloudWatch ](https://docs.aws.amazon.com/rekognition/latest/dg/cloudwatch-metricsdim.html)

Per scoprire il numero massimo di unità di inferenza richieste per un modello, chiama `DescribeProjectsVersion` e controlla il campo `MaxInferenceUnits` nella risposta. Per il codice di esempio, consulta [Descrizione di un modello (SDK)](md-describing-model-sdk.md). 

## Zone di disponibilità
<a name="running-model-availability-zones"></a>

Amazon Rekognition Custom Labels distribuisce unità di inferenza su più zone di disponibilità all'interno di una regione AWS per fornire una maggiore disponibilità. Per ulteriori informazioni, consulta [Zone di disponibilità](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/#Availability_Zones). Per proteggere i modelli di produzione da interruzioni della zona di disponibilità e da malfunzionamento delle unità di inferenza, avvia i modelli di produzione con almeno due unità di inferenza. 

Se si verifica un'interruzione della zona di disponibilità, tutte le unità di inferenza nella zona di disponibilità non sono disponibili e la capacità del modello viene ridotta. Le chiamate a vengono ridistribuite tra le unità di inferenza rimanenti. [DetectCustomLabels](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels) Tali chiamate hanno esito positivo se non superano le transazioni per secondi (TPS) supportate delle unità di inferenza rimanenti. Dopo che AWS ha ripristinato la zona di disponibilità, le unità di inferenza vengono riavviate e viene ripristinata la piena capacità. 

Se una singola unità di inferenza non funziona, Amazon Rekognition Custom Labels avvia automaticamente una nuova unità di inferenza nella stessa zona di disponibilità. La capacità del modello viene ridotta fino all'avvio della nuova unità di inferenza.

# Avvio di un modello Amazon Rekognition Custom Labels
<a name="rm-start"></a>

Puoi iniziare a eseguire un modello Amazon Rekognition Custom Labels utilizzando la console o utilizzando l'operazione. [StartProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartProjectVersion)

**Importante**  
I costi sono calcolati in base al numero di ore di funzionamento del modello e al numero di unità di inferenza utilizzate dal modello durante l'esecuzione. Per ulteriori informazioni, consulta [Esecuzione di un modello Amazon Rekognition Custom Labels addestrato](running-model.md).

Il completamento dell'avvio di un modello potrebbe richiedere alcuni minuti. Per verificare lo stato attuale della preparazione del modello, consulta la pagina dei dettagli del progetto o dell'uso. [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)

Dopo aver avviato il modello, si utilizza [DetectCustomLabels](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels), per analizzare le immagini utilizzando il modello. Per ulteriori informazioni, consulta [Analisi di un'immagine con un modello addestrato](detecting-custom-labels.md). La console fornisce anche un codice di esempio per chiamare `DetectCustomLabels`. 

**Topics**
+ [Amazon Rekognition Custom Labels (console)](#rm-start-console)
+ [Avvio di un modello Amazon Rekognition Custom Labels (SDK)](#rm-start-sdk)

## Amazon Rekognition Custom Labels (console)
<a name="rm-start-console"></a>

Utilizza la seguente procedura per iniziare a eseguire un modello Amazon Rekognition Custom Labels con la console. È possibile avviare il modello direttamente dalla console o utilizzare il codice AWS SDK fornito dalla console. 

**Per avviare un modello (console)**

1. Apri la console Amazon Rekognition all'indirizzo. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Scegli **Usa etichette personalizzate**.

1. Scegli **Avvia**. 

1. Nel pannello di navigazione a sinistra, scegli **Progetti**.

1. Nella pagina delle risorse **Progetti**, scegli il progetto che contiene il modello addestrato che desideri avviare.

1. Nella sezione **Modelli**, scegli il modello per cui avviare l'avvio. 

1. Scegli la scheda **Usa modello**.

1. Esegui una delle seguenti operazioni:

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

   Nella sezione **Avvia o interrompi modello**, procedi come segue:

   1. Seleziona il numero di unità di inferenza da utilizzare. Per ulteriori informazioni, consulta [Esecuzione di un modello Amazon Rekognition Custom Labels addestrato](running-model.md).

   1. Scegli **Avvia**.

   1. Nella finestra di dialogo **Avvia modello**, scegli **Avvia**. 

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

   Nella sezione **Usa il modello**, procedi come segue:

   1. Scegli **Codice API**.

   1. Scegli **AWS CLI** o **Python**.

   1. In **Avvia modello** copia il codice di esempio.

   1. Usa il codice di esempio per avviare il tuo modello. Per ulteriori informazioni, consulta [Avvio di un modello Amazon Rekognition Custom Labels (SDK)](#rm-start-sdk).

------

1. Per tornare alla pagina di panoramica del progetto, scegli il nome del progetto nella parte superiore della pagina.

1. Nella sezione **Modello**, controlla lo stato del modello. Quando lo stato del modello è **IN ESECUZIONE**, è possibile utilizzare il modello per analizzare le immagini. Per ulteriori informazioni, consulta [Analisi di un'immagine con un modello addestrato](detecting-custom-labels.md).

## Avvio di un modello Amazon Rekognition Custom Labels (SDK)
<a name="rm-start-sdk"></a>

Puoi avviare un modello chiamando l'[StartProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StartProjectVersion)API e passando l'Amazon Resource Name (ARN) del modello nel parametro di `ProjectVersionArn` input. Specifica anche il numero di unità di inferenza da utilizzare. Per ulteriori informazioni, consulta [Esecuzione di un modello Amazon Rekognition Custom Labels addestrato](running-model.md).

L'avvio di un modello potrebbe richiedere alcuni istanti. Gli esempi Python e Java in questo argomento utilizzano waiter per attendere il completamento della addestramento. Un waiter è un metodo di utility che esegue il polling per il verificarsi di uno stato particolare. In alternativa, puoi verificare lo stato attuale [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)chiamando. 

**Per avviare un modello (SDK)**

1. Se non l'hai già fatto, installa e configura il AWS CLI e il AWS SDKs. Per ulteriori informazioni, consulta [Passaggio 4: configura e AWS CLI AWS SDKs](su-awscli-sdk.md).

1. Utilizza il seguente codice di esempio per avviare un modello.

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

   Modifica il valore di `project-version-arn` per l’ARN del set di dati che desideri avviare. Modifica il valore di `--min-inference-units` specificando il numero di unità di inferenza che desidera utilizzare. Facoltativamente, modifica `--max-inference-units` al numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per ridimensionare automaticamente il modello.

   ```
   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 ]

   Fornisci i seguenti parametri di riga di comando:
   + `project_arn` — l'ARN del progetto che contiene il modello che desideri avviare.
   + `model_arn` — l'ARN del modello che desideri avviare.
   + `min_inference_units` — il numero di unità di inferenza che desideri utilizzare.
   + (Facoltativo) `--max_inference_units` Il numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per scalare automaticamente il modello. 

   ```
   # 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 ]

   Fornisci i seguenti parametri di riga di comando:
   + `project_arn` — l'ARN del progetto che contiene il modello che desideri avviare.
   + `model_arn` — l'ARN del modello che desideri avviare.
   + `min_inference_units` — il numero di unità di inferenza che desideri utilizzare.
   + (Facoltativo)`max_inference_units` – il numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per ridimensionare automaticamente il modello. Se non specifichi un valore, il ridimensionamento automatico non viene eseguito.

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

------

# Amazon Rekognition Custom Labels
<a name="rm-stop"></a>

Puoi interrompere l'esecuzione di un modello Amazon Rekognition Custom Labels utilizzando la console o utilizzando l'operazione. [StopProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StopProjectVersion)

**Topics**
+ [Interruzione di un modello Amazon Rekognition Custom Labels (console)](#rm-stop-console)
+ [Interruzione di un modello Amazon Rekognition Custom Labels (SDK)](#rm-stop-sdk)

## Interruzione di un modello Amazon Rekognition Custom Labels (console)
<a name="rm-stop-console"></a>

Utilizza la procedura seguente per interrompere l'esecuzione di un modello Amazon Rekognition Custom Labels con la console. Puoi interrompere il modello direttamente dalla console o utilizzare il codice AWS SDK fornito dalla console. 

**Per interrompere un modello (console)**

1. Apri la console Amazon Rekognition all'indirizzo. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Scegli **Usa etichette personalizzate**.

1. Scegli **Avvia**. 

1. Nel pannello di navigazione a sinistra, scegli **Progetti**.

1. Nella pagina **Progetti**, scegli il progetto contenente il modello addestrato che desideri interrompere.

1. Nella sezione **Modelli**, scegli il modello che desideri interrompere. 

1. Scegli la scheda **Usa modello**.

1. 

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

   1. Nella sezione **Avvia o interrompi il modello** scegli **Interrompi**.

   1. Nella finestra di dialogo **Interrompi modello**, immetti **Interrompi** per confermare che desideri interrompere il modello.

   1. Scegli **Interrompi** per interrompere il modello.

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

   Nella sezione **Usa il modello**, procedi come segue:

   1. Scegli **Codice API**.

   1. Scegli **AWS CLI** o **Python**.

   1. In **Interrompi modello** copia il codice di esempio.

   1. Usa il codice di esempio per interrompere il tuo modello. Per ulteriori informazioni, consulta [Interruzione di un modello Amazon Rekognition Custom Labels (SDK)](#rm-stop-sdk).

------

1. Scegliete il nome del progetto nella parte superiore della pagina per tornare alla pagina di panoramica del progetto.

1. Nella sezione **Modello**, controlla lo stato del modello. Il modello è interrotto quando lo stato del modello è **INTERROTTO**.

## Interruzione di un modello Amazon Rekognition Custom Labels (SDK)
<a name="rm-stop-sdk"></a>

Puoi interrompere un modello chiamando l'[StopProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_StopProjectVersion)API e passando l'Amazon Resource Name (ARN) del modello nel parametro di `ProjectVersionArn` input. 

L'interruzione di un modello potrebbe richiedere alcuni istanti. Per verificare lo stato corrente, usa `DescribeProjectVersions`. 

**Per interrompere un modello (SDK)**

1. Se non l'hai ancora fatto, installa e configura il AWS CLI AWS SDKs. Per ulteriori informazioni, consulta [Passaggio 4: configura e AWS CLI AWS SDKs](su-awscli-sdk.md).

1. Utilizza il codice di esempio seguente per interrompere l'esecuzione di un modello.

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

   Cambia il valore di `project-version-arn` nell'ARN della versione del modello che desideri interrompere.

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

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

   L'esempio seguente interrompe un modello già in esecuzione.

   Fornisci i seguenti parametri di riga di comando:
   + `project_arn` — l'ARN del progetto che contiene il modello che desideri interrompere.
   + `model_arn` — l'ARN del modello che desideri interrompere.

   ```
   # 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 ]

   Fornisci i seguenti parametri di riga di comando:
   + `project_arn` — l'ARN del progetto che contiene il modello che desideri interrompere.
   + `model_arn` — l'ARN del modello che desideri interrompere.

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

------

# Segnalazione della durata dell'esecuzione e delle unità di inferenza utilizzate
<a name="rm-model-usage"></a>

Se hai addestrato e avviato il tuo modello dopo agosto 2022, puoi utilizzare la CloudWatch metrica di `InServiceInferenceUnits` Amazon per determinare per quante ore è stato eseguito un modello e il numero di [unità di inferenza](running-model.md#running-model-inference-units) utilizzate durante quelle ore.

**Nota**  
Se disponi di un solo modello in una AWS regione, puoi anche calcolare il tempo di esecuzione del modello monitorando le chiamate riuscite in entrata `StartprojectVersion` e `StopProjectVersion` in entrata. CloudWatch Questo approccio non funziona se utilizzi più di un modello nella AWS regione, poiché le metriche non includono informazioni sul modello.  
In alternativa, è possibile utilizzare AWS CloudTrail per tenere traccia delle chiamate verso `StartProjectVersion` e `StopProjectVersion` (che include il modello ARN nel `requestParameters` campo della [cronologia degli eventi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html?icmpid=docs_console_unmapped)). CloudTrail gli eventi sono limitati a 90 giorni, ma è possibile memorizzare eventi per un massimo di 7 anni in un [CloudTraillago](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

La procedura seguente crea grafici per quanto segue:
+ Il numero di ore di funzionamento di un modello.
+ Il numero di unità di inferenza utilizzate da un modello.

Puoi scegliere un periodo di tempo precedente fino a 15 mesi. Per ulteriori informazioni sulla conservazione delle metriche, consulta [Conservazione delle metriche](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#metrics-retention). 

**Per determinare la durata del modello e le unità di inferenza utilizzate per un modello**

1. Accedi a Console di gestione AWS e apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Nel riquadro di navigazione, in **Metriche**, scegli **Tutte le metriche**.

1. Nel riquadro inferiore scegli la scheda **Origine**.

1. Assicurati che il pulsante **Pannello di controllo** sia selezionato.

1. Nella scheda, sostituisci il JSON esistente con il seguente JSON. Imposta i valori seguenti:
   + `Project_Name` — Il progetto che contiene il modello per cui creare il grafico.
   + `Version_Name` — La versione del modello che per cui creare il grafico.
   + `AWS_Region`— La AWS regione che contiene il modello. Assicurati che la CloudWatch console si trovi nella stessa AWS regione, controllando il selettore della regione nella barra di navigazione nella parte superiore della pagina. Esegui l'aggiornamento in base alle esigenze.

   ```
   {
       "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. Scegliere **Aggiorna**.

1. Nella parte superiore della pagina, scegli Salva. Dovreste vedere i numeri relativi alle unità di inferenza utilizzate e alle ore contingenti durante la sequenza temporale. Gli spazi vuoti nel grafico indicano i momenti in cui il modello non era in esecuzione. La schermata seguente della console mostra le unità di inferenza utilizzate e le ore di esecuzione in periodi di tempo, con un tempo personalizzato di 2 settimane impostato, con i valori più alti di 214 unità di inferenza e 209 ore di funzionamento.  
![\[Grafico che mostra le unità di inferenza.\]](http://docs.aws.amazon.com/it_it/rekognition/latest/customlabels-dg/images/model-duration.png)

1. (Opzionale) Per aggiungere il grafico a un pannello di controllo, seleziona **Operazioni**, **Aggiungi a pannello di controllo**.