Обновить
1024K+

Python *

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

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

FastAPI на AMD FX-8320: оптимизация P99 latency в условиях ограниченных ресурсов (HDD, DDR3)

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

В 2026 году асинхронный Python уже никого не удивляет. Мы привыкли к автоскейлингу в облаках, но что делать, если ваш бюджет на инфраструктуру равен нулю, а в распоряжении есть только «печка» из 2012 года? Рассказываю про личный опыт выжимания максимума из FastAPI на AMD FX-8320: от тюнинга ядра Linux и PostgreSQL до миграции на Ed25519 и использования Rust-сервера Granian.

Читать далее

От RLHF к DPO и дальше: как мы разучились бояться и полюбили выравнивание LLM

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели7.8K

В 2022 году существовал ровно один способ сделать языковую модель «хорошей» — RLHF. Один. Если вы хотели, чтобы ваша LLM отвечала адекватно и хотя бы делала вид, что понимает вопрос, — вам нужны были армия аннотаторов и бюджет уровня OpenAI.

Четыре года спустя у нас зоопарк из десятка методов выравнивания, половину из которых можно запустить на одной RTX 4090 за выходные. DPO убрал reward model. SimPO убрал reference model. GRPO и DeepSeek R1 доказали, что RL жив — но в новой форме. Anthropic опубликовала конституцию Claude на ~80 страниц в открытом доступе и сменила парадигму: от правил к причинам.

Мир изменился. Разбираемся, как именно.

В статье — полная история пост-обучения от RLHF до Constitutional AI, математика ключевых методов (в спойлерах, без боли), рабочий код на TRL + QLoRA с гиперпараметрами, большие сравнительные таблицы и дерево решений «что выбрать для вашей задачи». Плюс честный разговор о проблемах, о которых не пишут в туториалах: distribution mismatch, reward hacking, catastrophic forgetting и почему модели умеют «притворяться» выровненными.

Для разработчиков, ML-инженеров и всех, кто хоть раз открывал Hugging Face и думал: «а что если я это fine-tune...»

Читать далее

M23-Spectrum: инициализация весов нейросети через теорию групп Матьё

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

Когда мы говорим об обучении глубоких нейронных сетей, первое, о чём думают — это архитектура, функция потерь, learning rate. Инициализация весов кажется скучной технической деталью: «ну Xavier/He поставил и забыл». Но за этой простотой скрывается фундаментальная проблема.

Xavier (Glorot, 2010) и He (2015) инициализируют веса из случайных распределений с дисперсией, масштабированной под размер слоя. Это работает хорошо для неглубоких сетей, но с ростом глубины возникает системная проблема: спектральный радиус матрицы весов отклоняется от 1, и сигнал либо затухает, либо взрывается при прохождении через десятки слоёв.

Динамическая изометрия — концепция, которая говорит: чтобы сигнал сохранялся, нужно $\rho(W) \approx 1$ на каждом слое. Добиться этого статистически сложно, особенно стабильно. Но что если взять структуру, где это гарантировано алгебраически?

Читать далее

Как я снизил WER с 33% до 3.3% для русской речи на CPU: сравнение GigaAM, Whisper и Vosk

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

За два месяца я перепробовал три ASR-движка, шесть моделей Whisper, адаптивное чанкование, T5-коррекцию и ансамблевое голосование — и большая часть идей оказалась тупиком. В статье — подробный разбор шести тупиков и одной находки: почему GigaAM от Сбера на обычном CPU показывает 3.3% WER на русском, обходя Whisper large-v3-turbo на RTX 4090 (7.9%) в 2.4 раза. С бенчмарками, кодом и честными оговорками.

Читать далее

Метрики для задач NLP. Часть 2. Генерация текста: BLEU, ROUGE, METEOR, BERTScore

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

В этой статье будет рассказано о популярных метриках оценки для задач генерации текста: BLEU, ROUGE, METEOR, BERTScore. Рассказ будет сопровождаться визуализацией, примерами и кодом на Python.

🔥 Начинаем 🔥

Область видимости в Python: LEGB и подводные камни

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели5.8K

Работа с переменными в Python кажется очевидной до тех пор, пока код не начинает вести себя неожиданно. Ошибки с UnboundLocalError, странное поведение замыканий или некорректная работа global и nonlocal - всё это следствие непонимания области видимости.

В Python действует чёткое правило разрешения имён - LEGB. Разберёмся, как оно работает и какие ловушки скрываются под капотом.

Читать далее

Надоел Celery? Не нужен K8s? Как мы сделали легковесный оркестратор на Python

Время на прочтение4 мин
Охват и читатели8.8K

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

Если вы когда-нибудь сталкивались с задачей запуска сотен изолированных фоновых процессов на одном сервере (будь то парсеры для клиентов, торговые боты или обработчики данных в SaaS), то вы знаете, как быстро всё усложняется.

Можно, конечно, вручную поднимать Docker-контейнеры и писать костыли для мониторинга. Можно развернуть полноценный Kubernetes, но для одной ноды это часто — оверкилл, требующий отдельного администратора. Можно использовать Celery, но он управляет задачами, а не контейнерами, и изоляция на уровне процессов — это не тоже самое, что изоляция на уровне контейнеров.

Мы столкнулись с этой болью и написали инструмент, который закрывает этот пробел. Встречайте: RedTailFox — легковесный оркестратор на Python, который управляет Docker-контейнерами с вашими воркерами на одном сервере. Он сам решает, когда поднять новый контейнер, сам следит за здоровьем слотов и сам себя чинит.

Читать далее

Как писать юнит-тесты, которые не ломаются

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.2K

Привет, Хабр! Меня зовут Владимир, я Python-разработчик в команде IMV в Авито. Мы разрабатываем продукт, который помогает оценивать рыночную стоимость товара, будь то автомобиль, квартира или холодильник. Мы часто пишем тесты, и в этой статье я расскажу, как разные подходы к юнит-тестированию влияют на качество тестов, когда они помогают проекту, а когда — мешают, и почему само по себе наличие тестов ещё не гарантирует пользы. Статья будет полезна разработчикам, тимлидам и всем, кто пишет юнит-тесты и поддерживает код в долгоживущих проектах.

Читать далее

Как разрабатывать утилиты для тестов embedded-прошивок без железа: практика Test Driven Development

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

Часто SDET-инженеры, работающие со встраиваемыми системами, не приступают к работе, пока не получат реальное железо: датчик, микроконтроллер или плату с новым чипом. Такой подход обычно оправдывают тем, что без физического девайса «на столе» писать корректно работающий софт невозможно. Очевидный минус: увеличивается время выхода продукта и нового функционала на рынок. Но разработку можно начать, даже не имея в своем распоряжении устройства: все дело в договоренности между командами.

Меня зовут Рустам Ахмадуллин, я старший инженер по системной верификации аппаратуры в YADRO. Расскажу на примере датчика температуры LM75A, как написать API без физического доступа к устройству и его прошивке. Разберем методологию Test Driven Development, при которой разработка начинается с написания автоматизированных тестов, а не самого кода.

Читать далее

Рекап для разработчика: как я собрал итоги года на основе GitHub и self-hosted LLM

Время на прочтение23 мин
Охват и читатели11K

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

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

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

Читать далее

Python mmap: Улучшенный I/O файлов с помощью отображения файлов в память

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели8.6K

В Python существует несколько способов решить большинство задач. Например, есть разные способы чтения файла в Python, включая редко используемый модуль mmap.

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

Читать далее

12 бит против 8 бит в камере для проведения металлографических исследований при помощи оптического микроскопа

Время на прочтение9 мин
Охват и читатели7K

В лаборатории к инвертированному оптическому микроскопу Zeiss Axio Observer 3 подключена промышленная камера The Imaging Source DFK 33UX265 для выполнения металлографических задач: анализ зерна, неметаллических включений, поиска дефектов структуры. Мне стало интересно, как она устроена и что есть у нее "под капотом". Когда мы проводим анализ, то не задумываемся о постобработки, а под "капотом" любой камеры есть много интересных режимов. Я ухватился за 12-битный монохромный Bayer-формат (часто обозначаемый как 12-bit Bayer Packed) — это формат RAW-данных, при котором с сенсора с фильтром Байера считывается 12 бит информации на пиксель без цветовой интерполяции. Это обеспечивает более высокий динамический диапазон (4096 уровней яркости) по сравнению с 8-битным форматом (256 уровней), сохраняя «сырые» данные.

Большинство программ, связанных с металловедением принимают картинку в 8 бит. И я хотел бы разобраться в вопросе, а так ли нужен при оценке и автоматизации режим 12 бит.

Читать далее

Я заменил Google на 50 строк Python. Через месяц я забыл, как пишется tar -xzf

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

Десять лет в девопсе. Десять. И я гуглю tar -xzf. Не раз в год — раз в неделю. Ну, может раз в десять дней, если повезёт. Открываю хром, набираю «tar extract gz linux», пролистываю три рекламы, нахожу ответ на SO, копирую, вставляю, закрываю вкладку. Через неделю — по новой.

Я не идиот. Точнее, может и идиот, но не поэтому. Просто tar — это такой синтаксис, который у меня физически отказывается залезать в долговременную память. Там дефис или нет? xzf или xfz? Или zxf? Вроде порядок не важен? Или важен?..

Короче. Месяц назад я написал скрипт, который это решил. А потом скрипт решил больше, чем я хотел.

Читать далее

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

Использование термодинамической помощи случайным лесам для многоклассификационных задач (с кодом Python)

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

В области объяснимого искусственного интеллекта (Explainable AI, XAI) метод SHAP (SHapley Additive exPlanations), опирающийся на прочную теоретическую базу теории игр, стал ключевым методом оценки важности признаков. Для простых задач классификации сообщество располагает обширной документацией и учебными материалами, что позволяет разработчикам легко создавать графики-водопады (Waterfall Plot) или графики-пчелиный рой (Beeswarm Plot) для объяснения прогнозов модели.

