Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from .ml
Polars в продакшене: best practices

Когда нужно готовить фичи и витрины «здесь-и-сейчас», pandas-пайплайн часто даёт лишние задержки. Разберёмся, как построить на Polars быстрый и устойчивый конвейер для ETL и ML.

Чтобы что?

📌 Меньше TCO на ETL. За счёт pushdown и параллельности вы читаете меньше данных, тратите меньше CPU и памяти. На том же кластере — больше задач и стабильнее SLA.
📌 Быстрые фичи для моделей. Окна, джоины и агрегации считаются в Polars, а в модель уходят уже компактные матрицы/тензоры — время обучения и инференса сокращается.
📌 Порог входа ниже. С SQLContext команда может начать с SQL и постепенно переходить к выражениям, не теряя производительности.

Базовый набор шагов

📝 Начинайте со scan_* и Lazy. Схема простая: scan_parquet/csv → select/filter/with_columns → финальный collect(). Ранний select() экономит I/O.

📝 Для отладки используйте fetch(), он подходит для быстрых «прогонов» на маленьком сэмпле.

📝 Настройте джоины. Для джойнов по времени — join_asof, сортировка фреймов по ключам, для строковых ключей используйте тип Categorical и включённый StringCache, чтобы джоины были и быстрее, и стабильнее по памяти.

📝 Создавайте новые фичи выражениями. Конструируйте логику через when/then/otherwise, pl.struct, селекторы pl.selectors — это заменяет циклы и apply, оставляя работу на стороне внутреннего оптимизированного движка polars.

📝 Подружите свой пайплайн с ML-стеком. NumPy/torch/sklearn: df.to_numpy()/s.to_numpy() → torch.from_numpy() — минимум копий между слоями. Pandas-мир: to_pandas(use_pyarrow_extension_array=True) включает Arrow-бэкенд и помогает экономить память за счет zero-copy операций.

📝 Включайте streaming там, где длинные пайплайны. collect(engine="streaming") и sink_* уменьшают пиковую память и сглаживают латентность. sink_* позволяет обрабатывать и записывать данные на диск батчами, чтобы не перегружать RAM.

📝 Где уместно — SQL. Регистрируйте фреймы в SQLContext, пишите запросы на SQL, а узкие места постепенно переносите на выражения. Данная практика хороша для быстрого переезда на polars в командах, которые плохо знакомы с синтаксисом polars, но разбираются в SQL-выражениях.

Анти-паттерны в продакшене

📎 collect() после каждого шага. Так вы рвёте план и теряете оптимизации. Копите цепочку и собирайте один раз в конце.
📎 Маятник между pandas и Polars. Постоянные конвертации туда-сюда съедают выигрыш. Держите данные в Polars до последнего шага; если нужна совместимость, используйте Arrow-бэкенд.
📎 Игнорирование специфики типов. Оставлять ключи строками = призывать медленные джоины. Перекладывайте ключи в Categorical и включайте общий словарь.


Кейс Точка Банк

📝 Контекст
Задача реал-тайм рекомендаций. Узкое место — джоины, фильтры и сортировки на горячем потоке данных.

📝 Что сделали
Перенесли препроцессинг с pandas на Polars, переписали джоины в lazy-план, навели порядок в типах (категориальные ключи + общий словарь) и добавили join_asof для временных связок.

📝 Результат
Пайплайн стал выполняться примерно в 5 раз быстрее end-to-end на том же железе — основной прирост дали «проталкивание» фильтров и параллельные джоины.

Получается, что если собирать пайплайн с учетом всех лучших практик работы с polars — lazy, pushdown, выражения, аккуратные джоины и понятные мосты в ML — вы получаете устойчивый прирост скорости и контроля над ресурсами.

💜 Этот пост написал Всеволод Богодист, DS в Точка Банк
Классы в Python для аналитика (?)

Знаю, что многим аналитикам тема классов кажется ненужной — и это нормально.

