Limitazioni
Le sezioni seguenti descrivono le limitazioni da tenere presenti quando utilizzi il decoratore @step per le fasi della pipeline.
Limitazioni degli argomenti delle funzioni
Quando passi un argomento di input alla funzione decorata con @step, si applicano le seguenti limitazioni:
Puoi passare come argomenti gli oggetti
DelayedReturn,Properties(di altri tipi di fasi),ParametereExecutionVariablealle funzioni decorate con@step. Tuttavia, le funzioni decorate con@stepnon supportano gli oggettiJsonGeteJoincome argomenti.Non puoi accedere direttamente a una variabile della pipeline da una funzione
@step. L’esempio seguente genera un errore:param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(): print(param) func() # this raises a SerializationErrorNon puoi annidare una variabile della pipeline in un altro oggetto e passarla a una funzione
@step. L’esempio seguente genera un errore: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 tuplePoiché gli input e gli output di una funzione sono serializzati, esistono limitazioni sui tipi di dati che possono essere passati come input o output da una funzione. Per maggiori dettagli, consulta la sezione Serializzazione e deserializzazione dei dati di Invocare una funzione remota. Le stesse limitazioni si applicano alle funzioni decorate con
@step.Tutti gli oggetti con un client boto non possono essere serializzati, quindi non puoi passare tali oggetti come input o output da una funzione decorata con
@step. Ad esempio, le classi client di SageMaker Python SDK comeEstimator,PredictoreProcessornon possono essere serializzate.
Importazioni di funzioni
Devi importare le librerie richieste dalla fase all’interno e non all’esterno della funzione. Se le importi a livello globale, rischi un conflitto di importazione durante la serializzazione della funzione. Ad esempio, sklearn.pipeline.Pipeline potrebbe essere sovrascritto da sagemaker.workflow.pipeline.Pipeline.
Riferimento ai membri secondari del valore restituito dalla funzione
Se fai riferimento ai membri secondari di un valore restituito dalla funzione decorata con @step, si applicano le seguenti limitazioni:
Puoi fare riferimento ai membri secondari utilizzando
[]se l’oggettoDelayedReturnrappresenta una tupla, un elenco o un dict, come mostrato nell’esempio seguente:delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]Non puoi decomprimere l’output di una tupla o di un elenco perché la lunghezza esatta della tupla o dell’elenco sottostante non può essere nota quando invochi la funzione. L’esempio seguente genera un errore:
a, b, c = func() # this raises ValueErrorNon puoi eseguire iterazioni su un oggetto
DelayedReturn. L’esempio seguente genera un errore:for item in func(): # this raises a NotImplementedErrorNon è possibile fare riferimento ai membri secondari arbitrari con “
.”. L’esempio seguente genera un errore:delayed_return.a_child # raises AttributeError
Funzionalità delle pipeline esistenti che non sono supportate
Non è possibile utilizzare il decoratore @step con le funzionalità della pipeline seguenti: