Execute trabalhos TensorFlow de treinamento com o SageMaker Training Compiler - SageMaker IA da Amazon

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

Execute trabalhos TensorFlow de treinamento com o SageMaker Training Compiler

Você pode usar qualquer uma das interfaces de SageMaker IA para executar um trabalho de treinamento com o SageMaker Training Compiler: Amazon SageMaker Studio Classic, Amazon SageMaker Notebook Instances e. AWS SDK for Python (Boto3) AWS Command Line Interface

Usando o SDK do SageMaker Python

Para ativar o SageMaker Training Compiler, adicione o compiler_config parâmetro ao estimador SageMaker AI TensorFlow ou Hugging Face. Importe a classe TrainingCompilerConfig e passe uma instância dela para o parâmetro compiler_config. Os exemplos de código a seguir mostram a estrutura das classes de estimadores de SageMaker IA com o SageMaker Training Compiler ativado.

dica

Para começar com os modelos pré-construídos fornecidos pelas bibliotecas TensorFlow e Transformers, tente usar os tamanhos de lote fornecidos na tabela de referência em. Modelos testados

nota

SageMaker O Training Compiler for TensorFlow está disponível por meio dos estimadores da SageMaker estrutura AI TensorFlowe Hugging Face.

Para obter informações adequadas ao seu caso de uso, consulte uma das opções a seguir.

