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à.
SageMaker Guida alla risoluzione dei problemi di Python SDK
Puoi usare SageMaker Python SDK per interagire con Amazon SageMaker all'interno dei tuoi script Python o dei notebook Jupyter. Nonostante SDK offra un flusso di lavoro semplificato, potresti riscontrare varie eccezioni o errori. Questa guida alla risoluzione dei problemi ha lo scopo di aiutarti a comprendere e risolvere i problemi più comuni che potrebbero sorgere quando lavori con SageMaker PythonSDK. Copre scenari relativi alla creazione di lavori di formazione, processi di elaborazione ed endpoint, nonché pratiche generali di gestione delle eccezioni. Seguendo le indicazioni fornite nelle sezioni seguenti, è possibile diagnosticare e risolvere in modo efficace i problemi più comuni.
SageMaker Python SDK funge da wrapper per le operazioni di basso livello. SageMaker API Il IAM ruolo che stai utilizzando per accedere SDK deve essere in grado di accedere alle operazioni sottostanti. Aggiungere la SageMaker Full Access Policy al tuo IAM ruolo è il modo più semplice per assicurarti di avere i permessi per usare Python. SageMaker SDK Per ulteriori informazioni sulla politica di accesso SageMaker completo, consulta Amazon SageMaker Full Access.
Sebbene meno conveniente, fornire autorizzazioni più granulari è un approccio sicuro all'utilizzo di. SDK Ciascuna delle seguenti sezioni contiene informazioni sulle autorizzazioni richieste.
Crea un Job di formazione
Importante
Se non stai aggiungendo la politica di accesso SageMaker completo al tuo IAM ruolo, deve disporre delle autorizzazioni per chiamare le DescribeTrainingJoboperazioni CreateTrainingJoband.
Richiede inoltre le autorizzazioni per:
-
Accedere ai dati di input/output in S3
-
Esegui EC2 istanze Amazon
-
Parametri dei log CloudWatch
Se il tuo processo di SageMaker formazione deve accedere alle risorse in un Amazon Virtual Private Cloud (AmazonVPC), assicurati di configurare le VPC impostazioni e i gruppi di sicurezza necessari quando crei il processo di elaborazione.
Quando crei un lavoro di formazione, potresti imbatterti in botocore.exceptions.ClientError
o ValueError
eccezioni.
Aggiornare un Training Job
Importante
Se non stai aggiungendo la SageMaker Managed Policy al tuo IAM ruolo, devi concedere al ruolo l'accesso alle seguenti autorizzazioni:
-
s3:GetObject
— Fornisce le autorizzazioni per leggere gli artefatti del modello dai bucket Amazon S3 -
s3:PutObject
— Se applicabile, fornisce le autorizzazioni per scrivere aggiornamenti agli artefatti del modello -
iam:GetRole
— Fornisce le autorizzazioni per ottenere informazioni sul IAM ruolo necessario per eseguire il processo di formazione -
sagemaker:UpdateTrainingJob
— Fornisce le autorizzazioni per modificare i lavori di formazione utilizzando l'UpdateTrainingJoboperazione. -
logs:PutLogEvents
— Fornisce le autorizzazioni per scrivere log nei log di Amazon durante il CloudWatch processo di aggiornamento.
Quando aggiorni un processo di formazione, potresti imbatterti in un o unbotocore.exceptions.ParamValidationError
. botocore.exceptions.ClientError
Creare un Job di elaborazione
Importante
Se non stai aggiungendo la SageMaker Managed Policy al tuo IAM ruolo, devi concedere al ruolo l'accesso alle seguenti autorizzazioni:
-
sagemaker:CreateProcessingJob
— Fornisce le autorizzazioni per creare un processo di elaborazione -
sagemaker:DescribeProcessingJob
— Fornisce le autorizzazioni per ottenere informazioni su un processo di elaborazione -
s3:GetObject
— Fornisce le autorizzazioni per leggere gli artefatti del modello dai bucket Amazon S3 -
s3:PutObject
— Se applicabile, fornisce le autorizzazioni per scrivere aggiornamenti agli artefatti del modello -
logs:PutLogEvents
— Fornisce le autorizzazioni per scrivere i log nei log di Amazon durante il CloudWatch processo di aggiornamento.
Se il tuo processo di elaborazione deve accedere a risorse all'interno di un Amazon Virtual Private Cloud, devi specificarlo security_group_ids
e subnets
all'interno dello stimatore che crei. Per un esempio di come accedere alle risorse all'interno di AmazonVPC, consulta Secure Training and Inference with VPC
Quando crei un processo di elaborazione, potresti imbatterti in un ValueError
UnexpectedStatusException
, un o unbotocore.exceptions.ClientError
.
Creazione di un endpoint
Importante
Se non stai aggiungendo la Politica SageMaker gestita al tuo IAM ruolo, devi concedere al ruolo l'accesso alle seguenti autorizzazioni:
-
sagemaker:CreateModel
— Fornisce le autorizzazioni per creare il modello che stai distribuendo sull'endpoint -
sagemaker:CreateEndpointConfig
— Fornisce le autorizzazioni per creare una configurazione dell'endpoint che definisce il comportamento dell'endpoint, ad esempio il tipo e il numero di istanze -
sagemaker:CreateEndpoint
— Fornisce le autorizzazioni per creare la configurazione dell'endpoint utilizzando l'endpoint specificato
Inoltre, sono necessarie le autorizzazioni per descrivere ed elencare i modelli, gli endpoint e le configurazioni degli endpoint.
Quando crei un endpoint, potresti imbatterti in un o un. UnexpectedStatusException
botocore.exceptions.ClientError
Di seguito è riportato un esempio di: UnexpectedStatusException
UnexpectedStatusException: Error hosting endpoint gpt2-large-2024-07-03-15-28-20-448: Failed. Reason: The primary container for production variant AllTraffic did not pass the ping health check. Please check CloudWatch logs for this endpoint.. Try changing the instance type or reference the troubleshooting page https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-troubleshooting.html
Il messaggio di errore ti dice di controllare i CloudWatch log di Amazon. Usa la seguente procedura per controllare i log.
Per controllare i registri CloudWatch
-
Accedi alla SageMaker console Amazon
. -
Nella barra di navigazione a sinistra, scegli Endpoints.
-
Seleziona l'endpoint che ha avuto esito negativo.
-
Nella pagina dei dettagli dell'endpoint, scegli Visualizza accessi. CloudWatch
Dopo aver trovato i log, cerca il problema specifico. Di seguito è riportato un esempio di CloudWatch registro:
NotImplementedError: gptq quantization is not supported for AutoModel, you can try to quantize it with text-generation-server quantize ORIGINAL_MODEL_ID NEW_MODEL_ID
Per informazioni sulla risoluzione dibotocore.exceptions.ClientError
, vedereLinee guida sulla gestione delle eccezioni.
Aggiornare un endpoint
Importante
Se non stai aggiungendo la SageMaker Managed Policy al tuo IAM ruolo, devi concedere al ruolo l'accesso alle seguenti autorizzazioni:
-
sagemaker:UpdateEndpoint
— Fornisce le autorizzazioni per aggiornare un endpoint esistente, ad esempio per modificare il tipo o il conteggio delle istanze dell'endpoint -
sagemaker:UpdateEndpointWeightsAndCapacities
— Fornisce le autorizzazioni per creare una configurazione dell'endpoint che definisce il comportamento dell'endpoint, ad esempio il tipo e il numero di istanze -
sagemaker:DescribeEndpoint
— Fornisce le autorizzazioni per descrivere la configurazione corrente dell'endpoint, che è spesso richiesta prima dell'aggiornamento
Inoltre, potrebbero essere necessarie le autorizzazioni per descrivere ed elencare gli endpoint e le configurazioni degli endpoint.
Puoi imbatterti in un file come ValueError
il seguente:
ValueError: Endpoint with name 'abc' does not exist; please use an existing endpoint name
L'errore indica che il nome dell'endpoint specificato non corrisponde a nessun endpoint esistente nel tuo AWS account. Utilizza la seguente procedura per risolvere l'errore:
Per risolvere un errore di valore
-
Usa il codice seguente per elencare tutti i tuoi endpoint:
import sagemaker sagemaker_session = sagemaker.Session() # List all endpoints endpoints = sagemaker_session.sagemaker_client.list_endpoints() print(endpoints)
-
Verifica che l'endpoint che hai specificato per la
update_endpoint
funzione sia nell'elenco. -
Assicurati di operare nella AWS regione corretta. SageMaker gli endpoint sono specifici della regione.
-
Assicurati che il IAM ruolo che stai utilizzando disponga delle autorizzazioni per elencare, descrivere o aggiornare gli endpoint.
Linee guida sulla gestione delle eccezioni
Se non riesci a trovare informazioni che ti aiutino a risolvere il tuo problema specifico, i seguenti esempi di codice possono darti ispirazione su come gestire le eccezioni.
Di seguito è riportato un esempio generico che è possibile utilizzare per catturare la maggior parte delle eccezioni.
import sagemaker from botocore.exceptions import ParamValidationError, ClientError try: sagemaker.some_api_call(SomeParam='some_param') except ClientError as error: # Put your error handling logic here raise error except ParamValidationError as error: raise ValueError('The parameters you provided are incorrect: {}'.format(error)) except ValueError as error: # Catch generic ValueError exceptions
Esistono due categorie principali di errori:
-
Errori specifici del SageMaker Python SDK
-
Errori specifici del servizio sottostante AWS
Gli errori specifici del AWS servizio sottostante sono sempre botocore.exceptions.ClientError
eccezioni. botocore.exceptions.ClientError
Ha un Error
oggetto e un ResponseMetadata
oggetto. Quanto segue mostra il modello di un errore del client:
{ 'Error': { 'Code': 'SomeServiceException', 'Message': 'Details/context around the exception or error' }, 'ResponseMetadata': { 'RequestId': '1234567890ABCDEF', 'HostId': 'host ID data will appear here as a hash', 'HTTPStatusCode': 400, 'HTTPHeaders': {'header metadata key/values will appear here'}, 'RetryAttempts': 0 } }
Di seguito è riportato un esempio della gestione specifica degli errori che è possibile eseguire conbotocore.exceptions.ClientError
:
try: sagemaker.some_api_call(SomeParam='some_param') except botocore.exceptions.ClientError as err: if err.response['Error']['Code'] == 'InternalError': # Generic error # We grab the message, request ID, and HTTP code to give to customer support print('Error Message: {}'.format(err.response['Error']['Message'])) print('Request ID: {}'.format(err.response['ResponseMetadata']['RequestId'])) print('Http code: {}'.format(err.response['ResponseMetadata']['HTTPStatusCode'])) raise err else if err.response['Error']['Code'] == 'ValidationException': raise ValueError(err.response['Error']['Message'])
Per ulteriori informazioni su come gestire le ClientError
eccezioni, consulta Analisi delle risposte agli errori e rilevamento delle eccezioni da. Servizi AWS