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à.
TensorFlow
Porta il tuo TensorFlow modello all' SageMaker intelligenza artificiale ed esegui il processo di formazione con Training Compiler SageMaker .
TensorFlow Modelli
SageMaker Training Compiler ottimizza automaticamente i carichi di lavoro di addestramento dei modelli basati sull' TensorFlow API nativa o sull'API Keras di alto livello.
Suggerimento
Per la preelaborazione del set di dati di input, assicurati di utilizzare una forma di input statica. La forma di input dinamica può avviare la ricompilazione del modello e aumentare il tempo totale di addestramento.
Utilizzo di Keras (consigliato)
Per la migliore accelerazione del compilatore, consigliamo di utilizzare modelli che sono sottoclassi di Keras (tf.keras.Model). TensorFlow https://www.tensorflow.org/api_docs/python/tf/keras/Model
Per l’addestramento su una singola GPU
Non è necessario apportare ulteriori modifiche allo script di addestramento.
Senza Keras
SageMaker Training Compiler non supporta l'esecuzione rapida in. TensorFlow Di conseguenza, è necessario racchiudere il modello e i cicli di addestramento con la TensorFlow funzione decorator (@tf.function) per sfruttare l'accelerazione del compilatore.
SageMaker Training Compiler esegue un'ottimizzazione a livello di grafico e utilizza il decoratore per assicurarsi che le funzioni siano impostate per l'esecuzione TensorFlow in modalità grafico. https://www.tensorflow.org/guide/intro_to_graphs
Per l’addestramento su una singola GPU
TensorFlow Per impostazione predefinita, nella versione 2.0 o versioni successive è attiva l'esecuzione rapida, quindi è necessario aggiungere il @tf.function decoratore davanti a ogni funzione utilizzata per costruire un modello. TensorFlow
TensorFlow Modelli con Hugging Face Transformers
TensorFlow i modelli con Hugging Face HuggingFace ModelTrainer with Training Compiler, come mostrato nell'argomento precedente all' SageMaker indirizzo. Esegui lavori TensorFlow di formazione con SageMaker Training Compiler
SageMaker Training Compiler ottimizza automaticamente i carichi di lavoro di addestramento dei modelli basati sull' TensorFlow API nativa o sull'API Keras di alto livello, come i modelli Transformer. TensorFlow
Suggerimento
Quando si crea un tokenizzatore per un modello NLP utilizzando Transformers nello script di addestramento, assicurarsi di utilizzare una forma di tensore di input statica specificando padding='max_length'. Non utilizzare padding='longest', in quanto il padding sulla sequenza più lunga del batch può modificare la forma del tensore per ogni batch di addestramento. La forma di input dinamica può avviare la ricompilazione del modello e aumentare il tempo totale di addestramento. Per ulteriori informazioni sulle opzioni di riempimento dei tokenizzatori Transformers, vedere Padding and troncation
Argomenti
Utilizzo di Keras
Per la migliore accelerazione del compilatore, consigliamo di utilizzare modelli che sono sottoclassi di Keras (tf.keras.Model). TensorFlow https://www.tensorflow.org/api_docs/python/tf/keras/Model
Per l’addestramento su una singola GPU
Non è necessario apportare ulteriori modifiche allo script di addestramento.
Per l’addestramento distribuito
SageMaker L'accelerazione del Training Compiler funziona in modo trasparente per carichi di lavoro multi-GPU quando il modello viene costruito e addestrato utilizzando le API Keras nell'ambito della chiamata. tf.distribute.Strategy.scope()
-
Scegli la giusta strategia di addestramento distribuito.
-
Per una GPU multipla a nodo singolo, usa
tf.distribute.MirroredStrategyper impostare la strategia.strategy = tf.distribute.MirroredStrategy() -
Per le GPU multinodo e multi-GPU, aggiungi il codice seguente per impostare correttamente la configurazione di training distribuita prima di creare la strategia. TensorFlow
def set_sm_dist_config(): DEFAULT_PORT = '8890' DEFAULT_CONFIG_FILE = '/opt/ml/input/config/resourceconfig.json' with open(DEFAULT_CONFIG_FILE) as f: config = json.loads(f.read()) current_host = config['current_host'] tf_config = { 'cluster': { 'worker': [] }, 'task': {'type': 'worker', 'index': -1} } for i, host in enumerate(config['hosts']): tf_config['cluster']['worker'].append("%s:%s" % (host, DEFAULT_PORT)) if current_host == host: tf_config['task']['index'] = i os.environ['TF_CONFIG'] = json.dumps(tf_config) set_sm_dist_config()Usa
tf.distribute.MultiWorkerMirroredStrategyper impostare la strategia.strategy = tf.distribute.MultiWorkerMirroredStrategy()
-
-
Utilizzando la strategia che preferisci, esegui il wrapping del modello.
with strategy.scope(): # create a model and do fit
Senza Keras
Se desideri creare modelli personalizzati con cicli di addestramento personalizzati utilizzando TensorFlow senza Keras, dovresti racchiudere il modello e il ciclo di addestramento con la TensorFlow funzione decorator () @tf.function per sfruttare l'accelerazione del compilatore.
SageMaker Training Compiler esegue un'ottimizzazione a livello di grafico e utilizza il decoratore per assicurarsi che le funzioni siano impostate per l'esecuzione in modalità grafico. TensorFlow
Per l’addestramento su una singola GPU
TensorFlow Per impostazione predefinita, nella versione 2.0 o versioni successive è attiva l'esecuzione rapida, quindi è necessario aggiungere il @tf.function decoratore davanti a ogni funzione utilizzata per costruire un modello. TensorFlow
Per l’addestramento distribuito
Oltre alle modifiche necessarie per l'utilizzo di Keras per l'addestramento distribuito, è necessario assicurarsi che le funzioni da eseguire su ciascuna GPU siano annotate con @tf.function, mentre le funzioni di comunicazione tra GPU non siano annotate. Il codice di addestramento deve essere simile a quello riportato nell'esempio:
@tf.function() def compiled_step(inputs, outputs): with tf.GradientTape() as tape: pred=model(inputs, training=True) total_loss=loss_object(outputs, pred)/args.batch_size gradients=tape.gradient(total_loss, model.trainable_variables) return total_loss, pred, gradients def train_step(inputs, outputs): total_loss, pred, gradients=compiled_step(inputs, outputs) if args.weight_decay > 0.: gradients=[g+v*args.weight_decay for g,v in zip(gradients, model.trainable_variables)] optimizer.apply_gradients(zip(gradients, model.trainable_variables)) train_loss.update_state(total_loss) train_accuracy.update_state(outputs, pred) @tf.function() def train_step_dist(inputs, outputs): strategy.run(train_step, args= (inputs, outputs))
Tieni presente che questa istruzione può essere utilizzata sia per multi-GPU a nodo singolo che per multi-GPU multi-nodo.