Modificare uno script di addestramento per assegnare gruppi di istanze - Amazon SageMaker AI

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à.

Modificare uno script di addestramento per assegnare gruppi di istanze

Con la configurazione eterogenea del cluster illustrata nelle sezioni precedenti, hai preparato l'ambiente e le istanze di addestramento SageMaker per il tuo processo di addestramento. Per assegnare ulteriormente i gruppi di istanze a determinati processi di addestramento ed elaborazione dei dati, la fase successiva consiste nel modificare lo script di addestramento. Per impostazione predefinita, il processo di addestramento crea semplicemente repliche degli script di addestramento per tutti i nodi indipendentemente dalla dimensione dell'istanza, e ciò potrebbe comportare una perdita di prestazioni.

Ad esempio, se si combinano istanze CPU e istanze GPU in un cluster eterogeneo mentre si passa uno script di addestramento della rete neurale profonda all’argomento entry_point dello strumento di stima di SageMaker AI, lo script entry_point viene replicato su ogni istanza. Ciò significa che, senza un'adeguata assegnazione delle attività, le istanze CPU eseguono anche l'intero script e avviano il processo di addestramento progettato per l'addestramento distribuito su istanze GPU. Pertanto, dovrai apportare modifiche alle funzioni di elaborazione specifiche che desideri scaricare ed eseguire sulle istanze della CPU. Puoi utilizzare le variabili di ambiente di SageMaker AI per recuperare le informazioni del cluster eterogeneo e consentire di conseguenza l’esecuzione di processi specifici.

All'inizio del processo di addestramento, lo script di addestramento legge le informazioni sull'ambiente di addestramento SageMaker che includono la configurazione eterogenea del cluster. La configurazione contiene informazioni come i gruppi di istanze correnti, gli host correnti di ciascun gruppo e in quale gruppo risiede l'host corrente.

Puoi eseguire una query sulle informazioni del gruppo di istanze durante la fase di inizializzazione di un job di addestramento di SageMaker AI.

(Consigliato) Lettura delle informazioni sul gruppo di istanze con il kit di strumenti di addestramento SageMaker

Usa il modulo di ambiente Python fornito dalla libreria di strumenti di addestramento SageMaker. La libreria del kit di strumenti è preinstallata nei container del framework SageMaker per TensorFlow e PyTorch, quindi non è necessaria una fase di installazione aggiuntiva quando si utilizzano i container predefiniti. Questo è il metodo consigliato per recuperare le variabili di ambiente SageMaker AI con meno modifiche al codice nello script di addestramento.

from sagemaker_training import environment env = environment.Environment()

Variabili di ambiente relative all’addestramento generale di SageMaker e ai cluster eterogenei:

  • env.is_hetero— Restituisce un risultato booleano indipendentemente dal fatto che un cluster eterogeneo sia configurato o meno.

  • env.current_host— Restituisce l'host corrente.

  • env.current_instance_type— Restituisce il tipo di istanza dell'host corrente.

  • env.current_instance_group— Restituisce il nome del gruppo di istanze corrente.

  • env.current_instance_group_hosts— Restituisce un elenco di host nel gruppo di istanze corrente.

  • env.instance_groups— Restituisce un elenco di nomi di gruppi di istanze utilizzati per l'addestramento.

  • env.instance_groups_dict— Restituisce l'intera configurazione del cluster eterogeneo del processo di addestramento.

  • env.distribution_instance_groups - Restituisce un elenco di gruppi di istanze assegnati al parametro distribution della classe dello strumento di stima di SageMaker AI.

  • env.distribution_hosts - Restituisce un elenco di host appartenenti ai gruppi di istanze assegnati al parametro distribution della classe dello strumento di stima di SageMaker AI.

Ad esempio, si consideri il seguente esempio di cluster eterogeneo costituito da due gruppi di istanze.

from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge", 1) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge", 2)

L'output di env.instance_groups_dict del cluster eterogeneo di esempio deve essere simile al seguente.

{ "instance_group_1": { "hosts": [ "algo-2" ], "instance_group_name": "instance_group_1", "instance_type": "ml.c5.18xlarge" }, "instance_group_2": { "hosts": [ "algo-3", "algo-1" ], "instance_group_name": "instance_group_2", "instance_type": "ml.p3dn.24xlarge" } }

(Facoltativo) Lettura delle informazioni sul gruppo di istanze dal file JSON di configurazione delle risorse

Se preferisci recuperare le variabili di ambiente in formato JSON, puoi utilizzare direttamente il file JSON di configurazione delle risorse. Per impostazione predefinita, il file JSON in un'istanza di addestramento SageMaker si trova in /opt/ml/input/config/resourceconfig.json.

file_path = '/opt/ml/input/config/resourceconfig.json' config = read_file_as_json(file_path) print(json.dumps(config, indent=4, sort_keys=True))