Обновить
825.18

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Как я научил Telegram-бота говорить о постах ДПС в реальном времени

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров12K

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

Эта история началась ещё в конце осени 2024 года. На тот момент я, окрылённый покупкой первой машины — ВАЗ 2108, очень переживал за дорожную ситуацию. Прав на тот момент у меня ещё не было, кроме того машине не была на учёте и не имела страховки. Было больше желание поковыряться в машине, чем поездить. Но все таки детали продаются в магазине, а до магазина приходилось добираться.

Внимание: автор никогда не садился за руль без прав, вся выше и ниже изложенная история сообщает о вымышленном персонаже. Всё повествование происходит от лица вымышленного автором персонажа.

Ещё тогда, холодным вечером ноября добираясь до магазина автозапчастей на такси я увидел пост ДПС, примерно 3 полицейских машины, которые остановили пару водителей. В голову закралась одна идея: А что если посты ДПС будут отображаться на какой-нибудь карте. Обсудив эту идею с товарищем, она показалась ему бесперспективной, поскольку далеко не все водители ставили бы отметку поста ДПС в моём чудо-приложении, коих сотни. Поэтому эта идея была отложена в долгий ящик.

Около 6-7 месяцев спустя, уже пару раз остановленный сотрудниками ДПС я начал опасаться за штрафы или перевозку машины на штраф стоянку и я все таки вернулся к этой идее.

Они среди нас (или Джонни, они на деревьях!)

Читать далее

Как я пытался ускорить анализ 12 000 комментариев с помощью GPU за 50 тысяч, но победил процессор

Время на прочтение4 мин
Количество просмотров13K

История о том, как я хотел провести анализ комментариев, а в итоге получил неожиданный, но полезный опыт с локальным AI.

Недавно передо мной встала задача собрать все положительные комментарии к моим статьям. Веду их учёт в таблице, и там уже вполне серьёзные цифры — больше 300 строк и свыше 10 тысяч комментариев. Основные площадки, где я публикуюсь, выглядят так:

Хабр — 4 497 комментариев

Т‑Ж — 4 186

Смартлаб — 1 998

Пикабу — 726

Вручную искать в этом массиве текста слова поддержки — долго и нудно, а главное — совершенно не масштабируется. Так родилась идея: поручить всё локальной нейросети для анализа тональности. Заодно я хотел на практике разобраться с моделями на основе BERT.

Для этой цели у меня был, как мне казалось, идеальный инструмент: компьютер с Ubuntu 24 LTS, Docker и мощной NVIDIA GeForce RTX 5060 Ti на 16 ГБ. Казалось, что с RTX 5060 Ti на 16 ГБ анализ пройдёт молниеносно. Но на деле именно GPU стал главной точкой отказа — пришлось всё считать на CPU.

Код на GitHub.

Читать далее

Опыт гуманитария в дообучении LLM с помощью WebUI Text Generation

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4K

Продолжаю делиться опытом освоения нейросетей человеком с гуманитарным образованием и без IT-бэкграунда. На этот раз моей целью было разобраться, как происходит дообучение готовых LLM-моделей, как выстраивать процесс, какие использовать данные, модели, настройки и прочее. Зачем мне это понадобилось?

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

Во-вторых, никогда не знаешь, как такие навыки могут пригодиться в будущем. У меня есть идея: дообучить модель для работы с юридическими документами, чтобы она могла с высокой точностью интерпретировать указанные в них обстоятельства и подготавливать на основе анализа возражения, пояснения, жалобы и другие документы.

Но для этого нужно понимать, как устроен процесс обучения и из каких элементов он состоит. На момент, когда я взялся за эту тему, у меня были только идея и желание разобраться. Я понимал, что нужно начинать с малого, двигаться небольшими шагами от простого к сложному. Поскольку среди моего окружения не оказалось людей, разбирающихся в этой теме, а понятных гайдов по обучению я не нашел, все мои вопросы по обучению адресовались Grok, Qwen, Deepseek, Gemini и ChatGPT (только бесплатные версии).