Сам изучал ООП на своем направлении в магистратуре, очень много всего предстояло изучить... И про свойства, про то, как реализовать, жуть короче, хочется функциями пользовать и все (и то максимум)...

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

Например, в pandas 🐼.

1️⃣ Класс: pandas.DataFrame, который задает структуру таблиц: колонки, индексы, методы
2️⃣ Объект: df = pd.DataFrame(...), может быть задан через чтение баз данных, csv, вручную и тд.
3️⃣ Методы: df.groupby(), df.query, df, etc.

Классы могут помочь, когда мы хотим выстроить определенную структуру и избежать хаоса в коде

🔽Опишу самый простой пример 🔽

Класс User описывает пользователя продукта.
У него есть: атрибуты user_id, os, orders и метод is_active(),
который определяет, активен ли пользователь (есть ли у него заказы).

class User:
"""Класс, описывающий пользователя продукта."""

def __init__(self, user_id: int, os: str, orders: list[int]):
"""
Args:
user_id (int): Уникальный идентификатор пользователя.
os (str): Операционная система (например, 'iOS' или 'Android').
orders (list[int]): Список идентификаторов заказов пользователя.
"""
self.user_id = user_id
self.os = os
self.orders = orders

def is_active(self) -> bool:
"""Проверяет, есть ли у пользователя хотя бы один заказ."""
return len(self.orders) > 0


Я слышал, что на некоторых курсах по аналитике уже включают ООП. Например, в теме по 🆎.
Это логично: когда ты работаешь с десятками экспериментов, хочется выстроить для них единую структуру, чтобы каждый тест имел одинаковый формат, методы расчёта и итоговую инфу 👀

class Experiment:
def __init__(self, name, control, test, metric_name):
self.name = name
self.control = control
self.test = test
self.metric_name = metric_name

def calc_mean(self, group):
return group[self.metric_name].mean()

def uplift(self):
return (self.calc_mean(self.test) - self.calc_mean(self.control)) / self.calc_mean(self.control)

def summary(self):
return {
"experiment": self.name,
"uplift": round(self.uplift() * 100, 2),
"control_mean": self.calc_mean(self.control),
"test_mean": self.calc_mean(self.test),
}


Но в крупных компаниях зачастую реализована своя A/B платформа, аналитику остается только делать дизайн эксперимента, подводить итоги и делать рекомендации... 🧐


💻💻 Подход с классами не ограничивается тестами.

Необязательно использовать что-то сложное, например, на обучении я реализовывал классы для обращения к API / обработке ошибок / хранения информации на кошельке у юзера. Офк, это можно решить и с помощью SQL (про хранение данных), а у меня проект был без него 💅

Его можно применять и в других задачах — например, в ML, где удобно базово описать модель под свои данные и потом переиспользовать или наследовать её в будущем.

class ConversionModel:
def fit(self, df):
...
def predict(self, new_data):
...


✏️ Что можно почитать?

1.
🔗 Ссылочка 1
2. 🔗 Ссылочка 2
3.
🔗 Ссылочка 3

Если интересен разбор с кейсами применения ООП, ставьте
🐳, пишите, использовали ли вы у себя?

@zasql_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Полезные материалы по RAG/GitHub и новый поток курса по ИИ-прототипам и вайб-кодингу!

——————————————————————————
Чтобы не затерялось хотел бы поделиться ссылками на интерактивныe материалы по RAG (в дополнении к заметке) и GitHub-инструментам, которые готовил для разных мероприятий в этом году.

📚 Полезные материалы по RAG:

https://dzhechko.github.io/yc-rag-lecture-intro/
https://rag-sandbox-guide.pages.dev

🔧 GitHub инструменты:
https://github-ecosystem-guide.pages.dev/

🔑 Коды доступа к продвинутому курсу:
`llmnotes2024`
`github-premium`
`advanced-course`
`telegram-llm`

💡 Как использовать код:
• Перейдите к разделу "Продвинутый курс"
• Введите код в поле "Введите код доступа"
• Нажмите "Проверить"
• Откроется доступ к курсу