Однако при работе с многоклассовой классификацией (Multi-class Classification) применение SHAP претерпевает изменения. Из-за изменения размерности выходных данных прямое использование стандартного кода часто приводит к ошибкам размерности или неверной интерпретации.

В данной статье рассматриваются технические трудности применения SHAP в задачах многоклассовой классификации и предлагается проверенное решение для визуализации на Python. Материал основан на новейшем исследовании, опубликованном в 2025 году в журнале Measurement (статья под названием Thermodynamic simulation-assisted random forest: Towards explainable fault diagnosis of combustion chamber components of marine diesel engines), в котором реализована визуализация объяснимой диагностики неисправностей для многоклассовой задачи (вычисление SHAP для 14 категорий в пяти состояниях неисправности).

Адрес репозитория Github

Читать далее

Шаблонные строки в Python 3.14: как получить контроль над интерполяцией данных

Время на прочтение13 мин
Охват и читатели6.5K

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

В Python 3.14 появился новый инструмент — t-строки (шаблонные строки). На первый взгляд они выглядят как еще одна вариация f-строк. Но на самом деле это принципиально другой механизм: строка больше не собирается автоматически, а передается разработчику в виде структуры, где отдельно хранится статический текст и отдельно — значения для интерполяции.

Меня зовут Алексей Макаров, я инженер по информационной безопасности в Лиге Цифровой Экономики. В этой статье разберемся, как работают t-строки в Python 3.14, чем они отличаются от привычных f-строк и в каких сценариях действительно помогают писать более безопасный код, а где использовать их не стоит.

Читать далее

Как мы собрали СЭД для поликлиники из трёх костылей

Время на прочтение5 мин
Охват и читатели5.7K

В этой статье я рассказываю, как мы за 3 месяца собрали кастомную СЭД для поликлиники на базе трёх open-source компонентов: Mayan EDMS (хранилище), Camunda (workflow) и NiceGUI (фронтенд). Система закрыла ключевые потребности: электронные подписи для внутренних документов, сквозная LDAP-аутентификация и контроль исполнения задач — без единой коммерческой лицензии

Читать далее

Почему вопрос «Какой язык программирования выбрать в 2026» убивает вашу будущую карьеру

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.4K

Привет, Хабр! (И тебе, питонист, который считает свой язык идеальным, и тебе, JS-ник, у которого уже вышел новый фреймворк, пока ты читал это предложение, и тебе, 1С-ник, который устал объяснять, что ты тоже программист всем во круг.)

Наткнувшись миллионный раз на статью «КАКОЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ВЫБРАТЬ?» я задался вопросом, почему люди ещё не поняли ответа на этот вопрос, ведь он на поверхности.

Не рекомендуется для прочтения опытных разрабов считающих свей язык программирования самым лучшим.

Читать далее

ЧАСТЬ 2 — Мониторинг МФУ на Flask: новые функции, проблемы и планы

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

Опубликовал ЧАСТЬ 2: проект вырос из простого SNMP‑опрашивателя в рабочий инструмент для парка принтеров. Теперь есть склад картриджей, журнал ТО, отдельная страница парка и удобные экспорты в Excel. Пишу про реальные боли (цветные МФУ, разные прошивки, потеря данных в CSV) и о том, что планирую доделать

Читать далее

Алготрейдинг по Фибоначчи 0.5: от гипотезы до realtime-бота на BingX

Время на прочтение8 мин
Охват и читатели7.3K

Сегодня займёмся реализацией моей довольной старой идеи. Покажу свой доработанный проект по очень интересный гипотезе. Здесь основными триггерами для торгового робота будут выступать две вещи: рыночная структура и использование уровней фибоначчи в комбинации с трейлинг стопом.

Разберём полный цикл разработки торговой системы: от формализации идеи до запуска реального бота на фьючерсной бирже. Проект состоит из двух частей: скрипта бэктеста (Back.py), realtime-бота (Realtime.py).

Цель статьи — показать не только торговую идею, но и инженерную реализацию: архитектуру, контроль состояния, обработку данных, синхронизацию, и различие между backtest-движком и real-time исполнением.

Итоговой результат бектеста - 25000$ прибыли на активе стоимость в 2000$ за 6 лет. Этот результат действительно реален. Отрисовали кривую капитала и посмотрели статистику и основные данные. Подробнее об этом и ньюансах читайте в статье!

Читать далее

Инструменты навигации в GIGA IDE

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

Добрый день! Меня зовут Андрей Слекеничс, я PO GigaIDE, и сегодня мы продолжаем наш экскурс по функциональности GigaIDE.

Первая и предыдущая статьи цикла доступны здесь и здесь. Сегодняшний материал — последний, затрагивающий функциональность GigaIDE Community, и первый, в котором мы переходим к возможностям уже только GigaIDE PRO.

Читать далее