As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Traga seu próprio TensorFlow modelo para a SageMaker IA e execute o trabalho de treinamento com o SageMaker Training Compiler.
TensorFlow Modelos
SageMaker O Training Compiler otimiza automaticamente as cargas de trabalho de treinamento de modelos criadas com base na TensorFlow API nativa ou na API Keras de alto nível.
dica
Para pré-processar seu conjunto de dados de entrada, certifique-se de usar um formato de entrada estática. O formato de entradas dinâmicas pode iniciar a recompilação do modelo e pode aumentar o tempo total de treinamento.
Usando o Keras (recomendado)
Para treinamento em uma única GPU
Não há nenhuma alteração adicional que você precise fazer no script de treinamento.
Sem o Keras
SageMaker O Training Compiler não oferece suporte à execução antecipada em. TensorFlow Portanto, você deve envolver seu modelo e os loops de treinamento com a TensorFlow função decorator (@tf.function
) para aproveitar a aceleração do compilador.
Para treinamento em uma única GPU
TensorFlow A versão 2.0 ou posterior tem a execução rápida ativada por padrão, então você deve adicionar o @tf.function
decorador na frente de cada função usada para construir um modelo. TensorFlow
TensorFlow Modelos com transformadores Hugging Face
TensorFlow os modelos com Hugging Face TransformersHuggingFace
estimador de SageMaker IA com a classe de configuração do SageMaker Training Compiler, conforme mostrado no tópico anterior em. Execute trabalhos TensorFlow de treinamento com o SageMaker Training Compiler
SageMaker O Training Compiler otimiza automaticamente as cargas de trabalho de treinamento de modelos criadas com base na TensorFlow API nativa ou na API Keras de alto nível, como os modelos de transformadores. TensorFlow
dica
Ao criar uma tokenização para um modelo de PNL com o uso de transformações no seu script de treinamento, certifique-se de usar uma forma de tensor de entrada estática especificando padding='max_length'
. Não use padding='longest'
porque o preenchimento da sequência mais longa do lote pode alterar a forma do tensor de cada lote de treinamento. A forma dinâmica de entrada pode iniciar a recompilação do modelo e pode aumentar o tempo total de treinamento. Para obter mais informações sobre as opções de preenchimento de tokenização de transformadores, consulte Preenchimento e truncamento
Tópicos
Como usar o Keras
Para obter a melhor aceleração do compilador, recomendamos usar modelos que sejam subclasses de Keras ( TensorFlow tf.keras.Model).
Para treinamento em uma única GPU
Não há nenhuma alteração adicional que você precise fazer no script de treinamento.
Para treinamento distribuído
SageMaker A aceleração do Training Compiler funciona de forma transparente para cargas de trabalho com várias GPUs quando o modelo é construído e treinado usando Keras APIs dentro do escopo da chamada. tf.distribute.Strategy.scope()
-
Escolha a estratégia correta de treinamento distribuído.
-
Para várias GPUs de nó único, use
tf.distribute.MirroredStrategy
para configurar a estratégia.strategy = tf.distribute.MirroredStrategy()
-
Para várias GPUs de vários nós, adicione o código a seguir para definir adequadamente a configuração de treinamento TensorFlow distribuído antes de criar a estratégia.
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()
Use
tf.distribute.MultiWorkerMirroredStrategy
para configurar a estratégia.strategy = tf.distribute.MultiWorkerMirroredStrategy()
-
-
Usando a estratégia de sua escolha, conclua o modelo.
with strategy.scope(): # create a model and do fit
Sem o Keras
Se você quiser trazer modelos personalizados com loops de treinamento personalizados TensorFlow sem o Keras, envolva o modelo e o loop de treinamento com a TensorFlow função decorator (@tf.function
) para aproveitar a aceleração do compilador.
SageMaker O Training Compiler executa uma otimização em nível de gráfico e usa o decorador para garantir que suas TensorFlow funções estejam configuradas para serem executadas no modo gráfico.
Para treinamento em uma única GPU
TensorFlow A versão 2.0 ou posterior tem a execução rápida ativada por padrão, então você deve adicionar o @tf.function
decorador na frente de cada função usada para construir um modelo. TensorFlow
Para treinamento distribuído
Além das alterações necessárias para Usar o Keras para treinamento distribuído, você precisa garantir que as funções a serem executadas em cada GPU sejam anotadas com @tf.function
, enquanto as funções de comunicação entre GPUs não forem anotadas. O código de treinamento de exemplo deve se parecer com o seguinte:
@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))
Observe que essas instruções podem ser usadas tanto para várias GPUs de nó único quanto para várias GPUs de vários nós.