——————————————————————————

И приглашаю всех желающих 29 октября (в эту среду) на пятый поток курса по "ИИ-прототипам и вайб-кодингу", где за 8 занятий мы будем копировать киллер-фичи успешных стартапов с оценкой свыше $1B! 💰

🎯 Что будем делать:
За 2 часа работы в Cursor/Lovable/Replit/Claude Code воссоздаем основные функции каждой компании-единорога

🦄 Список компаний для копирования:

1️⃣ MindTickle ($1.2B) - ИИ-тренажер для продавцов (делали в прошлом потоке)
2️⃣ Yuanfudao ($15.5B) - ИИ-репетитор
3️⃣ G2 ($1.1B) - Отзовик по B2B-SaaS-сервисам
4️⃣ OnlyFans ($8B) - Платный контент для взрослых
5️⃣ Outreach ($4.4B) - Поиск b2b-лидов и письма им
6️⃣ Whatnot ($5B) - Живые аукционы
7️⃣ BetterUp ($4.7B) - ИИ-коучинг и менторинг в компаниях
8️⃣ Guild ($4.4B) - Корпоративное обучение
9️⃣ DeepL ($2B) - Синхронный перевод

Теперь этим компаниям-единорогам стоит опасаться конкуренции! 😄

📈 Бонус: еще с десяток проектов из прошлых наборов будут доступны в записи!