Забегая вперед, скажу, что это была далеко не команда мечты. Большинство ошибок произошло из-за недосказанности, галлюцинаций и разных причуд нейросетей. Если бы у меня было хотя бы минимальное понимание того, какие существуют обученные LLM-модели, с какими стоит работать, а каких лучше избегать, я потратил бы на процесс обучения не неделю с небольшим, а справился бы за пару дней.

Читать далее

Настраиваем Docker для Django

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.6K

Привет, Хабр! В этой статье мы запустим Docker с Django на локальной машине. Этот материал ориентирован исключительно на локальную разработку — наш Django будет работать с SQLite без использования образов PostgreSQL. Уже в следующей статье мы соберем более сложное приложение. Все действия будем выполнять в Windows, так как большинство начинающих разработчиков используют именно эту операционную систему. Перед началом работы убедитесь, что у вас установлен и настроен Docker Desktop для Windows. В сети много руководств по его установке, поэтому думаю, что с этим не возникнет проблем. Мы будем использовать Django 5.2.6 и Docker Desktop 28.4.0. Весь проект доступен на GitHub. Если материал оказался полезным, буду благодарен за звёзды в репозитории. Первым делом создадим приложение, для которого будем собирать образ:

Читать далее

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

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров6.9K

2 октября 2025 года компания Neuphonic представила NeuTTS Air - открытую модель преобразования текста в речь, которая кардинально меняет подход к синтезу голоса. Главная особенность в том, что она работает полностью локально на обычных устройствах без необходимости подключения к интернету или облачным сервисам.

Читать далее

Телеграмм бот на Python aiogram 3. Часть 1

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров11K

В этом пошаговом руководстве пишем простого эхо-бота с нуля. Используем современный стек: Python и асинхронный фреймворк aiogram 3. Главная особенность — разбираем новый, актуальный на 2025 год, способ регистрации бота через Mini App в @BotFather, который пришел на смену старым консольным командам.

Статья идеально подойдет для новичков, которые хотят быстро войти в разработку ботов и получить работающий результат. Внутри — подробный разбор кода и практические задачи для закрепления материала.

Читать далее

Асинхронность vs. многопоточность: что выживет в эпоху No GIL?

Время на прочтение14 мин
Количество просмотров20K

Хватит спорить — пора запускать и сравнивать.

Тестируем реальные сценарии, измеряем RPS, смотрим на потребление памяти и разбираемся, когда самая разумная стратегия — это просто подождать и обновить Python на free-threading версию. 

Привет, Хабр! Меня зовут Игорь Анохин, я — руководитель платформенной разработки в K2 Cloud и более 8 лет программирую на Python. 

Читать далее

GGUF: квантизация с калибровкой (imatrix)

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.1K

Привет, хабровчане!

Признаюсь, я не большой любитель vLLM, Triton Inference Server и всяких там NeMo, вместо них я предпочитаю ollama вообще и llama.cpp в частности, поскольку придерживаюсь мнения, что 1-2% потери в точности и отсутствие некоторых плюшек - не так важно, по сравнению с удобством деплоя, спекулятивным декодингом, многократным приростом скорости, динамическим оффлодом в память системы и возможностью запускать модели на любом "ведре", навроде древних зионов, андройдофонов, малинок или, скажем, макбуков.

Поэтому вполне ожидаемым для меня является, когда авторы моделей заморачиваются с конвертацией оных в GGUF - особом формате сжатия весов моделей, пригодном для запуска через упомянутые выше ollama и llama.cpp.

Однако реальность обычно немного отличается от ожиданий, и конвертацию в GGUF с последующей квантизацией приходится делать самостоятельно, а чтобы качество работы модели не падало, желательно генерировать imatrix через калибровочный датасет, о чём я и хочу рассказать в данной публикации.

Читать далее

Python 3.14: ошибки стали понятнее, чем когда-либо

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров10K

Команда Python for Devs подготовила перевод статьи о Python 3.14. В новой версии язык стал не просто «ругаться» на ошибки, а объяснять их понятным человеческим языком — с подсказками, где проблема и как её исправить. Теперь вместо сухого invalid syntax вы получите конкретное объяснение и даже намёк на решение.

Читать далее

Triton FP8: реализация и автотюнинг GEMM/Attention под RTX 40xx/Blackwell

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров691

