SageMaker Piscine calde gestite - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SageMaker Piscine calde gestite

SageMaker le warm pool gestite consentono di conservare e riutilizzare l'infrastruttura predisposta dopo il completamento di un processo di formazione per ridurre la latenza per i carichi di lavoro ripetitivi, come la sperimentazione iterativa o l'esecuzione di più lavori consecutivamente. I successivi processi di addestramento che soddisfano i parametri specificati vengono eseguiti sull'infrastruttura di warm pool mantenuta, che accelera i tempi di avvio riducendo il tempo impiegato per il provisioning delle risorse.

Importante

SageMaker le piscine calde gestite sono una risorsa fatturabile. Per ulteriori informazioni, consulta Fatturazione.

Come funziona

Per utilizzare le piscine calde SageMaker gestite e ridurre la latenza tra processi di formazione consecutivi simili, crea un processo di formazione che specifichi un KeepAlivePeriodInSeconds valore al suo interno. ResourceConfig Questo valore rappresenta la durata, in secondi, per conservare le risorse configurate in un warm pool per i successivi processi di addestramento. Se è necessario eseguire diversi processi di addestramento utilizzando configurazioni simili, è possibile ridurre ulteriormente la latenza e il tempo fatturabile utilizzando una directory cache persistente dedicata per archiviare e riutilizzare le informazioni in un processo diverso.

Ciclo di vita di un warm pool

  1. Crea un processo di addestramento iniziale con un valore KeepAlivePeriodInSeconds maggiore di 0. Quando si esegue questo primo processo di addestramento, esso “avvia a freddo” un cluster con tempi di avvio tipici.

  2. Al termine del primo processo di addestramento, le risorse assegnate vengono mantenute attive in un warm pool per il periodo specificato nel valore KeepAlivePeriodInSeconds. Finché il cluster è integro e il warm pool rientra nei valori specificati KeepAlivePeriodInSeconds, lo stato del warm pool è Available.

  3. Il warm pool rimane Available fino a quando non identifica un processo di addestramento corrispondente da riutilizzare oppure supera il valore specificato KeepAlivePeriodInSeconds e viene interrotto. Il periodo di tempo massimo consentito per il KeepAlivePeriodInSeconds è di 3600 secondi (60 minuti). Se lo stato del warm pool è Terminated, significa che questa è la fine del ciclo di vita del warm pool.

  4. Se il warm pool identifica un secondo processo di addestramento con specifiche corrispondenti, come il numero di istanze o il tipo di istanza, il processo di addestramento passa dal primo al secondo processo di addestramento per essere riutilizzato. Lo stato del primo processo di addestramento diventa warm pool. Reused Questa è la fine del ciclo di vita del warm pool per il primo processo di addestramento.

  5. Lo stato del secondo processo di addestramento che ha riutilizzato il warm pool diventa InUse. Una volta completato il secondo processo di addestramento, il warm pool è Available per la durata KeepAlivePeriodInSeconds specificata nel secondo processo di addestramento. Un warm pool può continuare a passare ai successivi processi di addestramento corrispondenti per un massimo di 28 giorni.

  6. Se il warm pool non è più riutilizzabile, il suo stato è Terminated. I warm pool non sono più disponibili se vengono terminati da un utente, per un aggiornamento di patch o se vengono superati i limiti specificati KeepAlivePeriodInSeconds.

Per ulteriori informazioni sulle opzioni di stato del pool caldo, WarmPoolStatusconsulta Amazon SageMaker API Reference.

Creazione di warm pool

Se un processo di addestramento iniziale viene completato con successo e ha un valore KeepAlivePeriodInSeconds superiore a 0, viene creato un warm pool. Se si interrompe un processo di addestramento dopo che un cluster è già stato avviato, un warm pool viene comunque mantenuto. Se il processo di addestramento fallisce a causa di un errore dell'algoritmo o del client, viene comunque mantenuto un warm pool. Se il processo di addestramento fallisce per qualsiasi altro motivo che potrebbe compromettere lo stato del cluster, il warm pool non viene creato.

Per verificare la corretta creazione del warm pool, controlla lo stato del processo di addestramento. Se un warm pool esegue il provisioning con successo, lo stato del warm pool è Available. Se un warm pool non esegue il provisioning con successo, lo stato del warm pool è Terminated.

Processi di addestramento corrispondenti

Affinché un warm pool persista, deve trovare un processo di addestramento corrispondente entro il tempo specificato nel valore KeepAlivePeriodInSeconds. Il processo di addestramento successivo corrisponde se i seguenti valori sono identici:

  • RoleArn

  • ResourceConfig valori:

    • InstanceCount

    • InstanceType

    • VolumeKmsKeyId

    • VolumeSizeInGB

  • VpcConfig valori:

    • SecurityGroupIds

    • Subnets

  • EnableInterContainerTrafficEncryption

  • EnableNetworkIsolation

  • Se hai passato i tag di sessione per il tuo lavoro di formazione EnableSessionTagChaining impostando «to» True nel processo di formazioneSessionChainingConfig, allora anche un lavoro di formazione corrispondente deve essere impostato True e EnableSessionTagChaining avere le stesse chiavi di sessione. Per ulteriori informazioni, consulta Utilizza il controllo degli accessi basato sugli attributi () per la formazione multi-tenancy ABAC.

Tutti questi valori devono essere uguali affinché un warm pool passi a un successivo processo di addestramento per il riutilizzo.

Durata massima del processo di addestramento

