Comment utiliser l'algorithme de classification des images SageMaker – TensorFlow - Amazon SageMaker AI

Comment utiliser l'algorithme de classification des images SageMaker – TensorFlow

Vous pouvez utiliser Image Classification - TensorFlow comme un algorithme intégré dans Amazon SageMaker AI. La section suivante explique comment utiliser Image Classification - TensorFlow avec le kit SageMaker AI Python SDK. Pour en savoir plus sur l’utilisation de l’algorithme Image Classification – TensorFlow à partir de l’interface utilisateur d’Amazon SageMaker Studio, consultez Modèles SageMaker JumpStart pré-entraînés.

L’algorithme Image Classification - TensorFlow prend en charge l’apprentissage par transfert à l’aide de n’importe quel modèle de hub TensorFlow pré-entraîné compatible. Pour obtenir la liste de tous les modèles pré-entraînés disponibles, consultez Modèles de hub TensorFlow. Chaque modèle pré-entraîné possède un model_id unique. L'exemple suivant utilise MobileNet V2 1.00 224 (model_id :tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4) pour l'affinage sur un jeu de données personnalisé. Les modèles pré-entraînés sont tous pré-téléchargés depuis le hub TensorFlow et stockés dans des compartiments Amazon S3 afin que les tâches d'entraînement puissent s'exécuter de manière isolée sur le réseau. Utilisez ces artefacts d’entraînement des modèles prégénérés pour construire un estimateur SageMaker AI.

Tout d'abord, récupérez l'URI de l'image Docker, l'URI du script d'entraînement et l'URI du modèle pré-entraîné. Ensuite, modifiez les hyperparamètres comme bon vous semble. Vous pouvez consulter un dictionnaire Python de tous les hyperparamètres disponibles et de leurs valeurs par défaut avec hyperparameters.retrieve_default. Pour plus d’informations, consultez Hyperparamètres Image Classification - TensorFlow. Utilisez ces valeurs pour construire un estimateur SageMaker AI.

Note

Les valeurs par défaut des hyperparamètres sont différentes selon les modèles. Pour les modèles plus grands, la taille de lot par défaut est plus petite et l'hyperparamètre train_only_top_layer a pour valeur "True".

Cet exemple utilise le jeu de données tf_flowers, qui contient cinq classes d'images de fleurs. Nous avons pré-téléchargé le jeu de données depuis TensorFlow sous la licence Apache 2.0 et l'avons mis à disposition avec Amazon S3. Pour affiner votre modèle, appelez .fit à l'aide de l'emplacement Amazon S3 de votre jeu de données d'entraînement.

from sagemaker import image_uris, model_uris, script_uris, hyperparameters from sagemaker.estimator import Estimator model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*" training_instance_type = "ml.p3.2xlarge" # Retrieve the Docker image train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None) # Retrieve the training script train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pretrained model tarball for transfer learning train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training") # Retrieve the default hyper-parameters for fine-tuning the model hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version) # [Optional] Override default hyperparameters with custom values hyperparameters["epochs"] = "5" # The sample training data is available in the following S3 bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tf_flowers/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-ic-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create SageMaker Estimator instance tf_ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location, ) # Use S3 path of the training data to launch SageMaker TrainingJob tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)