Modifica lo script di addestramento per assegnare gruppi di istanze - 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à.

Modifica lo 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 formazione per il tuo lavoro di SageMaker formazione. 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 mescoli CPU istanze e GPU istanze in un cluster eterogeneo mentre passi uno script di addestramento della rete neurale profonda all'entry_pointargomento dello estimatore, lo script viene replicato su ogni istanza. SageMaker entry_point Ciò significa che, senza un'adeguata assegnazione delle attività, CPU le istanze eseguono anche l'intero script e avviano il processo di formazione progettato per la formazione distribuita sulle istanze. GPU Pertanto, è necessario apportare modifiche alle funzioni di elaborazione specifiche che si desidera scaricare ed eseguire sulle istanze. CPU È possibile utilizzare le variabili di SageMaker ambiente per recuperare le informazioni del cluster eterogeneo e consentire l'esecuzione di processi specifici di conseguenza.

All'inizio del processo di formazione, lo script di formazione legge le informazioni sull'ambiente di formazione che includono la SageMaker 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.

È possibile interrogare le informazioni sul gruppo di istanze durante la fase di inizializzazione di un processo di SageMaker formazione nei seguenti modi.

(Consigliato) Leggere le informazioni sul gruppo di istanze con il toolkit SageMaker di formazione

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

from sagemaker_training import environment env = environment.Environment()

Variabili di ambiente relative alla SageMaker formazione generale 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 distribution parametro della classe estimator. SageMaker

  • env.distribution_hosts— Restituisce un elenco di host appartenenti ai gruppi di istanze assegnati al distribution parametro della classe SageMaker estimator.

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 di configurazione JSON delle risorse

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

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