Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
SageMaker Guía de SDK solución de problemas de Python
Puedes usar SageMaker Python SDK para interactuar con Amazon SageMaker en tus scripts de Python o cuadernos de Jupyter. A pesar de SDK proporcionar un flujo de trabajo simplificado, es posible que encuentre varias excepciones o errores. Esta guía de solución de problemas tiene como objetivo ayudarlo a comprender y resolver los problemas comunes que pueden surgir al trabajar con SageMaker PythonSDK. Abarca los escenarios relacionados con la creación de trabajos de formación, trabajos de procesamiento y puntos finales, así como las prácticas generales de gestión de excepciones. Si sigue las instrucciones que se proporcionan en las siguientes secciones, podrá diagnosticar y abordar problemas comunes de forma eficaz.
SageMaker Python SDK actúa como un contenedor para las SageMaker API operaciones de bajo nivel. El IAM rol que utilice para acceder SDK debe poder acceder a las operaciones subyacentes. Añadir la política de acceso SageMaker total a tu IAM rol es la forma más sencilla de asegurarte de que tienes permisos para usar SageMaker PythonSDK. Para obtener más información sobre la Política de acceso SageMaker total, consulte Amazon SageMaker Full Access.
Si bien es menos práctico, proporcionar permisos más detallados es un enfoque seguro para utilizar laSDK. Cada una de las siguientes secciones contiene información sobre los permisos necesarios.
Crear un trabajo de formación
importante
Si no va a añadir la política de acceso SageMaker total a su IAM función, esta debe tener permisos para llamar a DescribeTrainingJoblas operaciones CreateTrainingJoby.
También requiere permisos para:
-
Acceder a los datos de entrada/salida en S3
-
Ejecuta EC2 instancias de Amazon
-
Registra CloudWatch métricas
Si su trabajo de SageMaker formación necesita acceder a los recursos de una Amazon Virtual Private Cloud (AmazonVPC), asegúrese de configurar los VPC ajustes y los grupos de seguridad necesarios al crear el trabajo de procesamiento.
Al crear un trabajo de formación, es posible que se encuentre con botocore.exceptions.ClientError
o con ValueError
excepciones.
Actualizar un trabajo de formación
importante
Si no va a añadir la política SageMaker gestionada a su IAM función, debe conceder a la función acceso a los siguientes permisos:
-
s3:GetObject
— Proporciona permisos para leer los artefactos del modelo de los buckets de Amazon S3 -
s3:PutObject
— Si corresponde, proporciona permisos para escribir actualizaciones en los artefactos del modelo -
iam:GetRole
— Proporciona permisos para obtener información sobre el IAM rol necesario para ejecutar el trabajo de formación -
sagemaker:UpdateTrainingJob
— Proporciona permisos para modificar los trabajos de formación mediante la UpdateTrainingJoboperación. -
logs:PutLogEvents
— Proporciona permisos para escribir registros en los CloudWatch registros de Amazon durante el proceso de actualización.
Cuando actualizas un trabajo de formación, es posible que te encuentres con un botocore.exceptions.ParamValidationError
o unbotocore.exceptions.ClientError
.
Crear un trabajo de procesamiento
importante
Si no va a añadir la política SageMaker gestionada a su IAM función, debe conceder a la función acceso a los siguientes permisos:
-
sagemaker:CreateProcessingJob
— Proporciona permisos para crear un trabajo de procesamiento -
sagemaker:DescribeProcessingJob
— Proporciona permisos para obtener información sobre un trabajo de procesamiento -
s3:GetObject
— Proporciona permisos para leer los artefactos del modelo de los buckets de Amazon S3 -
s3:PutObject
— Si corresponde, proporciona permisos para escribir actualizaciones en los artefactos del modelo -
logs:PutLogEvents
— Proporciona permisos para escribir registros en Amazon CloudWatch Logs durante el proceso de actualización.
Si su trabajo de procesamiento necesita acceder a los recursos de una Amazon Virtual Private Cloud, debe especificar su tarea security_group_ids
y subnets
dentro del estimador que cree. Para ver un ejemplo de cómo puede acceder a los recursos de AmazonVPC, consulte Secure Training and Inference with VPC
Al crear un trabajo de procesamiento, es posible que se encuentre con un ValueError
UnexpectedStatusException
, un o unbotocore.exceptions.ClientError
.
Crear un punto de conexión
importante
Si no va a añadir la política SageMaker gestionada a su IAM función, debe conceder a la función acceso a los siguientes permisos:
-
sagemaker:CreateModel
— Proporciona permisos para crear el modelo que se va a implementar en el punto final -
sagemaker:CreateEndpointConfig
— Proporciona permisos para crear una configuración de punto final que defina el comportamiento del punto final, como el tipo y el recuento de instancias -
sagemaker:CreateEndpoint
— Proporciona permisos para crear la configuración del punto final utilizando el punto final que haya especificado
Además, necesita permisos para describir y enumerar los modelos, los puntos finales y las configuraciones de los puntos finales.
Al crear un punto final, es posible que se encuentre con un UnexpectedStatusException
o unbotocore.exceptions.ClientError
.
El siguiente es un ejemplo deUnexpectedStatusException
:
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
El mensaje de error te indica que compruebes los CloudWatch registros de Amazon. Utilice el siguiente procedimiento para comprobar los registros.
Para comprobar los CloudWatch registros
-
Ve a la SageMaker consola de Amazon
. -
En la barra de navegación de la izquierda, selecciona Endpoints.
-
Seleccione el punto final que ha fallado.
-
En la página de detalles del punto final, elija Ver los inicios de sesión CloudWatch.
Una vez que haya encontrado los registros, busque el problema específico. El siguiente es un ejemplo de 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
Para obtener información sobre cómo resolver elbotocore.exceptions.ClientError
, consulteGuía sobre el manejo de excepciones.
Actualizar un punto final
importante
Si no va a añadir la política SageMaker gestionada a su IAM función, debe conceder a la función acceso a los siguientes permisos:
-
sagemaker:UpdateEndpoint
— Proporciona permisos para actualizar un punto final existente, por ejemplo, cambiar el tipo o el recuento de instancias del punto final -
sagemaker:UpdateEndpointWeightsAndCapacities
— Proporciona permisos para crear una configuración de punto final que defina el comportamiento del punto final, como el tipo y el recuento de instancias -
sagemaker:DescribeEndpoint
— Proporciona permisos para describir la configuración actual del punto final, que suele ser necesario antes de la actualización
Además, es posible que necesite permisos para describir y enumerar los puntos finales y las configuraciones de los puntos finales.
Puede encontrarse con unaValueError
, como la siguiente:
ValueError: Endpoint with name 'abc' does not exist; please use an existing endpoint name
El error indica que el nombre del punto de conexión especificado no coincide con ningún punto de conexión existente en su AWS cuenta. Utilice el siguiente procedimiento para solucionar el error:
Para solucionar un error de valor
-
Usa el siguiente código para enumerar todos tus puntos de conexión:
import sagemaker sagemaker_session = sagemaker.Session() # List all endpoints endpoints = sagemaker_session.sagemaker_client.list_endpoints() print(endpoints)
-
Comprueba que el punto final que has especificado para la
update_endpoint
función esté en la lista. -
Asegúrese de operar en la AWS región correcta. SageMaker los puntos finales son específicos de cada región.
-
Asegúrese de que el IAM rol que está utilizando tenga permisos para enumerar, describir o actualizar los puntos finales.
Guía sobre el manejo de excepciones
Si no encuentras información que te ayude a solucionar tu problema específico, los siguientes ejemplos de código pueden servirte de inspiración para gestionar las excepciones.
El siguiente es un ejemplo genérico que puedes usar para atrapar la mayoría de las excepciones.
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
Existen dos categorías principales de errores:
-
Errores específicos de SageMaker Python SDK
-
Errores específicos del AWS servicio subyacente
Los errores específicos del AWS servicio subyacente son siempre botocore.exceptions.ClientError
excepciones. botocore.exceptions.ClientError
Tiene un Error
objeto y un ResponseMetadata
objeto. A continuación se muestra la plantilla de un error de cliente:
{ '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 } }
A continuación se muestra un ejemplo de la gestión de errores específica que puede realizar 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'])
Para obtener más información sobre cómo gestionar ClientError
las excepciones, consulte Analizar las respuestas de error y detectar las excepciones procedentes de Servicios de AWS ellas