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 dall'IA
SageMaker I warm pool gestiti dall'intelligenza artificiale consentono di conservare e riutilizzare l'infrastruttura fornita dopo il completamento di un processo di formazione per ridurre la latenza per carichi di lavoro ripetitivi, come la sperimentazione iterativa o l'esecuzione di molti lavori consecutivi. 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 I warm pool gestiti dall'IA sono una risorsa fatturabile. Per ulteriori informazioni, consulta Fatturazione.
Argomenti
Come funziona
Per utilizzare i warm pool gestiti dall' SageMaker IA e ridurre la latenza tra job di formazione consecutivi simili, crea un job di formazione che ne specifichi un KeepAlivePeriodInSeconds valore. 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.
Argomenti
Ciclo di vita di un warm pool
-
Crea un processo di addestramento iniziale con un valore
KeepAlivePeriodInSecondsmaggiore di 0. Quando si esegue questo primo processo di addestramento, esso “avvia a freddo” un cluster con tempi di avvio tipici. -
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 specificatiKeepAlivePeriodInSeconds, lo stato del warm pool èAvailable. -
Il warm pool rimane
Availablefino a quando non identifica un processo di addestramento corrispondente da riutilizzare oppure supera il valore specificatoKeepAlivePeriodInSecondse viene interrotto. Il periodo di tempo massimo consentito per ilKeepAlivePeriodInSecondsè di 3600 secondi (60 minuti). Se lo stato del warm pool èTerminated, significa che questa è la fine del ciclo di vita del warm pool. -
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.
ReusedQuesta è la fine del ciclo di vita del warm pool per il primo processo di addestramento. -
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 èAvailableper la durataKeepAlivePeriodInSecondsspecificata nel secondo processo di addestramento. Un warm pool può continuare a passare ai successivi processi di addestramento corrispondenti per un massimo di 28 giorni. -
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 specificatiKeepAlivePeriodInSeconds.
Per ulteriori informazioni sulle opzioni relative allo stato dei warm pool, consulta WarmPoolStatus 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 -
ResourceConfigvalori:-
InstanceCount -
InstanceType -
VolumeKmsKeyId -
VolumeSizeInGB
-
-
VpcConfigvalori:-
SecurityGroupIds -
Subnets
-
-
EnableInterContainerTrafficEncryption -
EnableNetworkIsolation -
Se hai passato i tag di sessione per il tuo job di addestramento con l’opzione
EnableSessionTagChainingimpostata suTrueinSessionChainingConfigdel job di addestramento, allora anche i job di addestramento corrispondenti devono essere impostati suEnableSessionTagChainingeTruee avere le stesse chiavi di sessione. Per ulteriori informazioni, consulta Utilizzo del controllo degli accessi basato su attributi (ABAC) per l’addestramento multi-tenancy.
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 un warm pool, SageMaker AI monta una directory speciale sul volume che rimarrà permanente per tutto il ciclo di vita del pool caldo. 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.
-
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.
from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, SourceCode from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.core import image_uris # Creates a SageMaker session and gets execution role session = Session() role = get_execution_role() # Retrieve the TensorFlow training image training_image = image_uris.retrieve( framework="tensorflow", region=session.boto_region_name, version="2.2", py_version="py37", instance_type="ml.g4dn.xlarge", image_scope="training" ) # Creates an example ModelTrainer with warm pool enabled model_trainer = ModelTrainer( training_image=training_image, source_code=SourceCode(source_dir='code', entry_script='my-training-script.py'), role=role, compute=Compute( instance_type='ml.g4dn.xlarge', instance_count=1, volume_size_in_gb=250, keep_alive_period_in_seconds=1800, ), hyperparameters={ "batch-size": "512", "epochs": "1", "learning-rate": "1e-3", "beta_1": "0.9", "beta_2": "0.999", }, environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"} )
Nell'esempio di codice precedente, l'utilizzo del parametro environmentPIP_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 warm pool gestite dall'IA 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. Puoi controllare lo stato del warm pool tramite Utilizzo della console Amazon SageMaker AI o direttamente tramite il comando DescribeTrainingJob API. Per ulteriori informazioni, WarmPoolStatus consulta 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 usi i warm pool gestiti dall' SageMaker IA.
-
SageMaker Le warm pool gestite dall'IA non possono essere utilizzate con una formazione eterogenea in cluster.
-
SageMaker I warm pool gestiti dall'IA non possono essere utilizzati con le istanze spot.
-
SageMaker I warm pool gestiti dall'IA sono limitati a un
KeepAlivePeriodInSecondsvalore di 3600 secondi (60 minuti). -
Se un warm pool continua a corrispondere correttamente ai processi di addestramento entro il valore
KeepAlivePeriodInSecondsspecificato, il cluster può continuare a funzionare solo per un massimo di 28 giorni.