Limitazioni - Amazon SageMaker AI

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), Parameter e ExecutionVariable alle funzioni decorate con @step. Tuttavia, le funzioni decorate con @step non supportano gli oggetti JsonGet e Join come 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 SerializationError
  • Non 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 tuple
  • Poiché 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 come Estimator, Predictor e Processor non 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’oggetto DelayedReturn rappresenta 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 ValueError
  • Non puoi eseguire iterazioni su un oggetto DelayedReturn. L’esempio seguente genera un errore:

    for item in func(): # this raises a NotImplementedError
  • Non è 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: