ห้องสมุดขนาดเล็กที่จะได้รับการแจ้งเตือนเมื่อการฝึกอบรมของคุณเสร็จสมบูรณ์หรือเมื่อมันล่มในระหว่างกระบวนการที่มีรหัสเพิ่มเติมสองบรรทัด
เมื่อฝึกอบรมแบบจำลองการเรียนรู้อย่างลึกซึ้งเป็นเรื่องปกติที่จะใช้การหยุดเร็ว นอกเหนือจากการประเมินคร่าวๆมันเป็นเรื่องยากที่จะคาดการณ์ว่าการฝึกอบรมจะเสร็จสิ้นเมื่อใด ดังนั้นจึงเป็นเรื่องที่น่าสนใจที่จะตั้งค่าการแจ้งเตือนอัตโนมัติสำหรับการฝึกอบรมของคุณ นอกจากนี้ยังเป็นที่น่าสนใจที่จะได้รับการแจ้งเมื่อการฝึกอบรมของคุณล่มท่ามกลางกระบวนการด้วยเหตุผลที่ไม่คาดคิด
ติดตั้งด้วย pip หรือเทียบเท่า
pip install knockknockรหัสนี้ได้รับการทดสอบด้วย Python> = 3.6
ห้องสมุดได้รับการออกแบบให้ใช้อย่างไร้รอยต่อด้วยการปรับเปลี่ยนรหัสน้อยที่สุด: คุณจะต้องเพิ่มมัณฑนากรที่ด้านบนการเรียกใช้ฟังก์ชั่นหลักของคุณ ค่าส่งคืน (ถ้ามีหนึ่ง) จะถูกรายงานในการแจ้งเตือน
ขณะนี้มี สิบสอง วิธีในการตั้งค่าการแจ้งเตือน:
| แพลตฟอร์ม | ผู้มีส่วนร่วมภายนอก |
|---|---|
| อีเมล | - |
| หย่อน | - |
| โทรเลข | - |
| ทีม Microsoft | @Noklam |
| ข้อความ | @abhishekkrthakur |
| ความไม่ลงรอยกัน | @watkinsm |
| เดสก์ท็อป | @atakanyenel @eyalmazuz |
| เมทริกซ์ | @jcklie |
| อเมซอนระฆัง | @prabhakar267 |
| การพูดคุยกัน | @wuutiing |
| Rocketchat | @radao |
| Wechat ทำงาน | @jcyk |
บริการขึ้นอยู่กับไคลเอนต์ Gmail/SMTP ของ Yagmail คุณจะต้องใช้ที่อยู่อีเมล Gmail เพื่อใช้งาน (คุณสามารถตั้งค่าที่นี่ได้ฟรี) ฉันขอแนะนำให้สร้างใหม่ (แทนที่จะเป็นแบบปกติของคุณ) เนื่องจากคุณจะต้องปรับเปลี่ยนการตั้งค่าความปลอดภัยของบัญชีเพื่อให้ไลบรารี Python เข้าถึงได้โดยเปิดแอพที่ปลอดภัยน้อยกว่า
from knockknock import email_sender
@ email_sender ( recipient_emails = [ "<[email protected]>" , "<[email protected]>" ], sender_email = "<grandma'[email protected]>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock email
--recipient-emails < [email protected] > , < [email protected] >
--sender-email < grandma ' [email protected]>
sleep 10 หากไม่ได้ระบุ sender_email อีเมลแรกใน recipient_emails จะถูกใช้เป็นอีเมลของผู้ส่ง
โปรดทราบว่าการเปิดตัวสิ่งนี้จะขอรหัสผ่านอีเมลของผู้ส่ง มันจะถูกเก็บไว้อย่างปลอดภัยในบริการพวงกุญแจผ่านห้องสมุดคีย์งง keyring
ในทำนองเดียวกันคุณสามารถใช้ Slack เพื่อรับการแจ้งเตือน คุณจะต้องได้รับ URL WebHook ของ Slack Room และเลือกรหัสผู้ใช้ของคุณ (หากคุณต้องการติดแท็กตัวเองหรือคนอื่น)
from knockknock import slack_sender
webhook_url = "<webhook_url_to_your_slack_room>"
@ slack_sender ( webhook_url = webhook_url , channel = "<your_favorite_slack_channel>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสำหรับแท็กคนที่เฉพาะเจาะจง: user_mentions=[<your_slack_id>, <grandma's_slack_id>]
knockknock slack
--webhook-url < webhook_url_to_your_slack_room >
--channel < your_favorite_slack_channel >
sleep 10 นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสำหรับแท็กคนที่เฉพาะเจาะจง: --user-mentions <your_slack_id>,<grandma's_slack_id>
คุณยังสามารถใช้ Telegram Messenger เพื่อรับการแจ้งเตือน ก่อนอื่นคุณจะต้องสร้างบอทการแจ้งเตือนของคุณเองโดยทำตามสามขั้นตอนที่จัดทำโดยโทรเลขที่นี่และบันทึก TOKEN การเข้าถึง API ของคุณ
Telegram Bots เป็นคนขี้อายและไม่สามารถส่งข้อความแรกได้ดังนั้นคุณจะต้องทำขั้นตอนแรก โดยการส่งข้อความแรกคุณจะสามารถรับ chat_id ที่จำเป็น (การระบุห้องส่งข้อความของคุณ) โดยไปที่ https://api.telegram.org/bot<YourBOTToken>/getUpdates และรับ int ใต้ message['chat']['id']
from knockknock import telegram_sender
CHAT_ID : int = < your_messaging_room_id >
@ telegram_sender ( token = "<your_api_token>" , chat_id = CHAT_ID )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock telegram
--token < your_api_token >
--chat-id < your_messaging_room_id >
sleep 10ขอบคุณ @Noklam คุณยังสามารถใช้ทีม Microsoft เพื่อรับการแจ้งเตือน คุณจะต้องได้รับ URL WebHook Channel Team ของคุณ
from knockknock import teams_sender
@ teams_sender ( token = "<webhook_url_to_your_teams_channel>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10 )
return { 'loss' : 0.9 } # Optional return value knockknock teams
--webhook-url < webhook_url_to_your_teams_channel >
sleep 10 นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสำหรับแท็กคนที่เฉพาะเจาะจง: user_mentions=[<your_teams_id>, <grandma's_teams_id>]
ขอบคุณ @abhishekkrthakur คุณสามารถใช้ Twilio เพื่อส่งการแจ้งเตือนข้อความ คุณจะต้องตั้งค่าบัญชี Twilio ที่นี่ซึ่งเป็นบริการที่ชำระด้วยราคาที่แข่งขันได้เช่นในสหรัฐอเมริการับหมายเลขใหม่และส่งข้อความหนึ่งข้อความผ่านบริการนี้ตามลำดับราคา $ 1.00 และ $ 0.0075 คุณจะต้องได้รับ (a) หมายเลขโทรศัพท์ (b) บัญชีของคุณ SID และ (c) โทเค็นการรับรองความถูกต้องของคุณ รายละเอียดบางอย่างที่นี่
from knockknock import sms_sender
ACCOUNT_SID : str = "<your_account_sid>"
AUTH_TOKEN : str = "<your_auth_token>"
@ sms_sender ( account_sid = ACCOUNT_SID , auth_token = AUTH_TOKEN , recipient_number = "<recipient's_number>" , sender_number = "<sender's_number>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10 )
return { 'loss' : 0.9 } # Optional return value knockknock sms
--account-sid < your_account_sid >
--auth-token < your_account_auth_token >
--recipient-number < recipient_number >
--sender-number < sender_number >
sleep 10ขอบคุณ @watkinsm คุณยังสามารถใช้ Discord เพื่อรับการแจ้งเตือน คุณจะต้องได้รับ URL WebHook ของ Discord Channel ของคุณ
from knockknock import discord_sender
webhook_url = "<webhook_url_to_your_discord_channel>"
@ discord_sender ( webhook_url = webhook_url )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock discord
--webhook-url < webhook_url_to_your_discord_channel >
sleep 10นอกจากนี้คุณยังสามารถได้รับการแจ้งเตือนจากการแจ้งเตือนบนเดสก์ท็อป ปัจจุบันมีให้เฉพาะสำหรับ MacOS และ Linux และ Windows 10 สำหรับ Linux มันใช้คำสั่ง NOFITY-SEND ซึ่งใช้ LiBnotify เพื่อใช้ libnotify คุณต้องติดตั้งเซิร์ฟเวอร์การแจ้งเตือน อบเชย, Deepin, การตรัสรู้, Gnome, Gnome Flashback และ KDE Plasma ใช้การใช้งานของตนเองเพื่อแสดงการแจ้งเตือน ในสภาพแวดล้อมเดสก์ท็อปอื่น ๆ เซิร์ฟเวอร์การแจ้งเตือนจะต้องเปิดตัวโดยใช้ตัวเลือก "Autostart" ของ WM/DE ของคุณ
from knockknock import desktop_sender
@ desktop_sender ( title = "Knockknock Desktop Notifier" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { "loss" : 0.9 }knockknock desktop
--title ' Knockknock Desktop Notifier '
sleep 2 ขอบคุณ @jcklie คุณสามารถส่งการแจ้งเตือนผ่านเมทริกซ์ Homeserver เป็นเซิร์ฟเวอร์ที่ผู้ใช้ของคุณที่จะส่งข้อความได้รับการลงทะเบียน อย่าลืมสคีมาสำหรับ URL ( http หรือ https ) คุณจะต้องได้รับโทเค็นการเข้าถึงสำหรับบอทหรือผู้ใช้ของคุณเอง วิธีที่ง่ายที่สุดในการรับมันคือการดูการจลาจลในการตั้งค่าการจลาจล Help & About ด้านล่างคือ: Access Token:<click to reveal> คุณต้องระบุนามแฝงห้องที่ส่งข้อความ ในการรับนามแฝงในการจลาจลให้สร้างห้องที่คุณต้องการใช้จากนั้นเปิดการตั้งค่าห้องภายใต้ Room Addresses และเพิ่มนามแฝง
from knockknock import matrix_sender
HOMESERVER = "<url_to_your_home_server>" # e.g. https://matrix.org
TOKEN = "<your_auth_token>" # e.g. WiTyGizlr8ntvBXdFfZLctyY
ROOM = "<room_alias" # e.g. #knockknock:matrix.org
@ matrix_sender ( homeserver = HOMESERVER , token = TOKEN , room = ROOM )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock matrix
--homeserver < homeserver >
--token < token >
--room < room >
sleep 10ขอบคุณ @prabhakar267 คุณยังสามารถใช้ Amazon Chime เพื่อรับการแจ้งเตือน คุณจะต้องได้รับ URL WebHook ห้องของคุณ
from knockknock import chime_sender
@ chime_sender ( webhook_url = "<webhook_url_to_your_chime_room>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10 )
return { 'loss' : 0.9 } # Optional return value knockknock chime
--webhook-url < webhook_url_to_your_chime_room >
sleep 10 นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสำหรับแท็กคนที่เฉพาะเจาะจง: user_mentions=[<your_alias>, <grandma's_alias>]
ตอนนี้ Dingtalk ได้รับการสนับสนุนขอบคุณ @wuutiing เมื่อได้รับ URL WebHook ของหุ่นยนต์ Dingtalk Robot และคำหลัก/คำหลัก (อย่างน้อยหนึ่งรายการถูกตั้งค่าเมื่อสร้างหุ่นยนต์แชทในห้องแชท) การแจ้งเตือนของคุณจะถูกส่งไปเข้าถึงห้องแชทนั้น
from knockknock import dingtalk_sender
webhook_url = "<webhook_url_to_your_dingtalk_chatroom_robot>"
@ dingtalk_sender ( webhook_url = webhook_url , secret = "<your_robot_secret_if_set>" , keywords = [ "<list_of_keywords_if_set>" ])
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock dingtalk
--webhook-url < webhook_url_to_your_dingtalk_chatroom_robot >
--secret < your_robot_secret_if_set >
sleep 10 นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์ที่เป็นตัวเลือกให้กับผู้ที่เฉพาะเจาะจง: user_mentions=["<list_of_phonenumbers_who_you_want_to_tag>"]
คุณสามารถใช้ Rocketchat เพื่อรับการแจ้งเตือน คุณจะต้องมีสิ่งต่อไปนี้ก่อนที่คุณจะโพสต์การแจ้งเตือน:
from knockknock import rocketchat_sender
@ rocketchat_sender (
rocketchat_server_url = "<url_to_your_rocketchat_server>" ,
rocketchat_user_id = "<your_rocketchat_user_id>" ,
rocketchat_auth_token = "<your_rocketchat_auth_token>" ,
channel = "<channel_name>" )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return valueนอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสองข้อ:
user_mentions=[<your_user_name>, <grandma's_user_name>]alias="My Alias" knockknock rocketchat
--rocketchat-server-url < url_to_your_rocketchat_server >
--rocketchat-user-id < your_rocketchat_user_id >
--rocketchat-auth-token < your_rocketchat_auth_token >
--channel < channel_name >
sleep 10ตอนนี้งาน WeChat ได้รับการสนับสนุนขอบคุณ @jcyk เมื่อได้รับ URL WebHook ของ WeChat Work Work Robot การแจ้งเตือนของคุณจะถูกส่งไปเข้าถึงทุกคนในห้องสนทนานั้น
from knockknock import wechat_sender
webhook_url = "<webhook_url_to_your_wechat_work_chatroom_robot>"
@ wechat_sender ( webhook_url = webhook_url )
def train_your_nicest_model ( your_nicest_parameters ):
import time
time . sleep ( 10000 )
return { 'loss' : 0.9 } # Optional return value knockknock wechat
--webhook-url < webhook_url_to_your_wechat_work_chatroom_robot >
sleep 10 นอกจากนี้คุณยังสามารถระบุอาร์กิวเมนต์เสริมสำหรับแท็กคนที่เฉพาะเจาะจง: user-mentions=["<list_of_userids_you_want_to_tag>"] และ/หรือ user-mentions-mobile=["<list_of_phonenumbers_you_want_to_tag>"]
เมื่อใช้การฝึกอบรมแบบกระจาย GPU จะถูกผูกไว้กับกระบวนการโดยใช้ตัวแปรอันดับท้องถิ่น เนื่องจาก Knockknock ทำงานในระดับกระบวนการหากคุณใช้ 8 GPU คุณจะได้รับการแจ้งเตือน 8 ครั้งในตอนต้นและการแจ้งเตือน 8 ครั้งในตอนท้าย ... เพื่อหลีกเลี่ยงการยกเว้นข้อผิดพลาดเท่านั้นกระบวนการหลักเท่านั้นที่ได้รับอนุญาตให้ส่งการแจ้งเตือนเพื่อให้คุณได้รับการแจ้งเตือนเพียงครั้งแรก
หมายเหตุ: ใน Pytorch การเปิดตัว torch.distributed.launch ตั้งค่าตัวแปรสภาพแวดล้อมอันดับสำหรับแต่ละกระบวนการ (ดูที่นี่) สิ่งนี้ใช้ในการตรวจจับกระบวนการหลักและตอนนี้วิธีง่ายๆที่ฉันคิดขึ้นมา น่าเสียดายที่นี่ไม่ได้มีวัตถุประสงค์เพื่อทั่วไปสำหรับทุกแพลตฟอร์ม แต่ฉันจะหารือเกี่ยวกับวิธีที่ชาญฉลาด/ดีกว่าในการจัดการการฝึกอบรมแบบกระจายในปัญหา/ประชาสัมพันธ์อย่างมีความสุข