

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécutez TensorFlow des tâches de formation avec SageMaker Training Compiler
<a name="training-compiler-enable-tensorflow"></a>

**Important**  
**Avis d'obsolescence : le compilateur de ** SageMaker formation n'est pas pris en charge dans le SDK SageMaker Python v3. Si vous utilisez actuellement Training Compiler, continuez à utiliser SageMaker Python SDK v2. Pour les nouveaux projets, pensez à utiliser la `ModelTrainer` classe unifiée avec les frameworks pris en charge. Consultez la documentation du SDK [ SageMaker Python ](https://sagemaker.readthedocs.io/en/stable/) pour obtenir des conseils sur la migration.

Vous pouvez utiliser n'importe quelle interface d' SageMaker IA pour exécuter une tâche de formation avec SageMaker Training Compiler : Amazon SageMaker Studio Classic, Amazon SageMaker Notebook instances AWS SDK pour Python (Boto3), et AWS Command Line Interface.

**Topics**
+ [Utilisation du SDK SageMaker Python](#training-compiler-enable-tensorflow-pysdk)
+ [Utilisation du SDK SageMaker AI Python et extension des conteneurs d'apprentissage profond SageMaker AI Framework](#training-compiler-enable-tensorflow-sdk-extend-container)
+ [Activer le compilateur de SageMaker formation à l'aide de l'opération `CreateTrainingJob` d'API SageMaker AI](#training-compiler-enable-tensorflow-api)

## Utilisation du SDK SageMaker Python
<a name="training-compiler-enable-tensorflow-pysdk"></a>

Pour activer SageMaker Training Compiler, ajoutez le `compiler_config` paramètre à l'estimateur SageMaker AI TensorFlow ou Hugging Face. Importez la classe `TrainingCompilerConfig` et transmettez-en une instance au paramètre `compiler_config`. Les exemples de code suivants montrent la structure des classes d'estimateur SageMaker AI lorsque SageMaker Training Compiler est activé.

**Astuce**  
Pour commencer à utiliser les modèles prédéfinis fournis par les bibliothèques TensorFlow et Transformers, essayez d'utiliser les tailles de lots fournies dans le tableau de référence à l'adresse. [Modèles testés](training-compiler-support.md#training-compiler-tested-models)

**Note**  
SageMaker Training Compiler for TensorFlow est disponible via les estimateurs des [ frameworks SageMaker AI [ TensorFlow ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) et ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) Hugging Face.

Pour obtenir des informations adaptées à votre cas d’utilisation, consultez l’une des options suivantes.

### Pour l’entraînement à GPU unique
<a name="training-compiler-estimator-tensorflow-single"></a>

------
#### [ 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()
```

Pour préparer votre script d’entraînement, consultez les pages suivantes.
+ [Pour l’entraînement à GPU unique](training-compiler-tensorflow.md#training-compiler-tensorflow-models-keras-single-gpu)d'un modèle construit à l'aide de TensorFlow Keras (`tf.keras.*`).
+ [Pour l’entraînement à GPU unique](training-compiler-tensorflow.md#training-compiler-tensorflow-models-no-keras-single-gpu)d'un modèle construit à l'aide de TensorFlow modules (`tf.*`à l'exclusion des modules TensorFlow Keras).

------
#### [ 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()
```

Pour préparer votre script d’entraînement, consultez les pages suivantes.
+ [Pour l’entraînement à GPU unique](training-compiler-tensorflow.md#training-compiler-tensorflow-models-transformers-keras-single-gpu)d'un modèle TensorFlow Keras avec Hugging Face Transformers
+ [Pour l’entraînement à GPU unique](training-compiler-tensorflow.md#training-compiler-tensorflow-models-transformers-no-keras-single-gpu)d'un TensorFlow modèle avec Hugging Face Transformers

------

### Pour l’entraînement distribué
<a name="training-compiler-estimator-tensorflow-distributed"></a>

------
#### [ 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()
```

**Astuce**  
Pour préparer votre script d’entraînement, consultez les pages suivantes.  
[Pour l’entraînement distribué](training-compiler-tensorflow.md#training-compiler-tensorflow-models-transformers-keras-distributed)d'un modèle TensorFlow Keras avec Hugging Face Transformers
[Pour l’entraînement distribué](training-compiler-tensorflow.md#training-compiler-tensorflow-models-transformers-no-keras-distributed)d'un TensorFlow modèle avec Hugging Face Transformers

------

La liste suivante représente l'ensemble minimal de paramètres requis pour exécuter une tâche de SageMaker formation avec le compilateur.

**Note**  
Lorsque vous utilisez l'estimateur SageMaker AI Hugging Face, vous devez spécifier les `compiler_config` paramètres`transformers_version`, `tensorflow_version``hyperparameters`, et pour activer SageMaker Training Compiler. Vous ne pouvez pas utiliser `image_uri` pour spécifier manuellement les conteneurs de deep learning intégrés à Training Compiler qui sont répertoriés dans [Cadres pris en charge](training-compiler-support.md#training-compiler-supported-frameworks).
+ `entry_point` (str) : obligatoire. Spécifiez le nom de fichier de votre script d’entraînement.
+ `instance_count` (int) : obligatoire. Spécifiez le nombre d’instances.
+ `instance_type` (str) : obligatoire. Spécifiez le type d’instance.
+ `transformers_version`(str) — Obligatoire uniquement lors de l'utilisation de l'estimateur SageMaker AI Hugging Face. Spécifiez la version de la bibliothèque Hugging Face Transformers prise en charge par SageMaker Training Compiler. Pour trouver les versions disponibles, consultez [Cadres pris en charge](training-compiler-support.md#training-compiler-supported-frameworks).
+ `framework_version` ou `tensorflow_version` (str) : obligatoire. Spécifiez la TensorFlow version prise en charge par SageMaker Training Compiler. Pour trouver les versions disponibles, consultez [Cadres pris en charge](training-compiler-support.md#training-compiler-supported-frameworks).
**Note**  
Lorsque vous utilisez l' TensorFlow estimateur SageMaker AI, vous devez spécifier. `framework_version`  
Lorsque vous utilisez l'estimateur SageMaker AI Hugging Face, vous devez spécifier à la fois et. `transformers_version` `tensorflow_version`
+ `hyperparameters` (dict) : facultatif. Spécifiez des hyperparamètres pour la tâche d’entraînement, tels que `n_gpus`, `batch_size` et `learning_rate`. Lorsque vous activez SageMaker Training Compiler, essayez des lots de plus grande taille et ajustez le taux d'apprentissage en conséquence. Pour trouver des études de cas sur l’utilisation du compilateur et l’ajustement de la taille des lots pour améliorer la vitesse d’entraînement, consultez [Modèles testés](training-compiler-support.md#training-compiler-tested-models) et [SageMaker Exemples de compilateurs de formation, de carnets et de blogs](training-compiler-examples-and-blogs.md).
+ `compiler_config`(TrainingCompilerConfig objet) — Obligatoire. Incluez ce paramètre pour activer SageMaker Training Compiler. Les paramètres suivants sont destinés à la classe `TrainingCompilerConfig`.
  + `enabled` (bool) : facultatif. Spécifiez `True` ou `False` activez ou désactivez SageMaker Training Compiler. La valeur par défaut est `True`.
  + `debug` (bool) : facultatif. Pour recevoir des journaux d’entraînement plus détaillés de vos tâches d’entraînement accélérées par le compilateur, remplacez la valeur par `True`. Cependant, la journalisation supplémentaire peut ajouter une surcharge et ralentir la tâche d’entraînement compilé. La valeur par défaut est `False`.

**Avertissement**  
Si vous activez SageMaker Debugger, cela peut avoir un impact sur les performances de SageMaker Training Compiler. Nous vous recommandons de désactiver le débogueur lorsque vous exécutez SageMaker Training Compiler afin de vous assurer que cela n'a aucun impact sur les performances. Pour de plus amples informations, veuillez consulter [Considérations](training-compiler-tips-pitfalls.md#training-compiler-tips-pitfalls-considerations). Pour désactiver les fonctionnalités de Debugger, ajoutez les deux arguments suivants à l’estimateur :  

```
disable_profiler=True,
debugger_hook_config=False
```

Si la tâche d’entraînement avec le compilateur est lancée avec succès, vous recevez les journaux suivants lors de la phase d’initialisation de la tâche : 
+ Avec `TrainingCompilerConfig(debug=False)`

  ```
  Found configuration for Training Compiler
  Configuring SM Training Compiler...
  ```
+ Avec `TrainingCompilerConfig(debug=True)`

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

## Utilisation du SDK SageMaker AI Python et extension des conteneurs d'apprentissage profond SageMaker AI Framework
<a name="training-compiler-enable-tensorflow-sdk-extend-container"></a>

AWS Des versions adaptées de Deep Learning Containers (DLC) à TensorFlow utiliser incluent des modifications en plus du framework open source TensorFlow . TensorFlow Les conteneurs d'apprentissage profond [ SageMaker AI Framework ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) sont optimisés pour l' AWS infrastructure sous-jacente et Amazon SageMaker AI. Avec l'avantage d'utiliser les DLC, l'intégration de SageMaker Training Compiler améliore encore les performances par rapport à la version native TensorFlow. En outre, vous pouvez créer un conteneur d’entraînement personnalisé en étendant l’image DLC.

**Note**  
Cette fonctionnalité de personnalisation de Docker n'est actuellement disponible que pour TensorFlow.

Pour étendre et personnaliser les TensorFlow DLC SageMaker AI en fonction de votre cas d'utilisation, suivez les instructions suivantes.

### Création d’un fichier Dockerfile
<a name="training-compiler-enable-tensorflow-sdk-extend-container-create-dockerfile"></a>

Utilisez le modèle Dockerfile suivant pour étendre le DLC SageMaker AI TensorFlow . Vous devez utiliser l'image du TensorFlow DLC SageMaker AI comme image de base de votre conteneur Docker. Pour trouver les URI des images du TensorFlow DLC SageMaker AI, consultez Frameworks [ pris en charge. ](https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler-support.html#training-compiler-supported-frameworks)

```
# 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
...
```

Pour plus d’informations, consultez [Étape 2 : créer et télécharger le fichier Dockerfile et les scripts d’entraînement Python](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step2).

Tenez compte des pièges suivants lors de l'extension des DLC SageMaker AI Framework :
+ Ne désinstallez pas ou ne modifiez pas explicitement la version des TensorFlow packages dans les conteneurs SageMaker AI. Cela entraîne le remplacement des TensorFlow packages AWS optimisés par des packages open source TensorFlow , ce qui peut entraîner une dégradation des performances.
+ Faites attention aux packages qui ont une TensorFlow version ou une saveur particulière en tant que dépendance. Ces packages peuvent désinstaller implicitement les packages AWS optimisés TensorFlow et installer des packages open source TensorFlow .

Par exemple, il existe un problème connu selon lequel les [ tensorflow/text ](https://github.com/tensorflow/text) bibliothèques [ tensorflow/models ](https://github.com/tensorflow/models) et tentent toujours de [ réinstaller l'open source TensorFlow](https://github.com/tensorflow/models/issues/9267). Si vous devez installer ces bibliothèques pour choisir une version spécifique adaptée à votre cas d'utilisation, nous vous recommandons de consulter les Dockerfiles du TensorFlow DLC SageMaker AI pour la version 2.9 ou ultérieure. Les chemins d’accès aux fichiers Dockerfile sont généralement au format suivant : `tensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu`. Dans les Dockerfiles, vous devriez trouver les lignes de code pour réinstaller le TensorFlow binaire AWS géré (spécifié dans la variable d'`TF_URL`environnement) et les autres dépendances dans l'ordre. La section de réinstallation doit ressembler à l’exemple suivant :

```
# 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}}
```

### Génération et envoi (push) vers ECR
<a name="training-compiler-enable-tensorflow-sdk-extend-container-build-and-push"></a>

Pour générer et envoyer (push) votre conteneur Docker vers Amazon ECR, suivez les instructions des liens suivants :
+ [Étape 3 : créer le conteneur](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step3)
+ [Étape 4 : tester le conteneur](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step4)
+ [Étape 5 : pousser le conteneur vers Amazon ECR](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html#byoc-training-step5)

### Exécuter à l'aide de l' SageMaker estimateur du SDK Python
<a name="training-compiler-enable-tensorflow-sdk-extend-container-run-job"></a>

Utilisez l'estimateur SageMaker AI TensorFlow Framework comme d'habitude. Vous devez spécifier `image_uri` pour utiliser le nouveau conteneur que vous avez hébergé dans 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()
```

## Activer le compilateur de SageMaker formation à l'aide de l'opération `CreateTrainingJob` d'API SageMaker AI
<a name="training-compiler-enable-tensorflow-api"></a>

SageMaker Les options de configuration du compilateur de formation doivent être spécifiées via le `HyperParameters` champ `AlgorithmSpecification` et de la syntaxe de demande pour l'opération de l'[`CreateTrainingJob`API](https://amazonaws.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html).

```
"AlgorithmSpecification": {
    "TrainingImage": "{{<sagemaker-training-compiler-enabled-dlc-image>}}"
},

"HyperParameters": {
    "sagemaker_training_compiler_enabled": "true",
    "sagemaker_training_compiler_debug_mode": "false"
}
```

Pour obtenir la liste complète des URI d'images de conteneurs de deep learning qui ont été implémentés par SageMaker Training Compiler, consultez[Cadres pris en charge](training-compiler-support.md#training-compiler-supported-frameworks).