#cron #bash
Столкнулся с проблемой запуска скрипта по расписанию, целая эпопея. В винде оно как-то проще настраивается, есть Task Scheduler, можно в GUI накидать команды и аргументы, указать учётки, выставить расписание и параметры (к примеру, галочку Do not start a new instance if the task is already running), и готово. В Linux всё оказалось не так просто. Вот работающий рецепт (к которому я пришёл методом проб и ошибок), который каждую минуту проверяет питоновский скрипт, если он не запущен - запускает:
ставим либу отправки емэйлов (т.к. крон шлёт уведомления на емэйл хозяина задачи, если что не так) и run-one чтобы не запускать новый процесс, если старый ещё выполняется
*/1 * * * * cd /your/dir/ && run-one bash yourtask.sh
причем последней в файле должна быть пустая строка (?). сохраняем.
в папке /your/dir/ должен быть файл yourtask.sh с содержанием
#!/bin/sh
export PYTHONPATH=/your/libspath
python3 yournoscript.py --yourparam="paramval" &> yourtasklogfile.log
&> yourtasklogfile.log перенаправляет вывод в соотв. файл, все ошибки пойдут туда же вместо емэйла.
https://www.hostinger.com/tutorials/cron-job
Столкнулся с проблемой запуска скрипта по расписанию, целая эпопея. В винде оно как-то проще настраивается, есть Task Scheduler, можно в GUI накидать команды и аргументы, указать учётки, выставить расписание и параметры (к примеру, галочку Do not start a new instance if the task is already running), и готово. В Linux всё оказалось не так просто. Вот работающий рецепт (к которому я пришёл методом проб и ошибок), который каждую минуту проверяет питоновский скрипт, если он не запущен - запускает:
ставим либу отправки емэйлов (т.к. крон шлёт уведомления на емэйл хозяина задачи, если что не так) и run-one чтобы не запускать новый процесс, если старый ещё выполняется
apt-get install postfixвносим собственно задачу. использовать советуют именно файл сценариев, т.к. он сам настраивает переменные окружения:
apt-get install run-one
crontab -eдобавляем строчку
*/1 * * * * cd /your/dir/ && run-one bash yourtask.sh
причем последней в файле должна быть пустая строка (?). сохраняем.
в папке /your/dir/ должен быть файл yourtask.sh с содержанием
#!/bin/sh
export PYTHONPATH=/your/libspath
python3 yournoscript.py --yourparam="paramval" &> yourtasklogfile.log
&> yourtasklogfile.log перенаправляет вывод в соотв. файл, все ошибки пойдут туда же вместо емэйла.
https://www.hostinger.com/tutorials/cron-job
Hostinger Tutorials
Cron job: What it is and how to configure it in 2025
A cron job is an automated task run by cron, a scheduling tool for Unix-like systems. Learn how cron jobs work and how to set them up.
👀1
#python #langdetect #nlp
Кто пользуется либой langdetect для определения языка - она не очень точная (по кр мере, на коротких фразах). Можно проверять с помощью google translate api.
Кто пользуется либой langdetect для определения языка - она не очень точная (по кр мере, на коротких фразах). Можно проверять с помощью google translate api.
#python #npl #spellchecking
А кто работал со спеллчекерами в Питоне? contextualSpellCheck, якобы построенный на базе Bert-a, кажется довольно тупо сделанным.
Хотел их поругать, но нет, после изучения кода оказалось, что они как раз и сравнивают кандидатов от Берта с самой опечаткой. Просто вероятности они выводят ДО переранжирования, + в конкретном примере ванильный Берт не выдал ни одного хорошего кандидата.
А кто работал со спеллчекерами в Питоне? contextualSpellCheck, якобы построенный на базе Bert-a, кажется довольно тупо сделанным.
Хотел их поругать, но нет, после изучения кода оказалось, что они как раз и сравнивают кандидатов от Берта с самой опечаткой. Просто вероятности они выводят ДО переранжирования, + в конкретном примере ванильный Берт не выдал ни одного хорошего кандидата.
#aws #s3 #requesterpays
О, классно, оказывается, можно великодушно захостить данные в s3, но не скатываться при этом в полный альтруизм и позволить скачивающим платить за трафик. К примеру, так хранятся все статьи arXiv.org
А вот так можно с ними работать на кластере (подсчёт статей с упоминанием Matplotlib).
https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
О, классно, оказывается, можно великодушно захостить данные в s3, но не скатываться при этом в полный альтруизм и позволить скачивающим платить за трафик. К примеру, так хранятся все статьи arXiv.org
А вот так можно с ними работать на кластере (подсчёт статей с упоминанием Matplotlib).
https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
www.coiled.io
How Popular is Matplotlib?
This analysis tracks the growth of Matplotlib on the preprint server arXiv beginning in 2002 with 1% up to 2022 with 17% of all papers using Matplotlib. We analyze a dump of arXiv data on AWS S3 using Dask and Coiled.
#nvidia #huang
Ну вот, можно же на $600k обеспечить не только безопасность, но и страховки, перелёты. Сандалю Пичалю с его $6M надо у мистера Куртки поучиться. Хотя...
https://3dnews.ru/1086557/zarplata-generalnogo-direktora-nvidia-upala-na-10-v-2023-finansovom-godu-izza-nevipolnennih-planov-prodag
Ну вот, можно же на $600k обеспечить не только безопасность, но и страховки, перелёты. Сандалю Пичалю с его $6M надо у мистера Куртки поучиться. Хотя...
https://3dnews.ru/1086557/zarplata-generalnogo-direktora-nvidia-upala-na-10-v-2023-finansovom-godu-izza-nevipolnennih-planov-prodag
3DNews - Daily Digital Digest
Зарплата гендиректора NVIDIA упала на 10 %, но Хуанг всё равно получит в 94 раза больше рядового сотрудника
Президент и главный исполнительный директор NVIDIA Дженсен Хуанг (Jen-Hsun Huang), мог бы заработать почти 25 миллионов долларов в последнем финансовом году, но из-за того, что компания не достигла поставленных финансовых целей ему была выплачена меньшая…
#nlp #spellchecking
Продолжаю работать с contextualSpellCheck. Хотя они оказались не так плохи, как я вначале подумал, они всё же налажали. Их либа рассматривает только 10 вариантов подстановки от нейронной модельки, и изменить это число невозможно без перекомпиляции (шучу, это же питон, можно просто отредактировать исходники). Не глупость ли это? Ну спасибо, ребята, что за всех решили, что 10 кандидатов будет достаточно. Кстати, это прямо частый паттерн, когда создатели библиотеки часть внутренних параметров хардкодят и забывают открывать. Понятно, что для их повседневных задач это не оказалось нужным, а остальным-то что делать?
С top_n=1000 на предыдущем примере получается уже более осмысленный ответ, Cuba вместо точки, и даже правильный ответ Dubai мелькает.
Но тут уже удивляет пакет editdistance. Каким образом у них Cuba более похожа на dubia, чем Dubai?
Продолжаю работать с contextualSpellCheck. Хотя они оказались не так плохи, как я вначале подумал, они всё же налажали. Их либа рассматривает только 10 вариантов подстановки от нейронной модельки, и изменить это число невозможно без перекомпиляции (шучу, это же питон, можно просто отредактировать исходники). Не глупость ли это? Ну спасибо, ребята, что за всех решили, что 10 кандидатов будет достаточно. Кстати, это прямо частый паттерн, когда создатели библиотеки часть внутренних параметров хардкодят и забывают открывать. Понятно, что для их повседневных задач это не оказалось нужным, а остальным-то что делать?
С top_n=1000 на предыдущем примере получается уже более осмысленный ответ, Cuba вместо точки, и даже правильный ответ Dubai мелькает.
Но тут уже удивляет пакет editdistance. Каким образом у них Cuba более похожа на dubia, чем Dubai?
#python #npl #spellchecking #bayes
А, понял, в чём дело. Я почему-то думал, что расстояние Левенштейна учитывает перестановки, а на самом деле туда входят только замены, вставки, удаления. Тогда действительно Dubai->Cuba это замена и удаление, Dubai->Dubia это удаление и вставка. + contextualSpellCheck при сравнении кандидатов не учитывает регистр, так что d и D у него различные символы. Что мне нужно, так это более общее расстояние Дамерау-Левенштейна, которое уже учитывает свопы.
От Берта кандидаты приходят с такими вероятностями: ('Cuba', 0.00026), ('Dubai', 0.00017). contextualSpellCheck из представленных кандидатов выбирает ответ наиболее похожий на саму опечатку. Хотя в докстринге они говорят "At present using a library to calculate edit distance between actual word and candidate words. Candidate word for which edit distance is lowest is selected. If least edit distance is same then word with higher probability is selected by default", это неправда, на вероятности в методе candidate_ranking вообще не смотрят. Мы могли бы пойти тем же путём и получить правильный ответ, но это ненаучно, и было бы, видимо, просто везением ) Не зря же Берты тренировались на огромных массивах текстов? Давайте посмотрим, кто победит, если мы будем рассматривать Бертовы вероятности как априорные, а текстовые схожести (в смысле Дамерау-Левенштейна) кандидата и опечатки как вероятность B/A что правильный ответ - это кандидат A, при том что человек напечатал B. Мне всё-таки интересно, в Дубай сложнее визу получить, или на Кубу?
В нашем случает полную вероятность P(B) вычислять не надо, она константна для всех кандидатов и на аргмакс не влияет. Получается, нам надо выбрать кандидата с максимальным произведением вероятности Берта на похожесть с опечаткой. Строго говоря, Бертовы вероятности можно еще нормировать на сумируемость к единице, т.к. у нас ограниченная выборка кандидатов из всего словаря, но это опять же будет константа, и на выбор не повлияет.
А, понял, в чём дело. Я почему-то думал, что расстояние Левенштейна учитывает перестановки, а на самом деле туда входят только замены, вставки, удаления. Тогда действительно Dubai->Cuba это замена и удаление, Dubai->Dubia это удаление и вставка. + contextualSpellCheck при сравнении кандидатов не учитывает регистр, так что d и D у него различные символы. Что мне нужно, так это более общее расстояние Дамерау-Левенштейна, которое уже учитывает свопы.
От Берта кандидаты приходят с такими вероятностями: ('Cuba', 0.00026), ('Dubai', 0.00017). contextualSpellCheck из представленных кандидатов выбирает ответ наиболее похожий на саму опечатку. Хотя в докстринге они говорят "At present using a library to calculate edit distance between actual word and candidate words. Candidate word for which edit distance is lowest is selected. If least edit distance is same then word with higher probability is selected by default", это неправда, на вероятности в методе candidate_ranking вообще не смотрят. Мы могли бы пойти тем же путём и получить правильный ответ, но это ненаучно, и было бы, видимо, просто везением ) Не зря же Берты тренировались на огромных массивах текстов? Давайте посмотрим, кто победит, если мы будем рассматривать Бертовы вероятности как априорные, а текстовые схожести (в смысле Дамерау-Левенштейна) кандидата и опечатки как вероятность B/A что правильный ответ - это кандидат A, при том что человек напечатал B. Мне всё-таки интересно, в Дубай сложнее визу получить, или на Кубу?
В нашем случает полную вероятность P(B) вычислять не надо, она константна для всех кандидатов и на аргмакс не влияет. Получается, нам надо выбрать кандидата с максимальным произведением вероятности Берта на похожесть с опечаткой. Строго говоря, Бертовы вероятности можно еще нормировать на сумируемость к единице, т.к. у нас ограниченная выборка кандидатов из всего словаря, но это опять же будет константа, и на выбор не повлияет.
👍2
#python #codegems #awefulcode
Улучшаю корректор письменных ошибок. Не могу не отметить "крайне оптимальный" подход к профилированию. Если у класса установлен флаг performance, по задумке авторов, каждый шаг конвейера замеряется на время выполнения. Как же этого добиться, спросите Вы. Элементарно, отвечают авторы чудо-либы, мы просто задублируем в ветке с performance весь код, но воткнём перед каждым вызовом своего метода (?) вызов текущего времени. Чуваки, вы про параметризованные декораторы в Питоне слышали, ау?
Улучшаю корректор письменных ошибок. Не могу не отметить "крайне оптимальный" подход к профилированию. Если у класса установлен флаг performance, по задумке авторов, каждый шаг конвейера замеряется на время выполнения. Как же этого добиться, спросите Вы. Элементарно, отвечают авторы чудо-либы, мы просто задублируем в ветке с performance весь код, но воткнём перед каждым вызовом своего метода (?) вызов текущего времени. Чуваки, вы про параметризованные декораторы в Питоне слышали, ау?
#python #npl #spellchecking #bayes
Итак, после нескольких часов допиливания конструктор contextualSpellCheck обзавёлся несколькими новыми параметрами:
top_n (int, optional): suggestions from underlying ANN model to be considered. Defaults to 10.
lowercased_distance (bool, optional): lowercase candidates before computing edit distance. Defaults to True.
damerau_distance (bool, optional): additionally account for symbol swaps when calculating a distance. Defaults to True.
bayes_selection (bool, optional): use bayes reasoning when selecting the best candidate. Bert probabilities are the prior, textual similarities of candidates to the input are treated as the probabilities B/A that the corect candiadte is A, while the input was B. Defaults to True.
ranked_bert_probs (bool, optional): use ranked probs as oppposed to the absolute probs values coming from Bert. Defaults to True.
И я научил электронного болвана понимать, что имелась в виду виза в Дубай. 😁
Итак, после нескольких часов допиливания конструктор contextualSpellCheck обзавёлся несколькими новыми параметрами:
top_n (int, optional): suggestions from underlying ANN model to be considered. Defaults to 10.
lowercased_distance (bool, optional): lowercase candidates before computing edit distance. Defaults to True.
damerau_distance (bool, optional): additionally account for symbol swaps when calculating a distance. Defaults to True.
bayes_selection (bool, optional): use bayes reasoning when selecting the best candidate. Bert probabilities are the prior, textual similarities of candidates to the input are treated as the probabilities B/A that the corect candiadte is A, while the input was B. Defaults to True.
ranked_bert_probs (bool, optional): use ranked probs as oppposed to the absolute probs values coming from Bert. Defaults to True.
И я научил электронного болвана понимать, что имелась в виду виза в Дубай. 😁
#python #npl #spellchecking #bayes
Вот разбивочка, как Байесовский метод приходит к выводу, что подразумевался Дубай.
Вот разбивочка, как Байесовский метод приходит к выводу, что подразумевался Дубай.
✍1👍1
#python #npl #spellchecking #bayes
Это мы брали ранговые оценки вероятностей, для смягчения приора. Если же сильно поверить Берту и взять абсолютные оценки, Дубай улетает за первую десятку. Я не знаю, если честно, насколько хорошо Берты откалиброваны по вероятностям, может, @tech_priestess подскажет?
По итогу внёс в либу contextualSpellCheck предложение новой функциональности. А ну как удастся прокрасться в контрибьюторы почти что Spacy. )
Это мы брали ранговые оценки вероятностей, для смягчения приора. Если же сильно поверить Берту и взять абсолютные оценки, Дубай улетает за первую десятку. Я не знаю, если честно, насколько хорошо Берты откалиброваны по вероятностям, может, @tech_priestess подскажет?
По итогу внёс в либу contextualSpellCheck предложение новой функциональности. А ну как удастся прокрасться в контрибьюторы почти что Spacy. )
❤🔥1👍1
#H100
Не очень понимаю историю с H100. Анонсированы он чуть ли не год назад, но в сторонних облаках начинают появляться только сейчас.
"Клиенты Google Cloud смогут тренировать и запускать приложения ИИ через виртуальные машины A3 и использовать службы разработки и управления ИИ Google, доступные через Vertex AI, Google Kubernetes Engine и Google Compute Engine. Виртуальные машины A3 основаны на чипах Intel Xeon четвёртого поколения (Sapphire Rapids), которые работают в связке с ускорителями H100. Пока не ясно, будут ли виртуальные CPU поддерживать ускорители логических выводов, встроенные в чипы Sapphire Rapids."
https://3dnews.ru/1086582/google-anonsirovala-noviy-iiorientirovanniy-superkompyuter-a3-s-26-000-graficheskih-protsessorov
Не очень понимаю историю с H100. Анонсированы он чуть ли не год назад, но в сторонних облаках начинают появляться только сейчас.
"Клиенты Google Cloud смогут тренировать и запускать приложения ИИ через виртуальные машины A3 и использовать службы разработки и управления ИИ Google, доступные через Vertex AI, Google Kubernetes Engine и Google Compute Engine. Виртуальные машины A3 основаны на чипах Intel Xeon четвёртого поколения (Sapphire Rapids), которые работают в связке с ускорителями H100. Пока не ясно, будут ли виртуальные CPU поддерживать ускорители логических выводов, встроенные в чипы Sapphire Rapids."
https://3dnews.ru/1086582/google-anonsirovala-noviy-iiorientirovanniy-superkompyuter-a3-s-26-000-graficheskih-protsessorov
3DNews - Daily Digital Digest
Google представила облачный ИИ-суперкомпьютер A3 — до 26 000 ускорителей NVIDIA H100 для всех желающих
На конференции Google I/O компания Google анонсировала облачный ИИ-суперкомпьютер Compute Engine A3, который сможет предложить клиентам компании до 26 000 ускорителей вычислений NVIDIA H100.
#python #langdetect #fasttext
Мне трудно поверить в это, но в 2023 у питоновского сообщества, похоже, нет нормальных оффлайновых детекторов языка.
Ну что это за хрень, из 4 либ, представленных в статье, только Гугл переводчик (онлайновый) понимает, что, блять, строка "Safe delivery" - это английский, а не датский и не суахили?
P.S.:
fastText справился! ) используйте его, не тратьте время на остальной мусор. Пример в комментах.
https://towardsdatascience.com/4-python-libraries-to-detect-english-and-non-english-language-c82ad3efd430
Мне трудно поверить в это, но в 2023 у питоновского сообщества, похоже, нет нормальных оффлайновых детекторов языка.
Ну что это за хрень, из 4 либ, представленных в статье, только Гугл переводчик (онлайновый) понимает, что, блять, строка "Safe delivery" - это английский, а не датский и не суахили?
P.S.:
fastText справился! ) используйте его, не тратьте время на остальной мусор. Пример в комментах.
https://towardsdatascience.com/4-python-libraries-to-detect-english-and-non-english-language-c82ad3efd430
Medium
4 Python libraries to detect English and Non-English language
We will discuss spacy-langdetect, Pycld2, TextBlob, and Googletrans for language detection.
🤯2
#python #langdetect #fasttext #googletranslate
Странно, я был уверен, что гугл переводчик это топ, там же большие языковые модели, нейросети, все такое. Но он походу в 10 раз больше ошибается, чем fasttext.
Странно, я был уверен, что гугл переводчик это топ, там же большие языковые модели, нейросети, все такое. Но он походу в 10 раз больше ошибается, чем fasttext.
💔2
#fastText
Так, я вообще в тупике. Стал внимательнее смотреть, что fastText считает не английской речью.
Так, я вообще в тупике. Стал внимательнее смотреть, что fastText считает не английской речью.
🤔1