Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einschränkungen
In den folgenden Abschnitten werden die Einschränkungen beschrieben, die Sie beachten sollten, wenn Sie den @step Decorator für Ihre Pipeline-Schritte verwenden.
Einschränkungen bei Funktionsargumenten
Wenn Sie ein Eingabeargument an die @step mit -dekorierte Funktion übergeben, gelten die folgenden Einschränkungen:
Sie können die Objekte
DelayedReturn,Properties(von Schritten anderer Typen) undExecutionVariable-Objekte alsParameterArgumente an@stepmit -dekorierte Funktionen übergeben. Mit@step-dekorierten Funktionen werdenJoinObjekte jedoch nicht alsJsonGetArgumente unterstützt.Sie können von einer
@stepFunktion aus nicht direkt auf eine Pipeline-Variable zugreifen. Das folgende Beispiel erzeugt einen Fehler:param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(): print(param) func() # this raises a SerializationErrorSie können eine Pipeline-Variable nicht in einem anderen Objekt verschachteln und an eine
@stepFunktion übergeben. Das folgende Beispiel erzeugt einen Fehler:param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(arg): print(arg) func(arg=(param,)) # this raises a SerializationError because param is nested in a tupleDa Eingaben und Ausgaben einer Funktion serialisiert sind, gibt es Einschränkungen hinsichtlich der Art der Daten, die als Eingabe oder Ausgabe von einer Funktion übergeben werden können. Weitere Informationen finden Sie im Abschnitt Datenserialisierung und Deserialisierung vonRufen Sie eine Remote-Funktion auf. Dieselben Einschränkungen gelten für Funktionen, die mit -dekoriert sind.
@stepJedes Objekt, das über einen Boto-Client verfügt, kann nicht serialisiert werden. Daher können Sie solche Objekte nicht als Eingabe oder Ausgabe einer
@stepmit -dekorierten Funktion übergeben. BeispielsweiseProcessorkönnen SageMaker Python-SDK-Clientklassen wieEstimatorPredictor, und nicht serialisiert werden.
Funktionsimporte
Sie sollten die Bibliotheken importieren, die für den Schritt innerhalb und nicht außerhalb der Funktion erforderlich sind. Wenn Sie sie auf globaler Ebene importieren, riskieren Sie bei der Serialisierung der Funktion eine Importkollision. sklearn.pipeline.PipelineKönnte beispielsweise überschrieben werden durch. sagemaker.workflow.pipeline.Pipeline
Verweisen auf untergeordnete Elemente des Funktionsrückgabewerts
Wenn Sie auf untergeordnete Elemente des Rückgabewerts einer @step mit -dekorierten Funktion verweisen, gelten die folgenden Einschränkungen:
Sie können auf die untergeordneten Elemente verweisen,
[]wenn dasDelayedReturnObjekt ein Tupel, eine Liste oder ein Diktat darstellt, wie im folgenden Beispiel gezeigt:delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]Sie können eine Tupel- oder Listenausgabe nicht entpacken, da die genaue Länge des zugrunde liegenden Tupels oder der zugrunde liegenden Liste nicht bekannt sein kann, wenn Sie die Funktion aufrufen. Das folgende Beispiel erzeugt einen Fehler:
a, b, c = func() # this raises ValueErrorSie können nicht über ein
DelayedReturnObjekt iterieren. Das folgende Beispiel löst einen Fehler aus:for item in func(): # this raises a NotImplementedErrorSie können nicht mit '
.' auf beliebige untergeordnete Elemente verweisen. Das folgende Beispiel erzeugt einen Fehler:delayed_return.a_child # raises AttributeError
Bestehende Pipeline-Funktionen, die nicht unterstützt werden
Sie können den @step Decorator nicht mit den folgenden Pipeline-Funktionen verwenden: