Найти тему
Машинное обучение

Knockknock — пожалуй, лучшая библиотека Python для уведомлений

Простой, но эффективный способ получать уведомления о вашей задаче

Введение

Для завершения некоторых задач требуется время, и это особенно актуально для обучения моделей машинного обучения, поскольку нет очевидных оценок того, когда закончится обучение. Кроме того, вы, вероятно, могли бы заняться устранением различных багов и написанию кода, пока не будет завершен общий процесс обучения.

Было бы здорово, если бы вы могли настроить систему автоматического уведомления, чтобы получать информацию о статусе вашей задачи, будь то ошибка в коде или успешное завершение? Именно так и работает Knockknock https://github.com/huggingface/knockknock.

В этой статье вы поймете, что такое Knockknock, и увидите его работу на нескольких примерах.

Что такое Knockknock?

Knockknock — это библиотека уведомлений с открытым исходным кодом от Hugging Face. Он направлен на отправку уведомлений пользователям, информируя их о статусе их функции (например, статус обучения модели, как сказано ранее). На момент написания этой статьи настройку уведомлений можно было выполнить на двенадцати различных платформах, таких как Slack, Email, Telegram, Microsoft Teams, Discord, SMS и т. д.

Кроме того, установка может быть выполнена с помощью одной команды pip, как показано ниже.

pip install knockknock

Начало

Мы проиллюстрируем использование Knockknock для Discord и Slack, которые, как мне кажется, являются одной из наиболее часто используемых платформ многими командами разработчиков для обсуждения и обмена информацией.

Чтобы иметь возможность использовать сервис конкретной платформы, вам необходимо добавить соответствующий декоратор поверх отслеживаемой функции. Например, декоратор, соответствующий службе электронной почты, — @email_sender.

В качестве примера мы будем использовать следующую функцию. Это простая функция, которая принимает число в качестве параметра и возвращает список всех простых чисел от 0 до этого числа.

def get_prime_numbers(max_value):
final_prime_numbers = []
for num in tqdm(range(max_value)):
if(isprime(num)):
final_prime_numbers.append(num)
return final_prime_numbers

Slack

Чтобы иметь возможность использовать Slack, в первую очередь нужно получить URL-адрес веб-хука Slack Room, выполнив следующие 3 шага.

Sending messages using Incoming Webhooks

№ 1 и № 2 — активация веб-хука

По предыдущей ссылке вы можете активировать свой веб-хук после создания нового приложения или из существующего. После нажатия кнопки «Я согласен» я создал приложение под названием Zoumana. Оттуда я могу активировать вебхук.

-2

# 3 — Получите URL-адрес вашего веб-хука

Обязательно обновите страницу после предыдущих шагов. Затем вы сможете ответить на вопрос о том, где публиковать свои уведомления после нажатия кнопки «Добавить новый веб-хук в рабочую область», чтобы наконец получить URL-адрес.

-3

Теперь у нас все готово для анализа.

Необязательный параметр user_mentions декоратора @slack_sender позволяет добавить список slack id тех, с кем вы работаете. Это особенно интересно, если вы хотите уведомить их о результате работы кода.

Для простоты я решил не использовать этот параметр, и окончательная реализация приведена ниже:

from knockknock import slack_sender

webhook_url = "https://hooks.slack.com/services/T036DR6A10F/<a_bunch_of_digits>"

@slack_sender(webhook_url = webhook_url, channel="ml_training_info")
def get_prime_numbers(max_value):

final_prime_numbers = []

for num in tqdm(range(max_value)):

if(isprime(num)):
final_prime_numbers.append(num)

return final_prime_numbers

# Run the function with a value of 20
get_prime_numbers(20)

После вызова get_prime_numbers(20) в строке 18 я получил следующее уведомление от Slack с информацией о выполнении, такой как имя функции, дата выполнения, время, продолжительность и возвращаемое значение.

-4

Discord

Как и в случае со Slack, вам также понадобится URL-адрес Discord Webhook, который можно получить на следующей странице: https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks. Я не буду вдаваться в подробности получения URL-адреса, потому что этот процесс прост и требует меньше шагов, чем Slack.

from knockknock import discord_sender

webhook_url = "https://discord.com/api/webhooks/<a_bunch_of_digits>"

@discord_sender(webhook_url = webhook_url)
def get_prime_numbers(max_value):

final_prime_numbers = []

for num in tqdm(range(max_value)):

if(isprime(num)):
final_prime_numbers.append(num)

return final_prime_numbers

# Execute the function with the value of 20
get_prime_numbers(20)

Как видите, здесь тот же результат, что и в Slack.

-5

Заключение

Поздравляем! 🎉 🍾 Вы только что узнали, как использовать Knockknock, чтобы получать уведомления о статусе вашей задачи. Вы можете посвятить время другим занятиям, а Knockknock позаботится о том, чтобы информировать вас, когда это необходимо.

Не стесняйтесь подписывать на наши телеграмм каналы

https://t.me/ai_machinelearning_big_data

https://t.me/machinelearning_ru

https://t.me/pro_python_code

, где Всегда приятно обсудить AI, ML, Data Science, NLP!

Исходный код статьи на Google Colab : https://colab.research.google.com/drive/1GLGEPT0qTwdBfDPrc-u0DQfznbK_izk1?usp=sharing

страница документации по Knockknock: https://github.com/huggingface/knockknock#discord