La durata massima KeepAlivePeriodInSeconds per un singolo processo di addestramento è di 3600 secondi (60 minuti) e il periodo massimo in cui un cluster di warm pool può continuare a eseguire processo di addestramento consecutivi è di 28 giorni.

Ogni processo di addestramento successivo deve inoltre specificare un valore KeepAlivePeriodInSeconds. Quando il warm pool passa al processo di addestramento successivo, eredita il nuovo valore KeepAlivePeriodInSeconds specificato nel ResourceConfig del processo di addestramento. In questo modo, è possibile mantenere un warm pool che passa da un processo di addestramento all'altro per un massimo di 28 giorni.

Se non viene specificato nessun KeepAlivePeriodInSeconds, il warm pool si spegne al termine del processo di addestramento.

Utilizzo della cache persistente

Quando crei una piscina calda, SageMaker monta una cartella speciale sul volume che persisterà per tutto il ciclo di vita della piscina calda. Questa directory può essere utilizzata anche per memorizzare informazioni che si desidera riutilizzare in un altro lavoro.

L'utilizzo della cache persistente può ridurre la latenza e il tempo fatturabile rispetto all'utilizzo esclusivo di warm pool per processi che richiedono quanto segue:

  • interazioni multiple con configurazioni simili

  • processi di addestramento incremementali

  • ottimizzazione degli iperparametri

Ad esempio, puoi evitare di scaricare le stesse dipendenze Python su esecuzioni ripetute impostando una directory cache pip all'interno della directory cache persistente. Sei pienamente responsabile della gestione del contenuto di questa directory. Di seguito sono riportati alcuni esempi di tipi di informazioni che è possibile inserire nella cache persistente per ridurre la latenza e il tempo fatturabile.

  • Dipendenze gestite da pip.

  • Dipendenze gestite da conda.

  • Informazioni sul checkpoint.

  • Qualsiasi informazione aggiuntiva generata durante l'addestramento.

La posizione della cache persistente è /opt/ml/sagemaker/warmpoolcache. La variabile di ambiente SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY punta alla posizione della directory della cache persistente.

Il seguente esempio di codice mostra come configurare un warm pool e utilizzare la cache persistente per archiviare le dipendenze pip da utilizzare in un processo successivo. Il processo successivo deve essere eseguito entro l'intervallo di tempo indicato dal parametro keep_alive_period_in_seconds.

import sagemakerfrom sagemaker import get_execution_rolefrom sagemaker.tensorflow import TensorFlow # Creates a SageMaker session and gets execution role session = sagemaker.Session() role = get_execution_role() # Creates an example estimator estimator = TensorFlow( ... entry_point='my-training-script.py', source_dir='code', role=role, model_dir='model_dir', framework_version='2.2', py_version='py37', job_name='my-training-job-1', instance_type='ml.g4dn.xlarge', instance_count=1, volume_size=250, hyperparameters={ "batch-size": 512, "epochs": 1, "learning-rate": 1e-3, "beta_1": 0.9, "beta_2": 0.999, }, keep_alive_period_in_seconds=1800, environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"} )

Nell'esempio di codice precedente, l'utilizzo del parametro environment esporta la variabile di ambiente PIP_CACHE_DIRECTORY in modo che punti alla directory /opt/ml/sagemaker/warmpoolcache/pip. L'esportazione di questa variabile di ambiente cambierà la posizione in cui pip archivia la cache nella nuova posizione. Qualsiasi directory, incluse le directory annidate, creata all'interno della directory della cache persistente, sarà disponibile per il riutilizzo durante una successiva esecuzione di addestramento. Nell'esempio di codice precedente, una directory chiamata pip viene modificata in modo da diventare la posizione predefinita per memorizzare nella cache tutte le dipendenze installate utilizzando pip.

È possibile accedere alla posizione della cache persistente anche dall'interno dello script di addestramento di Python utilizzando la variabile di ambiente, come mostrato nel seguente esempio di codice.

import os import shutil if __name__ == '__main__': PERSISTED_DIR = os.environ["SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY"] # create a file to be persisted open(os.path.join(PERSISTED_DIR, "test.txt"), 'a').close() # create a directory to be persisted os.mkdir(os.path.join(PERSISTED_DIR, "test_dir")) # Move a file to be persisted shutil.move("path/of/your/file.txt", PERSISTED_DIR)

Fatturazione

SageMaker le piscine calde gestite sono una risorsa fatturabile. Recupera lo stato del warm pool per il tuo processo di aggiornamento per controllare il tempo fatturabile dei tuoi warm pool. È possibile controllare lo stato della piscina calda tramite Utilizzo della SageMaker console Amazon o direttamente tramite il DescribeTrainingJobAPIcomando. Per ulteriori informazioni, WarmPoolStatusconsulta Amazon SageMaker API Reference.

Nota

Una volta trascorso il tempo specificato dal parametro KeepAlivePeriodInSeconds, sia il warm pool che la cache persistente verranno chiusi e il contenuto sarà eliminato.

Considerazioni

Considera i seguenti elementi quando utilizzi piscine calde SageMaker gestite.

  • SageMaker le piscine calde gestite non possono essere utilizzate con un training eterogeneo in cluster.

  • SageMaker le piscine calde gestite non possono essere utilizzate con istanze spot.

  • SageMaker le piscine calde gestite sono limitate a un KeepAlivePeriodInSeconds valore di 3600 secondi (60 minuti).

  • Se un warm pool continua a corrispondere correttamente ai processi di addestramento entro il valore KeepAlivePeriodInSeconds specificato, il cluster può continuare a funzionare solo per un massimo di 28 giorni.