TensorFlow
from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_estimator=TensorFlow( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', framework_version='2.9.1', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_estimator.fit()

Para preparar seu script de treinamento, consulte as páginas a seguir.

Hugging Face Estimator with TensorFlow
from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()

Para preparar seu script de treinamento, consulte as páginas a seguir.

Hugging Face Estimator with TensorFlow
from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()
dica

Para preparar seu script de treinamento, consulte as páginas a seguir.

A lista a seguir é o conjunto mínimo de parâmetros necessários para executar um trabalho de SageMaker treinamento com o compilador.

nota

Ao usar o estimador SageMaker AI Hugging Face, você deve especificar os parâmetros,,hyperparameters, e compiler_config para ativar o transformers_version Training tensorflow_version Compiler. SageMaker Você não pode usar image_uri para especificar manualmente os contêineres de aprendizado profundo integrados ao Training Compiler que estão listados em Estruturas compatíveis.

  • entry_point (str): Obrigatório. Especifique o nome do arquivo do seu script de treinamento.

  • instance_count (int): Obrigatório. Especifique o número de instâncias.

  • instance_type (str): Obrigatório. Especifique o tipo de instância.

  • transformers_version(str) — Exigido somente ao usar o estimador SageMaker AI Hugging Face. Especifique a versão da biblioteca Hugging Face Transformers suportada pelo Training Compiler. SageMaker Para encontrar as versões disponíveis, consulte Estruturas compatíveis.

  • framework_version ou tensorflow_version (str): Obrigatório. Especifique a TensorFlow versão compatível com o SageMaker Training Compiler. Para encontrar as versões disponíveis, consulte Estruturas compatíveis.

    nota

    Ao usar o TensorFlow estimador de SageMaker IA, você deve especificar. framework_version

    Ao usar o estimador SageMaker AI Hugging Face, você deve especificar e. transformers_version tensorflow_version

  • hyperparameters (dict): Opcional. Especifique hiperparâmetros para o trabalho de treinamento n_gpus, batch_size e. learning_rate Ao ativar o SageMaker Training Compiler, experimente lotes maiores e ajuste a taxa de aprendizado de acordo. Para encontrar estudos de caso sobre o uso do compilador e tamanhos de lote ajustados para melhorar a velocidade de treinamento, consulte Modelos testados e SageMaker Exemplos de notebooks e blogs de compilador de treinamento.

  • compiler_config(TrainingCompilerConfig objeto) — Obrigatório. Inclua esse parâmetro para ativar o SageMaker Training Compiler. Veja a seguir os parâmetros para a classe TrainingCompilerConfig.

    • enabled (bool): Opcional. Especifique True ou False ative ou desative o SageMaker Training Compiler. O valor padrão é True.

    • debug (bool): Opcional. Para receber logs de treinamento mais detalhados de seus trabalhos de treinamento acelerados por compilador, altere-os para True. No entanto, o registro adicional pode aumentar a sobrecarga e retardar o trabalho de treinamento compilado. O valor padrão é False.

Atenção

Se você ativar o SageMaker Debugger, isso poderá afetar o desempenho do SageMaker Training Compiler. Recomendamos que você desative o Debugger ao executar o SageMaker Training Compiler para garantir que não haja impacto no desempenho. Para obter mais informações, consulte Considerações. Para desativar as funcionalidades do Depurador, adicione os dois argumentos a seguir ao estimador.

disable_profiler=True, debugger_hook_config=False

Se o trabalho de treinamento com o compilador for iniciado com êxito, você receberá os seguintes logs durante a fase de inicialização do trabalho:

  • Com TrainingCompilerConfig(debug=False)

    Found configuration for Training Compiler Configuring SM Training Compiler...
  • Com TrainingCompilerConfig(debug=True)

    Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode

Usando o SDK SageMaker AI Python e estendendo os contêineres de Deep Learning do SageMaker AI Framework

AWS Deep Learning Containers (DLC) para TensorFlow uso em versões adaptadas TensorFlow que incluem mudanças na estrutura de código aberto TensorFlow . Os SageMaker AI Framework Deep Learning Containers são otimizados para a AWS infraestrutura subjacente e a Amazon SageMaker AI. Com a vantagem de usar o DLCs, a integração do SageMaker Training Compiler adiciona mais melhorias de desempenho em relação à nativa TensorFlow. Além disso, você pode criar um contêiner de treinamento personalizado estendendo a imagem do DLC.

nota

Atualmente, esse recurso de personalização do Docker está disponível apenas para. TensorFlow

Para estender e personalizar a SageMaker IA TensorFlow DLCs para seu caso de uso, use as instruções a seguir.

Crie um Dockerfile.

Use o modelo Dockerfile a seguir para estender o DLC SageMaker AI TensorFlow . Você deve usar a imagem SageMaker AI TensorFlow DLC como imagem base do seu contêiner Docker. Para encontrar a imagem do TensorFlow DLC SageMaker AI URIs, consulte Estruturas suportadas.

# SageMaker AI TensorFlow Deep Learning Container image FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/tensorflow-training:<image-tag> ENV PATH="/opt/ml/code:${PATH}" # This environment variable is used by the SageMaker AI container # to determine user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code # Add more code lines to customize for your use-case ...

Para mais informações, consulte Etapa 2: Como criar e fazer upload dos scripts de treinamento do Dockerfile e do Python.

Considere as seguintes armadilhas ao estender o SageMaker AI Framework: DLCs

  • Não desinstale nem altere explicitamente a versão dos TensorFlow pacotes nos contêineres de SageMaker IA. Isso faz com que os TensorFlow pacotes AWS otimizados sejam substituídos por TensorFlow pacotes de código aberto, o que pode resultar na degradação do desempenho.

  • Cuidado com os pacotes que têm uma TensorFlow versão ou um sabor específico como dependência. Esses pacotes podem desinstalar implicitamente os pacotes AWS otimizados TensorFlow e instalar pacotes de código aberto TensorFlow .

Por exemplo, há um problema conhecido de que as bibliotecas tensorflow/models e tensorflow/text sempre tentam reinstalar o código aberto. TensorFlow Se você precisar instalar essas bibliotecas para escolher uma versão específica para seu caso de uso, recomendamos que você consulte os Dockerfiles do SageMaker AI TensorFlow DLC para v2.9 ou posterior. Os caminhos para os Dockerfiles geralmente estão no seguinte formato: tensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu. Nos Dockerfiles, você deve encontrar as linhas de código para reinstalar o TensorFlow binário AWS gerenciado (especificado para a variável de TF_URL ambiente) e outras dependências em ordem. A seção de Reinstalar deve se parecer com o seguinte exemplo:

# tf-models does not respect existing installations of TensorFlow # and always installs open source TensorFlow RUN pip3 install --no-cache-dir -U \ tf-models-official==x.y.z RUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z \ tensorflow-datasets==x.y.z

Compile e envie para o ECR

Para compilar e enviar seu contêiner do Docker para o Amazon ECR, siga as instruções nos links a seguir.

Execute usando o SageMaker Python SDK Estimator

Use o estimador da TensorFlow estrutura de SageMaker IA como de costume. Você deve especificar image_uri para usar o novo contêiner que você hospedou no Amazon ECR.

import sagemaker, boto3 from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig account_id = boto3.client('sts').get_caller_identity().get('Account') ecr_repository = 'tf-custom-container-test' tag = ':latest' region = boto3.session.Session().region_name uri_suffix = 'amazonaws.com' byoc_image_uri = '{}.dkr.ecr.{}.{}/{}'.format( account_id, region, uri_suffix, ecr_repository + tag ) byoc_image_uri # This should return something like # 111122223333.dkr.ecr.us-east-2.amazonaws.com/tf-custom-container-test:latest estimator = TensorFlow( image_uri=image_uri, role=get_execution_role(), base_job_name='tf-custom-container-test-job', instance_count=1, instance_type='ml.p3.8xlarge' compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) # Start training estimator.fit()

Ativar o compilador de SageMaker treinamento usando a operação da CreateTrainingJob API SageMaker AI

SageMaker As opções de configuração do Training Compiler devem ser especificadas por meio do HyperParameters campo AlgorithmSpecification e na sintaxe da solicitação para a operação da CreateTrainingJobAPI.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false" }

Para encontrar uma lista completa de imagens de contêiner de aprendizado profundo URIs que têm o SageMaker Training Compiler implementado, consulteEstruturas compatíveis.