Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Limites
Les sections suivantes décrivent les limites dont vous devez tenir compte lorsque vous utilisez le @step
décorateur pour les étapes de votre pipeline.
Limites des arguments de fonction
Lorsque vous transmettez un argument d'entrée à la fonction @step
-decorated, les limites suivantes s'appliquent :
Vous pouvez transmettre les
DelayedReturn
,Properties
(des étapes d'autres types) etParameter
lesExecutionVariable
objets aux fonctions@step
décorées en tant qu'arguments. Mais les fonctions@step
-decorated ne supportent pas lesJoin
objetsJsonGet
en tant qu'arguments.Vous ne pouvez pas accéder directement à une variable de pipeline à partir d'une
@step
fonction. L'exemple suivant génère une erreur :param = ParameterInteger(name="
<parameter-name>
", default_value=10) @step def func(): print(param) func() # this raises a SerializationErrorVous ne pouvez pas imbriquer une variable de pipeline dans un autre objet et la transmettre à une
@step
fonction. L'exemple suivant génère une erreur :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 tupleLes entrées et sorties d'une fonction étant sérialisées, le type de données pouvant être transmises en entrée ou en sortie d'une fonction est soumis à des restrictions. Consultez la section Sérialisation et désérialisation des données Invoquer une fonction distante pour plus de détails. Les mêmes restrictions s'appliquent aux fonctions
@step
décorées.Tout objet doté d'un client boto ne peut pas être sérialisé. Vous ne pouvez donc pas transmettre de tels objets en entrée ou en sortie à partir d'une fonction décorée
@step
. Par exemple, les classes SDK clientes SageMaker Python telles queEstimator
Predictor
, et neProcessor
peuvent pas être sérialisées.
Importations de fonctions
Vous devez importer les bibliothèques requises par l'étape à l'intérieur plutôt qu'à l'extérieur de la fonction. Si vous les importez à l'échelle mondiale, vous risquez une collision lors de la sérialisation de la fonction. Par exemple, sklearn.pipeline.Pipeline
pourrait être remplacé par. sagemaker.workflow.pipeline.Pipeline
Référencer les membres enfants de la valeur de retour de la fonction
Si vous faites référence à des membres enfants de la valeur de retour d'une fonction @step
décorée, les limites suivantes s'appliquent :
Vous pouvez faire référence aux membres enfants
[]
si l'DelayedReturn
objet représente un tuple, une liste ou un dict, comme indiqué dans l'exemple suivant :delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]
Vous ne pouvez pas déballer une sortie de tuple ou de liste car la longueur exacte du tuple ou de la liste sous-jacent ne peut pas être connue lorsque vous appelez la fonction. L'exemple suivant génère une erreur :
a, b, c = func() # this raises ValueError
Vous ne pouvez pas itérer sur un
DelayedReturn
objet. L'exemple suivant génère une erreur :for item in func(): # this raises a NotImplementedError
Vous ne pouvez pas faire référence à des membres enfants arbitraires avec
.
« ». L'exemple suivant génère une erreur :delayed_return.a_child # raises AttributeError
Fonctionnalités de pipeline existantes qui ne sont pas prises en charge
Vous ne pouvez pas utiliser le @step
décorateur avec les fonctionnalités de pipeline suivantes :