[Перевод] Необходимый инструмент для каждого дата-сайентиста

image

Давайте посмотрим правде в глаза: обучение модели машинного обучения отнимает много времени, даже с учетом развития вычислительной техники за последние несколько лет. Даже самые тривиальные модели имеют более миллиона параметров. В масштабе крупнее у моделей бывает более миллиарда параметров — у GPT-3 их более 175 миллиардов! и обучение этих моделей занимает дни, а то и недели. Как дата-сайентисты мы хотели бы следить за метриками модели, чтобы знать, работает ли она, как мы того ожидаем. Но нет смысла сидеть рядом с компьютером, часами отслеживая показатели. Хорошо было бы получить все эти данные на телефон.

Эту задачу можно решить с помощью TensorDash — инструмента удаленного мониторинга ваших моделей машинного обучения с открытым исходным кодом, о котором и пойдет речь дальше. Под катом примеры применения TensorDash с TensorFlow, Keras, PyTorch и Fast.ai.


Когда в последний раз вы оставляли модель тренироваться в течение нескольких часов и покидали место работы, а вернувшись, обнаруживали модель поврежденной на полпути? Это расстраивает, а поскольку у большинства людей нет возможности обучать модели машинного обучения локально, предпочтительны облачные сервисы, такие как GCP, Google Colab, AWS и Azure: пользователи платят за использование ресурсов. В этом случае, если модель потерпела крах в промежутке между тренировками, вы платите за неиспользуемый сервис. Уведомления о статусе модели помогут избавиться от страха что-то пропустить.

TensorDash


TensorDash — бесплатное приложение с открытым исходным кодом, позволяющее удаленно отслеживать ваши модели машинного обучения с помощью подробных графиков всех ваших показателей. Оно также уведомляет вас, когда обучение завершилось или в случае, если модель потерпела крах. Поддерживаются все основные фреймворки машинного обучения: TensorFlow, Pytorch, Keras и Fastai. Теперь не нужно напрягаться, сидя перед компьютером и молясь о повышении точности. Вы можете отслеживать модель, не выходя из дома.

ol7p6zgk7_reqdmp2orvcbfzbgw.png


Работа TensorDash

Применение TensorDash


  1. Установите TensorDash из Play Store. Поддержка устройств iOS скоро появится.
  2. Cоздайте учетную запись.
  3. Установите пакет TensorDash для Python, выполнив команду pip install tensor-dash.
  4. Следуйте приведенным ниже инструкциям о том, как использовать TensorDash с фреймворками.


Поддержка Keras/tf.keras


Удаленный мониторинг с помощью Keras и tf.keras работает с использованием функции обратного вызова. Импортируйте TensorDash. Определите объект TensorDash, используя в качестве параметров имя модели, электронную почту вашей учетной записи и пароль. Через обратные вызовы передайте объект TensorDash в функцию fit(). Чтобы получить уведомление о сбое модели, добавьте функцию fit() в раздел обработки исключений, а в except вызовите метод sendCrash(). Ниже приведен пример кода для использования TensorDash в Keras/tf.keras

from tensordash.tensordash import Tensordash

histories = Tensordash(
    ModelName = '',
    email = '', 
    password = '')
    
try:
    model.fit(
    X_train, 
    y_train, 
    epochs = epochs, 
    validation_data = validation_data, 
    batch_size = batch_size, 
    callbacks = [histories])

except:
    histories.sendCrash()


Поддержка PyTorch


Импортируйте Torchdash из пакета Tensordash. Создайте объект Torchdash с именем модели, электронной почтой и паролем в качестве параметров. Используйте метод Torchdash sendLoss() внутри цикла обучения, чтобы отправить метрики модели в вашу учетную запись. Передайте метрики потери, точности, учебную потерю и точность валидации в качестве параметров. Обратите внимание, что вы должны добавить хотя бы одну метрику. Чтобы получить уведомление о сбое модели, добавьте обучающий цикл в раздел обработки исключений и в except вызовите метод sendCrash(). Ниже приведен пример кода использования TensorDash вместе с PyTorch.

from tensordash.torchdash import Torchdash

histories = Torchdash(
    ModelName = '',
    email = '', 
    password = '')

try:
    for epoch in range(epochs):
        losses = []
        for data in trainset:
            X, y = data
            net.zero_grad()
            output = net(X.view(data_shape))
            loss = F.nll_loss(output, y)
            loss.backward()
            optimizer.step()
        losses = np.asarray(losses)
        histories.sendLoss(loss = np.mean(losses), epoch = epoch, total_epochs = epochs) // Add this line to your training loop

except:
    histories.sendCrash()


Поддержка Fast.ai


Дистанционный мониторинг с помощью fast.ai работает через обратные вызовы. Импортируйте Fastdash. Определите объект Fastdash, используя в качестве параметров имя модели, электронную почту вашей учетной записи и пароль. Передайте объект Fastdash через обратные вызовы в функцию fit(). Чтобы получить уведомление о сбое модели, добавьте функцию fit() в раздел обработки исключений и в except вызовите метод sendCrash(). Ниже приведен пример кода использования TensorDash с Fast.ai.

from tensordash.fastdash import Fastdash

my_cb = Tensordash(
    ModelName = '',
    email = '', 
    password = '')

try:
    learn.fit(epochs, learning_rate, callbacks = my_cb)
except:
    my_cb.sendCrash()


Поддержка TensorFlow


Импортируйте Customdash из пакета Tensordash. Создайте объект Customdash с именем модели, электронной почтой и паролем в качестве параметров. Используйте метод sendLoss() объекта CustomDash внутри цикла обучения, чтобы отправить метрики модели в вашу учетную запись. Передайте метрики потери, точности, учебной потери и точности проверки в качестве параметров. Обратите внимание, что вы должны добавить хотя бы одну метрику. Чтобы получить уведомление о сбое модели, добавьте обучающий цикл в раздел обработки исключений и в except вызовите метод sendCrash(). Обратите внимание, что Customdash можно использовать с любым фреймворком, где вы указываете пользовательский цикл обучения. Ниже приведен пример кода для использования TensorDash в пользовательском цикле TensorFlow.

from tensordash.tensordash import Customdash

histories = Customdash(
    ModelName = '',
    email = '', 
    password = '')

try:

    for epoch in range(num_epochs):
        epoch_loss_avg = tf.keras.metrics.Mean()
        epoch_accuracy = tf.keras.metrics.SparseCategoricalAccuracy()

        for x, y in train_dataset:

            loss_value, grads = grad(model, x, y)
            optimizer.apply_gradients(zip(grads, model.trainable_variables))

            epoch_loss_avg(loss_value)
            epoch_accuracy(y, model(x, training=True))

        train_loss_results.append(epoch_loss_avg.result())
        train_accuracy_results.append(epoch_accuracy.result())

        histories.sendLoss(loss = epoch_loss_avg.result(), accuracy = epoch_accuracy.result(), epoch = epoch, total_epochs = epochs) // Add this line to your training loop

except:
    histories.sendCrash()


Заключение


TensorDash — полностью бесплатный продукт и открытым исходным кодом. Github Issues и ваш вклад в него приветствуются. Посмотрите репозиторий здесь и детальную документацию здесь.

На тот случай, если вы подумываете повысить свою квалификацию или сменить сферу — промокод HABR даст вам получить дополнительные 10% к скидке указанной на баннере.

image


Eще курсы


Рекомендуемые статьи


© Habrahabr.ru