Привет, Хабр!

Я тут на досуге решил разобраться с 8-битными числами с плавающей запятой (FP8) и попробовать написать под них свои GPU-ядра на Triton. Зачем? Ну, новые ускорители от NVIDIA обещают невиданную ранее производительность на FP8 — вдвое больше операций, чем на FP16. Для тренировки огромных нейросетей это прям манна небесная: меньше памяти, больше скорость. Но, конечно, всё не так просто.

Сам по себе FP8 формат капризный, требует тщательного подхода: два разных варианта чисел (E4M3 и E5M2), масштабирование (скейлинг) тензоров, аккуратное накопление сумм в FP16/FP32, разбиение вычислений на тайлы под размер быстрого SRAM (shared memory) и даже специальные меры против переполнения. В общем, нюансов хватает. Расскажу, что узнал и как реализовал GEMM (умножение матриц) и внимание (Attention) в FP8 на языке Triton, да ещё и с автотюнингом.

Перейти к материалу

EDA в Python для новичков: что почитать и где попрактиковаться

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров7.1K

Привет! Это команда курса «Аналитик данных». Мы подготовили подборку материалов для тех, кто делает первые шаги в мире анализа данных и хочет освоить исследовательский анализ данных с нуля.

Разведочный или исследовательский анализ данных (Exploratory Data Analysis, EDA) — это этап работы с данными, на котором аналитик изучает доступную информацию перед построением сложных аналитических моделей. Это основа работы с данными, которая помогает понять, какая информация доступна и возникнут ли трудности с будущим анализом.

Читать далее

AI Review кода за 30 минут: локальная LLM прямо в CI/CD

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров16K

Как за полчаса подключить автоматическое ревью кода с помощью AI Review и локальной LLM Ollama прямо в CI/CD — без токенов и VPN.

Читать далее

Подсчёт количества запросов к БД в автотестах Django

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров591

Не так чтобы часто, но с той самой неприятной регулярностью когда уже забыл как это делал в прошлый раз бывает нужно посчитать сколько запросов к БД гененрирует тот или иной блок кода для django.
При этом, мало что лучше закрепляется в памяти, чем очередная неудачная статья на хабре собственного сочиненя. Штош, попробуем совместить полезное с неприятным.

Читать далее

Ближайшие события

Учебник под микроскопом. Часть 2. Предобработка текста: регулярки, токенизация и лемматизация на практике

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K

В статье рассмотрен процесс предобработки текстов учебников для последующего анализа и обучения моделей машинного обучения. Показано, как из "сырого" текста, извлечённого из PDF, получить очищенный, структурированный и готовый к обработке набор данных. Основное внимание уделено этапам очистки текста от лишних символов, нормализации регистра, токенизации, лемматизации и удалению стоп-слов, а также POS-теггингу. Для каждого этапа приведены примеры с использованием Python и библиотек spaCy, re, а также альтернативные инструменты (NLTK, ftfy, clean-text). В качестве практического применения рассматривается проект EduText Analyzer, направленный на автоматизированный анализ учебников по иностранным языкам. Данные после предобработки сохраняются в форматах CSV и TXT, что обеспечивает дальнейшую обработку, анализ и обучение моделей. Статья предназначена для исследователей в области NLP, педагогов и разработчиков образовательных технологий.

Читать далее

Паттерны программирования при работе с LLM

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров10K

LLM - мощный инструмент, но его эффективность в продакшене зависит не от одного «хитрого промпта», а от всей архитектуры: что мы даём модели, как управляем её рассуждением и как проверяем/обрабатываем результат. В этой статье - компактная карта паттернов, разбитая по этапам конвейера: Input -> Reasoning -> Output.

Читать далее

Изучаем Python: модуль math для начинающих с практическим домашним заданием

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров6.5K

