TensorFlow est une plateforme open source de bout en bout populaire pour développer et déployer des applications d'apprentissage automatique (machine learning) en utilisant les nombreux outils et bibliothèques qui la composent. Utiliser Qarnot pour l'entraînement et l'obtention de prédictions pour votre modèle TensorFlow est une tâche simple. Voici une procédure rapide étape par étape pour vous guider à travers les différentes étapes de cette opération, alors suivez le guide !
Si vous êtes intéressé par une autre version, veuillez nous envoyer un e-mail à qlab@qarnot.com.
Avant de commencer un calcul avec le SDK Python, quelques étapes sont nécessaires :
Note : En plus du SDK Python, Qarnot fournit des SDK C# et Node.js ainsi qu'une ligne de commande.
Ce cas test montrera comment entraîner un classificateur d'images de chiens et de chats basé sur un modèle pré-entraîné et faire des prédictions en utilisant les Pools de Qarnot. Les fichiers d'entrée nécessaires pour ce tutoriel peuvent être téléchargés ici.
Une fois que vous avez tout téléchargé, votre répertoire de travail devrait ressembler à ceci :
dogcats-small
: images utilisées pour l'étiquetagelearn
animals
: images pour l'entraînementpretrained_model
: le modèle pré-entraînéscripts
: scripts qui s'exécuteront sur Qarnotqlabel_pool.py
: fait des prédictions dans des pools (code ci-dessous)qlearn.py
: entraîne le classificateur d'images chiens et chats (code ci-dessous)sync_bucket.py
: télécharge les fichiers nécessaires sur Qarnot (code ci-dessous)Assurez-vous d'ajouter les scripts à leurs emplacements respectifs tels qu'ils apparaissent dans l'article.
Une fois que vous avez configuré votre environnement de travail, vous pouvez commencer par la première étape : l'entraînement du classificateur d'images chiens et chats. Assurez-vous de copier votre jeton d'authentification dans le script (à la place de <<<MY_SECRET_TOKEN>>>
) pour pouvoir lancer la tâche sur Qarnot.
Ensuite, vous devez transférer vos données locales vers des buckets sur Qarnot. Pour ce faire, copiez le code suivant dans un script python et exécutez python3 sync_bucket.py
depuis votre terminal.
#!/usr/bin/env python3
# Import the Qarnot SDK
import qarnot
# Connect to the Qarnot platform
conn=qarnot.connection.Connection(client_token='<<<MY_SECRET_TOKEN>>>')
# Create a bucket for the scripts that will run once the task starts
bucket = conn.create_bucket("tensorflow-in-scripts")
bucket.sync_directory("buckets/scripts")
# Create a bucket for the pretrained model
bucket = conn.create_bucket("tensorflow-in-pretrained_model")
bucket.sync_directory("buckets/pretrained_model")
# Create a bucket for the training images
bucket = conn.create_bucket("tensorflow-in-learn")
bucket.sync_directory("buckets/learn")
# Create a bucket for the images we want to label
bucket = conn.create_bucket("tensorflow-in-dogscats-small")
bucket.sync_directory("buckets/dogscats-small")
Une fois le transfert terminé, vous devriez voir vos buckets nouvellement créés sur notre plateforme et vous pouvez inspecter les images que vous venez de télécharger !
Vous êtes maintenant prêt à entraîner votre classificateur de chiens et de chats sur Qarnot en copiant le code suivant dans un script python et en exécutant python3 qlearn.py &
depuis votre terminal.
#!/usr/bin/env python3
# Import the Qarnot SDK
import qarnot
# Connect to the Qarnot Platform
conn = qarnot.Connection(client_token='<<<MY_SECRET_TOKEN>>>')
# Create a task
task = conn.create_task("Hello World - Tensorflow - Train", "docker-batch", 1)
# Retrieve the created input buckets
task.resources = [
conn.retrieve_bucket("tensorflow-in-pretrained_model"),
conn.retrieve_bucket("tensorflow-in-scripts"),
conn.retrieve_bucket("tensorflow-in-learn")
]
# Create an output bucket
task.results = conn.create_bucket("tensorflow-out-model")
# Give parameters regarding the Docker image to be used
task.constants["DOCKER_REPO"] = "qarnotlab/tensorflow"
task.constants["DOCKER_TAG"] = "1.12.0"
task.constants["DOCKER_CMD"] = "bash train.sh animals/"
# Submit the task
task.run(output_dir='model')
À tout moment, vous pouvez surveiller l'état de votre tâche sur notre plateforme. Une fois l'entraînement terminé, la tâche devrait passer à l'état Success
(Succès) avec une couleur verte.
Vous pouvez ensuite vérifier votre nouveau classificateur entraîné dans le bucket de sortie tensorflow-out-model
.
Maintenant que vous avez réentraîné le modèle pour la classification d'images de chiens et de chats, il est temps de procéder à l'étiquetage (labeling). Pour ce faire, cela sera effectué dans un pool. Afin de lancer la tâche de classification, copiez le code suivant dans un script python et exécutez python3 qlabel_pool.py &
depuis votre terminal.
#!/usr/bin/env python3
# Import the Qarnot SDK
import qarnot
# Connect to the Qarnot Platform
conn = qarnot.Connection(client_token = '<<<MY_SECRET_TOKEN>>>')
# Create a pool
pool = conn.create_pool("Hello World - Tensorflow - Label Pool", "docker-batch", 10)
# Give parameters regarding the Docker image to be used
pool.constants["DOCKER_REPO"] = "qarnotlab/tensorflow"
pool.constants["DOCKER_TAG"] = "1.12.0"
# Retrieve the created input buckets
pool.resources = [
conn.retrieve_bucket("tensorflow-in-scripts"),
conn.retrieve_bucket("tensorflow-in-dogscats-small"),
conn.retrieve_bucket("tensorflow-out-model")
]
# Submit the pool
pool.submit()
# Create the task
task = conn.create_task("Hello World - Tensorflow - Label", pool, 100)
task.constants["DOCKER_CMD"] = "bash /job/label_pool.sh /job/${INSTANCE_ID}.jpg"
# Create an output bucket
task.results = conn.create_bucket("tensorflow-out-sorted-pool")
# Run the task
task.run(output_dir = 'sorted-images-pool')
pool.close()
Le script ci-dessus lancera un pool qui provisionne 10 serveurs et exécute une tâche avec 100 instances de calcul. Chaque instance étiquetera une des 100 images que vous avez transférées dans le bucket tensorflow-in-dogscats-small
. Une fois la tâche en cours d'exécution, vous pouvez visualiser sa progression depuis votre Console et voir l'état de chaque instance dans le visualiseur d'instances sur la gauche.
Une fois la tâche terminée, vous pouvez inspecter les résultats dans le bucket tensorflow-out-sorted-pool
dans la Console et regarder les différentes images que votre modèle a étiquetées.
C'est tout ! Si vous avez des questions ou si vous êtes intéressé par l'exécution de ce cas d'utilisation et d'autres utilisant des GPU, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !