Wie kann ich die Probleme bei der Überschreitung der SageMaker Python-SDK-Rate und der Drosselung lösen?

Lesedauer: 2 Minute
0

Wie kann ich Drosselungsfehler wie „botoCore.Exceptions.ClientError“ beheben: Bei der Verwendung des Amazon SageMaker Python SDK ist ein Fehler aufgetreten (ThrottlingException)“?

Kurzbeschreibung

API-Aufrufe an einen AWS-Service dürfen die maximal zulässige API-Anforderungsrate pro Konto und pro AWS-Region nicht überschreiten. Diese API-Aufrufe können von einer Anwendung, der AWS-Befehlszeilenschnittstelle (AWS CLI) oder der AWS-Managementkonsole stammen. Wenn die API-Anfragen die maximale Rate überschreiten, erhalten Sie den Fehler „Rate überschritten“ und die API-Aufrufe werden gedrosselt.

Dieser Fehler kann aufgrund der standardmäßigen Wiederholungskonfiguration in Boto3 auftreten, wenn Sie die SageMaker-APIs aufrufen. Sie können diese Konfiguration überschreiben, um die Anzahl der Wiederholungsversuche und die Timeouts für die Verbindung und das Lesen einer Antwort zu erhöhen.

Sie können diesen Fehler beheben, indem Sie dem SageMaker Python SDK-Client einen SageMaker Boto3-Client mit einer benutzerdefinierten Wiederholungskonfiguration hinzufügen.

Lösung

1.    Erstellen Sie einen SageMaker-Boto3-Client mit einer benutzerdefinierten Wiederholungskonfiguration. Beispiel:

import boto3
from botocore.config import Config
sm_boto = boto3.client('sagemaker', config=Config(connect_timeout=5, read_timeout=60, retries={'max_attempts': 20}))
print(sm_boto.meta.config.retries)

2.    Erstellen Sie einen SageMaker Python SDK-Client mit dem boto3-Client aus dem vorherigen Schritt. Beispiel:

import sagemaker
sagemaker_session = sagemaker.Session(sagemaker_client = sm_boto)
region = sagemaker_session.boto_session.region_name
print(sagemaker_session.sagemaker_client.meta.config.retries)

3.    Testen Sie eine SageMaker-API mit mehreren Anfragen aus dem SageMaker Python SDK. Beispiel:

import multiprocessing
def worker(TrainingJobName):
    print(sagemaker_session.sagemaker_client
          .describe_training_job(TrainingJobName=TrainingJobName)
          ['TrainingJobName'])
    return

if __name__ == '__main__':
    jobs = []
    TrainingJobName = 'your-job-name'
    for i in range(10):
        p = multiprocessing.Process(target=worker, args=(TrainingJobName,))
        jobs.append(p)
        p.start()

4.    Erstellen Sie eine Instance der sagemaker.estimator.Estimator-Klasse mit dem Parameter sagemaker_session. Beispiel:

estimator = sagemaker.estimator.Estimator(container,
                                             role,
                                             train_instance_count=1,
                                             train_instance_type='ml.c4.4xlarge',
                                             train_volume_size = 30,
                                             train_max_run = 360000,
                                             input_mode= 'File',
                                             output_path=s3_output_location,
                                             sagemaker_session=sagemaker_session )

5.    Um zu überprüfen, ob die Wiederholungskonfiguration die Drosselungsausnahmen behebt, starten Sie einen Trainingsjob von dem Schätzer aus, den Sie im vorherigen Schritt erstellt haben:

estimator.fit()

Ähnliche Informationen

Boto3-Dokumentation

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren