Введение

TensorFlow — это популярная сквозная платформа с открытым исходным кодом для разработки и развертывания приложений машинного обучения с использованием множества инструментов и библиотек, входящих в ее состав. Использование Qarnot для обучения и получения прогнозов для вашей модели TensorFlow — простая задача. Вот краткое пошаговое руководство, которое проведет вас через различные шаги, как это сделать, так что следуйте!

Предпосылки

Прежде чем начать расчет с помощью Python SDK, необходимо выполнить несколько шагов:

  • Получить токен аутентификации (здесь)
  • Установите Python SDK от Qarnot (здесь)

Примечание: в дополнение к Python SDK Qarnot предоставляет SDK C# и Node.js и Командную строку.

Прецедент

Этот тестовый пример продемонстрирует, как обучать классификатор изображений собак и кошек на основе предварительно обученной модели и делать прогнозы с использованием пулов Карнота. Необходимые входные файлы, необходимые для этого урока, можно скачать здесь.

Запуск тестового случая

После того, как вы настроили свою рабочую среду, вы можете начать с первого шага: обучения классификатора изображений собак и кошек. Обязательно скопируйте в скрипт свой токен аутентификации (вместо <<<MY_SECRET_TOKEN>>>), чтобы можно было запустить задачу на Qarnot.

Обучение классификатора изображений

Далее вам нужно перенести свои локальные данные в корзины на Qarnot. Для этого скопируйте следующий код в скрипт Python и запустите python3 sync_bucket.py из своего терминала.

#!/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")

После того, как передача будет завершена, вы должны увидеть свои вновь созданные сегменты на своей консоли, и вы сможете проверить изображения, которые вы только что загрузили! Ниже приведен пример входного изображения кошки.

Теперь вы готовы обучить свой классификатор собак и кошек на Qarnot, скопировав следующий код в скрипт Python и запустив python3 qlearn.py & со своего терминала.

#!/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')

Результаты обучения

В любой момент вы можете следить за статусом вашей задачи на вашей Консоли. После завершения обучения задача должна перейти в состояние Успешно с зеленым цветом.

Затем вы можете проверить свой новый обученный классификатор в выходной корзине tensorflow-out-model.

Разметка изображений кошек и собак

Теперь, когда вы переобучили модель для классификации изображений собак и кошек, пришло время пометить ее. Для этого это будет сделано в пуле. Чтобы запустить задачу классификации, скопируйте следующий код в скрипт Python и запустите python3 qlabel_pool.py & из своего терминала.

#!/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')

Приведенный выше сценарий запустит пул, который выделяет 10 серверов, и запустит задачу со 100 вычислительными экземплярами, каждый экземпляр будет помечать одно из 100 изображений, переданных вами в корзину tensorflow-in-dogscats-small. Когда задача запущена, вы можете следить за ее ходом в консоли и видеть статус каждого экземпляра в визуализаторе экземпляров слева.

Маркировка результатов

После завершения задачи вы можете проверить результаты в сегменте tensorflow-out-sorted-pool в консоли и просмотреть различные изображения, помеченные вашей моделью.

Идти дальше

Если вы ищете дополнительные руководства Qarnot по машинному обучению, загляните в наш блог или наш веб-сайт.