Обновить
516.34

Python *

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Крис Латтнер (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.6K

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

Читать далее

Whisper X без докера- простой GUI на Windows

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

Тут вот человек написал навороченную статью про установку под Докер этой штуки,
но так как я программист не настоящий ( а всё через нейросети), и Linux-ом баловался только лет 20 назад, то решил всё же под Windows всё это сделать, ибо полезно:

1) телефонные звонки можно иногда расшифровать
2) делать интервью для написания книги ( в ролях)
3) как там уже писали про всякие деловые разговоры..
4) ну и так далее и так далее..потом этот текст засунуть в нейросеть и сделать выводы.

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

При других настройках все гораздо лучше- как на скрине.

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

Потом борьба с ошибками и пожалуйста..

Это я к тому, что на Reddit-е пока все это делал наткнулся на жалобы, вот мол, а почему под Windows нет сборки? Типа всё на линуксе да на линуксе, а сделать такое оказывается делов на пол-дня не программисту.

Читать далее

Байесовский анализ и временные ряды в прогнозировании отказов оборудования на примере нефтегазовых компаний

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

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

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

Читать далее

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

Рецепт vLLM с мистралем. Часть 1

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

В первой части мы загрузим и запустим модель Mistral-7b, используя технику QLoRA, метода 4-битного квантования, который позволяет значительно уменьшить размер модели без потери её производительности.

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

Читать далее

Как написать нейросеть для бизнеса на Python

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

Привет, Хабр! Сегодня мы разберем, как нейросети автоматизируют рутинные безнес‑процессы на реальном примере — классификации заявок в службу поддержки. Даже простые нейросети способны значительно разгрузить сотрудников и ускорить обработку данных.

Читать далее

Борьба с дисбалансом классов. Стандартные методы

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

Привет, Хабр! На связи KozhinDev, а именно ml-разработчик Приходько Александр. Этой статьей я начну цикл публикаций по теме борьбы с дисбалансом классов. В первую очередь этот гайд предназначен для ml-разработчиков уровня junior/middle. Мы ознакомимся с различными подходами к решению проблемы дисбаланса классов и проведем их сравнительный анализ на сгенерированной выборке: коснемся метрик качества, встроенных в классификаторы методы борьбы с дисбалансом классов, методы модификации выборки, а также комбинированные техники. В последней части мы расскажем про наш опыт применения кастомных метрик точности, как еще один метод борьбы с дисбалансом.

Читать далее

Data Drift в ML Страхового Дома ВСК: от PSI-анализа до пересборки фичей и сравнения моделей

Время на прочтение6 мин
Количество просмотров399

Представьте: ваша модель машинного обучения, блестяще прошедшая все A/B-тесты, через полгода начинает тихо, но уверенно деградировать. Предсказания становятся менее точными, бизнес-метрики ползут вниз, а вы не понимаете, почему. Знакомо? Скорее всего, вы столкнулись с Data Drift — смещением данных.

Data Drift — это изменение распределения входных данных модели с течением времени. Мир не статичен: меняются привычки клиентов, экономическая ситуация, законодательство. Модель, обученная на «старых» данных, оказывается не готова к «новым». В страховой сфере, где риски и деньги напрямую связаны, это особенно критично. Ошибка в оценке убыточности полиса может стоить компании миллионов.

В этой статье я на реальном примере разберу, как:

Читать и обсуждать

Просто о сложном: архитектура фронта для техлида

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

Привет, Хабр! Меня зовут Максим Вишневский, я архитектор (в основном фронтенда) и автор небольшого Telegram-канала Вишнёвые истории. Эта статья основана на моём докладе с TeamLead Conf++ 2024.

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

Читать далее

Python и Go — идеальный набор (высокоуровневых языков)

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

Перед вами - известное письмо Линуса Торвальдса, где он написал, что если бы единственная причина использовать С, а не С++, была в том, чтобы отпугивать программистов на С++ - это уже была бы весомая причина.

Питон в последнее время завоевал лидирующие позиции в дата саенс и машинном обучении, что меня как разработчика на нём не может не радовать. В данной статье вы узнаете, почему, следуя духу минимализма из указанной цитаты, нужно использовать го в тех областях, где лидерство питона не так очевидно. А в питоне - не заморачиваться с async/await, фреймворками и прочей ерундой.

Читать далее

Реализуем Q learning на Python

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

Обучение с подкреплением (Reinforcement learning) является одним из направлений ML. Суть этого метода заключается в том, что обучаемая система или агент учится принимать оптимальные решения через взаимодействие со средой. В отличие от других подходов, Reinforcement learning (RL) не требует заранее подготовленных данных с правильными ответами или явной структуры в них. 

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

В этой статье мы попробуем разобраться с тем, как работает Q-обучение, а также рассмотрим небольшой пример на Python.

Перейти к статье

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