Базовых арифметических операторов в Python хватает не всегда. Как только задача выходит за рамки простого сложения или умножения, в дело вступает стандартный модуль math. Но как им правильно пользоваться и какие возможности он скрывает?
В этой статье мы структурно разберем один из самых фундаментальных модулей Python. Поговорим о корректном импорте, рассмотрим ключевые константы (pi, e, inf) и подробно разберем самые востребованные функции: от sqrt и pow до тригонометрии и логарифмов. Весь материал — строго по делу, без "воды" и с практическими примерами.
В конце вас ждет домашнее задание из трех задач разного уровня сложности, чтобы закрепить теорию на практике. Будет полезно как начинающим разработчикам, так и тем, кто хочет систематизировать свои знания.

Читать далее

Создаем 'Сапёр' на Python с нуля: пошаговое руководство для начинающих

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров9.5K

Разбираем создание «Сапёра» на Python. Идеальный проект для начинающих, чтобы на практике освоить Pygame и основы геймдева.

Внутри — подробное пошаговое руководство, где мы:
• Настроим рабочее окружение с venv.
• Напишем игровую логику с нуля, отделив её от графики.
• Реализуем рекурсивный алгоритм для открытия пустых полей.
• Отрисуем всё на экране и научим игру реагировать на клики.

Читать далее

OpenSource, или как я перестал бояться и полюбил автотесты

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.1K

Всем привет! Меня зовут Илья. Я давно читаю habr, не так долго занимаюсь программированием и еще чуть меньше времени хочу написать здесь статью. Не то, чтобы это идея фикс (или hotfix), но лучше опубликоваться и жалеть, чем поставить в план на «когда-нибудь потом», ничего не сделать, и «получить за это премию». Таких задач у меня уже накопилось на несколько жизней вперед, поэтому, приняв волевое решение, я выделил время на графоманию.

В прошлом мне доводилось писать околонаучные статьи и вести блог про путешествия, совершенные в разных стадиях трезвости (на рецензируемые статьи ВАК про пьяные авантюры, к сожалению, не хватило грантов). Но поскольку срок давности по этим событиям давно прошел, а все самое значимое я забыл, то опишу свой недавний опыт, связанный с OpenSource. 

Идея открытого программного обеспечения мне нравится. Люди, создающие OpenSource проекты вызывают интерес, особенно, когда их продукты востребованы и конкурентноспособны. Двигать индустрию IT в свободное от работы время, вместо того, чтобы предаваться гедонизму — достойно уважения. Особенно, когда сам активно пользуешься подобными продуктами, вместо платных аналогов или ручного труда.

Читать далее

«LLVM для AI». Крис Латтнер и язык программирования Mojo

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров6.5K

Крис Латтнер (Chris Lattner) — создатель CPU-компилятора LLVM и соавтор Swift — предложил новый язык программирования Mojo, спроектированный для одновременного программирования CPU, GPU и TPU (тензорные ядра, оптимизированные для матричного умножения, а это и есть инференс LLM), без всяких лишних библиотек типа CUDA, ROCm и XLA.

Mojo — это надмножество Python с производительностью С и потенциальная замена Rust. Код на нём легко переносится между различными GPU, при этом платформа Modular быстрее обновляется под новые модели GPU, чем сама Nvidia выпускает обновления для своего софта (новые attention kernels).

Простой и мощный язык для написания и деплоя LLM-приложений независимо от оборудования (AMD, Nvidia, Intel и проч.), с метапрограммированием во время компиляции и прочими штуками. Что-то вроде единой «LLVM для AI». Унифицированная программная платформа, которая запускается на любом железе. Это ещё и самый простой способ ускорить Python-приложение в 10−1000 раз, не переписывая его фрагменты на Rust или C++ (что по сути делают NumPy и PyTotch).

Читать далее

Создание пользовательских обработчиков для логов в Python

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.8K

Представьте ситуацию: ваше приложение работает в продакшене, как вдруг происходит критическая ошибка. Вы узнаете о ней только через несколько часов, когда пользователи начинают массово жаловаться. Идёте проверять консоль, а тут всего лишь трассировка стека, которая мало что говорит о проблеме. Из-за кого и когда возникла это ошибка? Чтобы предотвратить такие сценарии, необходима активная система уведомлений. В этом руководстве мы создадим пользовательский обработчик, который предоставит возможность создания системы уведомлений об ошибках, которая гарантирует, что вы всегда будете в курсе состояния вашей системы.

Читать далее

Вклад авторов