[Перевод] Необходимый инструмент для каждого дата-сайентиста
Давайте посмотрим правде в глаза: обучение модели машинного обучения отнимает много времени, даже с учетом развития вычислительной техники за последние несколько лет. Даже самые тривиальные модели имеют более миллиона параметров. В масштабе крупнее у моделей бывает более миллиарда параметров — у GPT-3 их более 175 миллиардов! и обучение этих моделей занимает дни, а то и недели. Как дата-сайентисты мы хотели бы следить за метриками модели, чтобы знать, работает ли она, как мы того ожидаем. Но нет смысла сидеть рядом с компьютером, часами отслеживая показатели. Хорошо было бы получить все эти данные на телефон.
Эту задачу можно решить с помощью TensorDash — инструмента удаленного мониторинга ваших моделей машинного обучения с открытым исходным кодом, о котором и пойдет речь дальше. Под катом примеры применения TensorDash с TensorFlow, Keras, PyTorch и Fast.ai.
Когда в последний раз вы оставляли модель тренироваться в течение нескольких часов и покидали место работы, а вернувшись, обнаруживали модель поврежденной на полпути? Это расстраивает, а поскольку у большинства людей нет возможности обучать модели машинного обучения локально, предпочтительны облачные сервисы, такие как GCP, Google Colab, AWS и Azure: пользователи платят за использование ресурсов. В этом случае, если модель потерпела крах в промежутке между тренировками, вы платите за неиспользуемый сервис. Уведомления о статусе модели помогут избавиться от страха что-то пропустить.
TensorDash
TensorDash — бесплатное приложение с открытым исходным кодом, позволяющее удаленно отслеживать ваши модели машинного обучения с помощью подробных графиков всех ваших показателей. Оно также уведомляет вас, когда обучение завершилось или в случае, если модель потерпела крах. Поддерживаются все основные фреймворки машинного обучения: TensorFlow, Pytorch, Keras и Fastai. Теперь не нужно напрягаться, сидя перед компьютером и молясь о повышении точности. Вы можете отслеживать модель, не выходя из дома.
Работа TensorDash
Применение TensorDash
- Установите TensorDash из Play Store. Поддержка устройств iOS скоро появится.
- Cоздайте учетную запись.
- Установите пакет TensorDash для Python, выполнив команду
pip install tensor-dash
. - Следуйте приведенным ниже инструкциям о том, как использовать 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% к скидке указанной на баннере.