Давайте посмотрим правде в глаза: обучение модели машинного обучения отнимает много времени, даже с учетом развития вычислительной техники за последние несколько лет. Даже самые тривиальные модели имеют более миллиона параметров. В масштабе крупнее у моделей бывает более миллиарда параметров у 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 Tensordashhistories = 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 Torchdashhistories = 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 loopexcept: histories.sendCrash()
Поддержка Fast.ai
Дистанционный мониторинг с помощью fast.ai работает через обратные вызовы. Импортируйте
Fastdash
. Определите объект
Fastdash
, используя в качестве параметров имя модели,
электронную почту вашей учетной записи и пароль. Передайте объект
Fastdash через обратные вызовы в функцию fit()
. Чтобы
получить уведомление о сбое модели, добавьте функцию
fit()
в раздел обработки исключений и в
except
вызовите метод sendCrash()
. Ниже
приведен пример кода использования TensorDash с Fast.ai.
from tensordash.fastdash import Fastdashmy_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 Customdashhistories = 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 loopexcept: 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