Давайте посмотрим правде в глаза: обучение модели машинного обучения отнимает много времени, даже с учетом развития вычислительной техники за последние несколько лет. Даже самые тривиальные модели имеют более миллиона параметров. В масштабе крупнее у моделей бывает более миллиарда параметров — у 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 = '<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 с именем модели, электронной почтой и паролем в качестве параметров. Используйте метод Torchdash sendLoss() внутри цикла обучения, чтобы отправить метрики модели в вашу учетную запись. Передайте метрики потери, точности, учебную потерю и точность валидации в качестве параметров. Обратите внимание, что вы должны добавить хотя бы одну метрику. Чтобы получить уведомление о сбое модели, добавьте обучающий цикл в раздел обработки исключений и в except вызовите метод 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) // 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 = '<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() объекта CustomDash внутри цикла обучения, чтобы отправить метрики модели в вашу учетную запись. Передайте метрики потери, точности, учебной потери и точности проверки в качестве параметров. Обратите внимание, что вы должны добавить хотя бы одну метрику. Чтобы получить уведомление о сбое модели, добавьте обучающий цикл в раздел обработки исключений и в except вызовите метод sendCrash(). Обратите внимание, что Customdash можно использовать с любым фреймворком, где вы указываете пользовательский цикл обучения. Ниже приведен пример кода для использования TensorDash в пользовательском цикле TensorFlow.
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) // Add this line to your training loop except: histories.sendCrash()
Заключение
TensorDash — полностью бесплатный продукт и открытым исходным кодом. Github Issues и ваш вклад в него приветствуются. Посмотрите репозиторий здесь и детальную документацию здесь.
На тот случай, если вы подумываете повысить свою квалификацию или сменить сферу — промокод HABR даст вам получить дополнительные 10% к скидке указанной на баннере.

- Онлайн-буткемп по Data Science
- Обучение профессии Data Analyst с нуля
- Онлайн-буткемп по Data Analytics
- Обучение профессии Data Science с нуля
- Курс «Python для веб-разработки»
- Курс по аналитике данных
- Курс по DevOps
- Профессия Веб-разработчик
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
- Профессия Java-разработчик с нуля
- Курс по JavaScript
- Курс по Machine Learning
- Курс «Математика и Machine Learning для Data Science»
- Продвинутый курс «Machine Learning Pro + Deep Learning»
Рекомендуемые статьи
ссылка на оригинал статьи https://habr.com/ru/company/skillfactory/blog/525216/
Добавить комментарий