Будем честны: обучение модели машинного обучения требует много времени, несмотря даже на постоянно растущую вычислительную мощность компьютеров. Даже у самых тривиальных моделей больше миллиона параметров. В более масштабных проектах количество параметров может насчитывать миллиарды. У GPT-3, например, таких параметров 175 миллиардов. Так что обучать модели приходится днями, если не неделями. Будучи дата-сайентистом, неплохо бы было следить за различными показателями модели в процессе обучения, чтобы знать, учится ли она так, как мы хотели. Но постоянно сидеть у компьютера и следить за показателями нерационально. Было бы круто, если бы все данные мы получали... на телефон!
Вспомните, как вы оставляли свою модель обучаться и уходили на пару часов. А когда возвращались, обнаруживали, что весь процесс крашнулся на полпути. Это пустая трата времени; еще и полнейшее разочарование. Поскольку у большинства людей нет возможности обучать модели машинного обучения на локальных машинах, они предпочитают облачные сервисы: GCP, Google Colab, AWS, Azure и так далее. Платить этим сервисам нужно за конкретное время, в течение которого вы пользовались облаком. Получается, даже если модель выйдет из строя в процессе обучения, вы должны будете заплатить за все время — в том числе, за время простоя. А что если модель уведомит вас, если что-то пойдет не так? Платить лишнего не придется.
TensorDash
TensorDash — это бесплатное приложение с открытым исходным кодом, которое позволяет отслеживать модели машинного обучения удаленно. TensorDash представляет все показатели в виде подробных графиков. Приложение предупредит вас, когда модель закончит обучаться или крашнется. TensorDash поддерживает все основные библиотеки машинного обучения: TensorFlow, Pytorch, Keras, Fastai и так далее.
Теперь не придется постоянно сидеть за компом и ждать, когда же модель закончится учиться. С TensorDash это можно делать удаленно.
Как установить TensorDash?
- Скачайте TensorDash из Play Market. Поддержку iOS пока не завезли, но обещают сделать это в скором времени.
- Создайте аккаунт.
- Установите python-библиотеку TensorDash с помощью команды pip install tensor-dash.
Поддержка Keras
Удаленный мониторинг можно осуществить и с Keras и tf.keras. Работать все это будет через функции обратного вызова. Импортируйте Tensordash. Определите объект TensorDash с такими параметрами: название модели, электронная почта, привязанная к вашей учетной записи, и пароль. Передайте объект TensorDash через обратные вызовы в функцию fit(). Чтобы получать уведомление в случае сбоя модели, добавьте функцию fit() в раздел обработки исключений, а в исключении вызовите метод sendCrash().
Пример использования TensorDash для Keras/tf.keras:
from tensordash.tensordash import Tensordash
histories = Tensordash(
ModelName = '{YOUR_MODEL_NAME}',
email = '{YOUR_EMAIL_ID}',
password = '{YOUR 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, в качестве параметров укажите название модели, электронную почту и пароль. Используйте метод sendLoss() объекта внутри цикла обучения, чтобы метрики отправлялись в вашу учетную запись. Чтобы получать уведомления в случае сбоя модели, добавьте цикл обучения в раздел «Обработка исключений», а в исключении вызовите метод sendCrash().
Пример использования TensorDash для PyTorch:
from tensordash.torchdash import Torchdash
histories = Torchdash(
ModelName = '{YOUR_MODEL_NAME}',
email = '{YOUR_EMAIL_ID}',
password = '{YOUR 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)
except:
histories.sendCrash()
Поддержка Fast.ai
Удаленный мониторинг при работе с Fast.ai тоже работает через обратные вызовы. Импортируйте Fastdash. Определите объект Fastdash, в качестве параметров задайте название модели, электронную почту и пароль. Передайте объект Fastdash через обратные вызовы в функции fit(). Чтобы получать уведомление в случае сбоя модели, добавьте функцию fit () в раздел обработки исключений, а в исключении вызовите метод sendCrash().
Пример использования TensorDash для Fast.ai:
from tensordash.fastdash import Fastdash my_cb = Tensordash( ModelName = '{YOUR_MODEL_NAME}', email = '{YOUR_EMAIL_ID}', password = '{YOUR PASSWORD}') try: learn.fit(epochs, learning_rate, callbacks = my_cb) except: my_cb.sendCrash()
Поддержка TensorFlow
Импортируйте Customdash из библиотеки Tensordash. Создайте объект Customdash с такими параметрами: название модели, электронная почта и пароль. Используйте метод sendLoss() объекта внутри цикла обучения, чтобы отправить метрики модели в вашу учетную запись. Чтобы получать уведомления в случае сбоя модели, добавьте цикл обучения в раздел «Обработка исключений», а в исключении вызовите метод sendCrash().
Пример использования TensorDash для Fast.ai:
from tensordash.tensordash import Customdash histories = Customdash( ModelName = '{YOUR_MODEL_NAME}', email = '{YOUR_EMAIL_ID}', password = '{YOUR 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) // Добавить эту строку в цикл обучения except: histories.sendCrash()
Если вам приходится часто работать с моделями машинного обучения, TensorDash — полезная штука. Конечно, не маст-хэв, как заявляют авторы, но приятное дополнение.
Перевод статьи: A Must-Have Tool for Every Data Scientist