📝Официальный анонс здесь
📝 Регистрация: https://productuniversity.ru/cursor
🎮 Интерактив: https://quest.productuniversity.ru/
(пройдя интерактив, вы получите ссылку на запись свежего видео-обзора лучших AI-инструментов для Vibe Coding'а)

Отличная возможность запустить свой стартап или внутренний проект! 🚀

@llm_notes

#rag #vibecoding #github #courses #startup
🤖 Microsoft выпустила Agent Lightning — фреймворк для обучения ИИ-агентов с помощью обучения с подкреплением

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

Microsoft представила Agent Lightning — открытый фреймворк, который обучает ИИ-агентов методом обучения с подкреплением практически без изменений в существующем коде.
Хотя, например, авторы Manus считают, что излишнее усложнение агентов путем дообучения моделей - это ловушка, которой следует избегать (см. интерактивный транскрипт из заметки)

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

⚡️ Основные возможности:

1️⃣ Простая интеграция — добавьте трейсер в существующий код агента и начните собирать данные для обучения. Система автоматически инструментирует вызовы LLM без переписывания под конкретные фреймворки

2️⃣ Множественные методы оптимизации — выбирайте между обучением с подкреплением с интеграцией VERL для файн-тюнинга модели или автоматической оптимизацией промптов

3️⃣ Независимая архитектура масштабирования — запускайте десятки воркеров на CPU-машинах, пока обучение происходит на GPU-кластерах

4️⃣ Мониторинг в продакшене — встроенное логирование отслеживает каждое решение агента, вызов LLM и сигнал вознаграждения через OpenTelemetry

🔗 Совместимость:
Работает с любыми фреймворками для ИИ-агентов: LangChain, OpenAI Agent SDK, AutoGen, CrewAI, Microsoft Agent Framework, или даже без фреймворка (чистый Python OpenAI).

📊 Преимущество RL над обучением с учителем:
Обучение с подкреплением требует только сигналы результата (задача решена/провалена), в то время как обучение с учителем требует детальных аннотаций для каждого шага каждой задачи, что крайне дорого для интерактивных сценариев.

🔬 Подробнее:
• GitHub: https://github.com/microsoft/agent-lightning
• Документация: https://microsoft.github.io/agent-lightning/latest/
• DeepWiki: https://deepwiki.com/microsoft/agent-lightning

@llm_notes

#reinforcement_learning #rl #agents #microsoft #machine_learning #ml #llm
#agents

Ждали и дождались - агентов теперь и без кода пишем
🤖 LangChain запускает свой Agent Builder — конструктор ИИ-агентов без кода

LangChain представил LangSmith Agent Builder в закрытом превью — платформу для создания ИИ-агентов без необходимости писать код. Теперь создавать автономных агентов смогут не только разработчики.

Что отличает от конкурентов:

🔹 Это не визуальный конструктор workflow, а именно агент-билдер
🔹 Агенты принимают решения динамически, а не следуют заранее заданному пути
🔹 Встроенная система памяти — агент запоминает исправления и применяет их в будущем

Ключевые возможности:

1️⃣ Разговорная настройка — описываете задачу простым языком, система задает уточняющие вопросы и автоматически генерирует промпты

2️⃣ Адаптивная память — агенты обновляют свои инструкции на основе ваших корректировок без ручного редактирования

3️⃣ Интеграция с сервисами — подключение к Gmail, Slack, Linear, LinkedIn через OAuth и MCP

4️⃣ Agent Inbox — мониторинг всех потоков агентов с индикаторами статуса и уведомлениями

Архитектура агента включает:

Промпт — логика и описание задач агента
Инструменты — подключение к внешним сервисам через MCP
Триггеры — автоматический запуск по событиям или расписанию
Субагенты — разделение сложных задач на специализированные модули

Платформа подходит для внутренних задач: email-ассистенты, чат-боты, интеграция с Salesforce. Например, агент может ежедневно присылать сводку встреч или создавать задачи в Linear на основе писем.

В целом, все это можно сделать и в том же manus.im через интеграционную связку "отправка задания по email" в manus, внутри которого предварительно настроены нужные mcp-серверы.
Но если вы хотите влиять на архитектуру agent flow и в дальнейшем мониторить его состояние, то LangSmith Agent Builder подойдет лучше, чем универсальная система вроде manus.im.
Получается, LangSmith Agent Builder - это что-то вроде lovable/replit для построения мульти-агентной системы.
Кстати, вот еще один вариант системы такого плана, но которую можно потестировать и без private preview (я ее использовал в третьем потоке курса по ИИ-прототипированию для быстрого создания мульти-агентных цепочек).

Источники:
📝 [Официальный блог LangChain]
🎥 [Демо на YouTube]

@llm_notes

#agents #langchain #automation #productivity #builder
Forwarded from дAI потестить!
This media is not supported in your browser
VIEW IN TELEGRAM
Че как там дела у нейрофотографов? Все еще делают нейрофототсессии за деньги??

P.S. Промпт подглядел у Юли 85Gb, но буду делать вид что придумал сам.
P.P.S.S. С некоторыми лицам работает плохо, но от этого только интереснее.

Бесплатно https://labs.google.com/mixboard/
Forwarded from КПД
Точность имеет значение

У наиболее распространенного на данный момент для обучения формата bfloat16 всего 7️⃣ бит на мантиссу. Обычно полагается, что такой формат lossless с точки зрения обучения и инференса (есть работы указывающие на сложность в воспроизводимости результатов в bf16).

Однако для некоторых слоев и тензоров, могут быть интересные последствия.

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

А дело в том, что в момент инициализации веса при RMS норме равны 1, и если обновление по величине не превышает 1e-3, то вес никогда не изменится.

В bfloat16: 1 + 1e-3 = 1

Собственно для таких ситуаций и нужна мастер копия в fp32.
Forwarded from Egor Krasnoperov
Недавно столкнулся с похожей проблемой, надо было замаскировать значения в тензоре из bf16, и после дебага выяснилось, что выражение 1 > 0.999 в bf16 == False, 0.999 при касте в bf16 превращается в 1
Forwarded from IT-girl talks💗
База по резюме в 2к25

Вот это я конечно смачно выдала в себе миллениала, ну да ладно.

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

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

🟢Достижения через ХУZ. Качественных 2-3 достижения, к которым вы пришли через инструмент, который актуален на рынке (SQL, Python) и обязательно указывать эффект в цифрах, но не клоуничать. В пределах адекватного, но и не скатываться в «работу работал» или «операционку операционил». Если эффект был денежный - супер, если временной или процентный - тоже супер, но главное помнить как это посчитали;

🟢Просто писать задачи не нужно, особенно если они повторяются из места в место. Один раз можно оставить. Задачи посмотреть в вакансиях и указать у себя те же;

🟢Самое важное это последнее место работы - ему больше внимания, особенно к стеку и эффекту. Последнее место должно быть расписано максимально вкусно;

🔴Фото НУЖНО. Деловое, но не постное и не из бани/бара;

🔴Возраст НУЖНО, если вам от 23 до 32;

🔴Университет указывать нужно, даже если не окончили;

🔴Курсы/ Каналы/ Вторые работы/ ГитЛабы НЕ НУЖНО. Выглядеть как тот, кто активно живет жизнь или развивает свой проект не будет вам на пользу;

🟤О себе абзац короткой выжимки без шаблонных коммуникабельности и стрессоустойчивости с добавлением контактной информации. Любое более-менее популярное хобби подойдет, но не уверенна, что с хобби-хорстнгом не возникнет вопросов;

🟤Название компании писать вручную, а не выбирать из выпадающего списка, чтобы не занимать пол резюме описанием, что там делает ваша компания на рынке (продает арбузы);

💵Зарплату всё еще не пишем;

🟤Название должностей как в трудовой отменяем - пишем всегда ту же позицию, что и ищете сейчас;

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

🟢Чем старше грейд и больше опыт, тем больше фокус на собственные инициативы, гипотезы и профессиональную насмотренность, которую вы уже активно применяете;

🟢Опыт больше 6 лет скрутить, меньше 2х лет докрутить;

🚨Очень. Много. Откликов. Прямо вот настройтесь на 500 точно;

🟢С чатом гпт не злоупотреблять, длинные тире и списки с кучей воды и операционных задач стоит исключить;

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


Фух, ну вроде бы всё. Расскажите как там дела на рынке? Кто недавно сменил работу много времени это заняло? Сколько откликов? Какие лайфхаки в резюме использовали?
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Rafa (:
https://arxiv.org/pdf/2510.20171 если кому интересно; похожее было мельком в первой статье от OpenAI how to train on 5k K8S cluster, потом в одной из последних LLAMA...
Forwarded from Get Rejected
Манипуляции в корпоративной культуре

Есть ощущение, что про токсичность все уже сто раз сказали, а вот про корпоративные манипуляции как-то тихо.
Хотя либо вы с ними сталкивались, либо вы не поняли, что с ними сталкивались и все молча прожевали

Эпизод 1
Задаешь любой вопрос своему начальству по работе
Он: «А ты что думаешь? Или перевод на другого человека с тем же вопросом»

Так переезжает ответственность) туда-сюда)

Эпизод 2
- Есть вопросы?
- Да, вот такой вопрос
- Я не считаю нужным это обсуждать

Эпизод 3
В конце важных созвонов:
«Я очень рад, что ты у меня в команде.»

Очень часто возникает в ситуациях когда до этого почти прозвучало «я увольняюсь»

Эпизод 4
«Зачем ты поднимаешь тему? У всех такие проблемы. Не надо драматизировать»

Эпизод 5
«Смотри, Петя делает за два дня, а ты уже неделю»

Эпизод 6
«Да, мы обсудим это позже» = никогда
«Пока не время» = никогда

Эпизод 7
Сценарий:
сначала публично тебя унижают как в эпизоде 5, а после лично:
«Слушай, ну они просто не поняли… а я-то знаю, что ты молодец»

С днем эмоциональных качелей?

Эпизод 8 - мой любимый - "инфляция обещаний"
«Через квартал повысим»
«До конца года все решим»
«Бюджет согласован, осталось чуть-чуть»

Эпизод 9 - самый палевный
«Ты же не хочешь подводить команду?
У нас общая миссия»

Поучительных выводов не будет