data_easy | Неотсортированное

Telegram-канал data_easy - EasyData

908

Добро пожаловать! Меня зовут Мария Жарова, и это мой блог про науку о данных✨ Лайфхаки из будней MLщика, полезности по Data Science и ответы на вопросы, которые волнуют новичков и не только🌝 Автор @NaNCat

Подписаться на канал

EasyData

Привет, друзья!
Мы привыкли считать, что на табличных данных бустинг не победить: CatBoost, LightGBM и XGBoost долгие годы остаются золотым стандартом. Но последнее время появляется много нейросетевых моделей "из коробки" специально для таблиц, которые даже местами обгоняют классиков. Ниже - подборка трёх наиболее интересных архитектур.

🐱 TabM
Архитектура основана на MLP с параметрически-эффективным ансамблированием. Внутри одной сети обучаются несколько "виртуальных моделей", которые делят общие веса и отличаются только небольшими адаптер-модулями.
Сама модель от Яндекса, на больших бенчмарк-датасетах уверенно конкурирует с CatBoost и LightGBM.
репозиторий на GitHub
статья на arXiv
демо в colab

🐱 TabPFN
Модель на базе трансформера, предобученного на огромном количестве синтетических таблиц. Работает как готовое универсальное решение "из коробки": вы подаёте данные, а она сразу выдаёт предсказания без длительного дообучения. Отлично подходит для малых и средних наборов данных, где нет времени или ресурсов на настройку.
репозиторий на GitHub
официальная страничка решения
демо в colab
статьи: оригинальная и более свежая про улучшенную версию

🐱 SAINT
Transformer-архитектура с вниманием не только по признакам, но и между самими объектами. Дополнительно использует контрастивное предобучение, что помогает лучше выделять структуру данных и устойчиво обучаться.
Особенно хороша на датасетах, где важно учитывать сложные зависимости между объектами, а также для задач с большим числом категориальных признаков.
репозиторий на GitHub
статья на arXiv

Судя по бенчмаркам, эти архитектуры полезны на больших и сложных таблицах с множеством признаков/категорий, где классический бустинг может упираться в ресурсы. На простых или небольших датасетах легендарное Boost-трио пока надёжнее и проще в настройке🐈🐈🐈


Удачных экспериментов и высоких метрик!

#classic_ml@data_easy
#dl@data_easy

Читать полностью…

EasyData

Привет, друзья!
Сегодня на повестке Chatterbox Multilingual от Resemble AI: открытая, мультиязычная и эмоционально-настраиваемая text-to-speech модель.

🐦 Немного деталей:
- Поддержка 23 языков (и русский тоже).
- 0.5B параметров, в основе LLaMA-3, обучение на 500k часов разнопланового качественного аудио.
- Latency <200 мс, что отлично подходит для realtime-ассистентов.
- Лицензия MIT - а значит, можно использовать и кастомизировать без ограничений.
- И самое интересное - zero-shot voice cloning: модели хватает пары секунд речи, чтобы склонировать голос... А параметр exaggeration регулирует эмоции: от сухой монотонности до театральной драматичности.

🐦 Что по сравнению с конкурентами?
В "слепом" тестировании 63.75 % людей выбрали Chatterbox вместо ElevenLabs. Для Open-Source это очень серьёзная заявка! Полный отчёт доступен по ссылке.

🐦 Ссылки на все источники:
- репозиторий на GitHub
- ссылка на ДЕМО, где можно протестировать модель - оно же страничка на HF

Так что пара строк на Python, и у вас готов голос под подкасты, ассистентов, локализацию и другие проекты. Это новый виток в голосовом AI, который можно свободно использовать и кастомизировать. Надеюсь, что такие технологии будут служить только на пользу🤞


#полезный_ии@data_easy
#аудио@data_easy

Читать полностью…

EasyData

Привет, друзья!
Держите подборку интересных инструментов и фреймворков для работы с Git. Эти штуки помогут сделать управление репозиториями проще, удобнее и нагляднее 🤓

GitButler
Этот git-клиент от самого сооснователя GitHub. Главная фишка - виртуальные ветки: можно параллельно вести несколько задач в одном рабочем каталоге и удобно переносить изменения между ветками буквально нажатием кнопки в UI. Также есть удобное управление коммитами (undo, squash, reorder) и даже AI-генерация commit-месседжей. Отличный выбор, если устали от командной строки.
➡️ репозиторий на GitHub
➡️ документация

GitFriend
Это open-source ассистент для Git, который живёт прямо в браузере. Поможет подсказать нужную команду, объяснить ошибку, автоматически сгенерировать README или добавить эмодзи к коммитам для наглядной истории. Особенно полезен новичкам, но и опытным разработчикам облегчит рутину.
➡️ репозиторий на GitHub
➡️ документация

Git-Theta
Это расширение Git создано специально для ML-инженеров. Вместо того чтобы хранить модель как «чёрный ящик» в виде огромного бинарного файла в LFS, Git-Theta сохраняет только изменения весов и метаданные. Поэтому репозиторий не раздувается, а вы можете сравнивать и даже объединять разные версии моделей прямо через Git. Идеально для командной работы в Data Science.
➡️ репозиторий на GitHub
➡️ статья на Arxiv

Githru
А это инструмент для визуализации истории Git-репозитория. Он красиво и наглядно показывает, как развивался проект: ветки, кластеры коммитов, точки слияния. Помогает быстро разобраться в сложной истории изменений, особенно если вы подключились к большому проекту.
➡️ репозиторий на GitHub
➡️ статья на Arxiv

Всем слияний без конфликтов и коммитов без сюрпризов!

#mlops@data_easy

Читать полностью…

EasyData

Привет, друзья!
Наконец-то и до меня дошла очередь в waiting-листе на доступ к KIRO - новой AI-IDE от AWS. Выглядит многообещающе 😏

🫤 Что такое KIRO?
Это экспериментальная среда разработки со встроенным ИИ. Не просто «Copilot для автодополнения кода», а полноценный ассистент, который работает по принципу spec-driven development:
➡️ сначала формирует документ с требованиями и архитектурой,
➡️ разбивает всё на задачи,
➡️ и только потом вносит изменения в проект.
То есть KIRO сразу мыслит на уровне проекта целиком, а не отдельной функции или файла.

🫤 Модель под капотом - Claude Sonnet 4.0 (Anthropic), с fallback на Sonnet 3.7.

🫤 Первое впечатление от использования
Интерфейс максимально интуитивный, по сути - форк VS Code. Достаточно пару минут потыкать, и всё становится понятно: где папки, вкладки, чаты, терминал.

Для проверки открыла свой существующий готовый проект, на вопрос: «Что можно улучшить?» - KIRO внимательно изучил весь репозиторий и выдал 10+ довольно обоснованных рекомендаций - от архитектурных правок до мелких рефакторингов.
И, конечно, завершил всё традиционным: «Давай внесу эти изменения прямо в проект?»🙂
В отличие от обычных LLM-помощников, KIRO смотрит на кодовую базу комплексно, понимает контекст и модули, а не отвечает точечно на короткие вопросы.

🫤 Есть ли аналоги?
Да, но KIRO делает ставку на структурность. Ближе всего к нему:
- Cursor (форк VS Code с AI-интеграцией),
- Cline (open-source агент для VS Code, бесплатный),
- Aider (CLI-агент для работы с кодом через git, тоже open-source).

Хоть KIRO пока и в превью, но это большой шаг в сторону новых IDE, где ассистент не просто дополняет код, а реально берёт на себя роль соразработчика.

‼️Кто ещё не записался - можно добавиться в waiting-list тут, мне доступ пришел ровно через месяц.

#полезный_ии@data_easy

Читать полностью…

EasyData

Привет, друзья!
В продолжение к предыдущему посту: на GitHub докинули ноутбуки для файнтюна gpt-oss с LoRA и запуска gpt-oss-20B в Colab (вторая ссылка может не открыться на самом GitHub, попробуйте скачать ноутбук).

Обещают, что последнее запустится даже в бесплатном Colab… но нет - 15 Гб видеопамяти не хватает ☹️ Пробуйте на Kaggle, там дают 16 ГБ (кстати, там ещё и сессия до 12 часов:)).

🤔 И ещё одна интересная деталь...
Если заглянуть в код ноутбука run-colab, можно заметить строчку с установкой triton. Это не просто библиотека, а важная часть ускорения современных моделей: именно Triton лежит в основе многих оптимизаций PyTorch 2.x и кастомных операций в LLM, позволяя получать скорость уровня CUDA, но писать код почти как на Python.

🤔 Поподробнее про Triton...
➡️ Это язык и компилятор для написания собственных GPU-ядер, но с синтаксисом, который больше напоминает Python, чем C++ / CUDA. Он избавляет от рутины вроде ручного управления памятью и потоками - достаточно понимать принципы работы GPU и знать нужные команды.
➡️ Активно используется в PyTorch (например, в torch.compile).
➡️ Позволяет писать свои высокопроизводительные матричные умножения, операции внимания, редукции и вообще всё, что можно распараллелить на GPU.

🤔 В чём плюсы тритона?
➡️ Простота: код выглядит дружелюбно, но под капотом превращается в оптимизированный PTX для NVIDIA GPU (к слову, пока официально есть поддержка только NVIDIA GPU; для других архитектур либо отсутствует, либо ещё на экспериментальном уровне).
➡️ Автоматическая оптимизация: Triton сам раскладывает данные по блокам, чтобы GPU был загружен на максимум.
➡️ Производительность: в некоторых кастомных сценариях Triton-ядра догоняют и даже обгоняют cuBLAS/cuDNN.

🔗 Если хотите больше примеров, вот несколько полезных ссылок:
➡️ Документация
➡️ Репозиторий на GitHub
➡️ И отличная вводная статья от OpenAI с примерами кода

#dl@data_easy

Читать полностью…

EasyData

Привет, друзья!
Вы не раз спрашивали в комментариях про книги по Deep Learning, и, как оказалось, про это у нас ещё не было поста… Исправляем эту оплошность! Сохраняйте подборку - будет полезно как новичкам, так и тем, кто хочет копнуть глубже ❤️

🔥 Deep Learning - Ian Goodfellow, Yoshua Bengio, Aaron Courville
Библия по глубокому обучению: от основ нейросетей до продвинутых тем. Отлично подойдёт тем, кто хочет получить фундаментальное и строгое понимание.
Источники: версия на русском.

🔥 Neural Networks and Deep Learning - Michael Nielsen
Простой и интуитивный вход в мир нейросетей, материал относительно небольшой. Много визуализаций, понятные объяснения, минимум формальностей - идеально для первого знакомства.
Источники: оригинал, перевод на русский.

🔥 Dive into Deep Learning (D2L) - Aston Zhang, Zachary Lipton, Mu Li, Alexander Smola
Книга-учебник с интерактивными ноутбуками: теорию можно сразу пробовать в коде. Построена на PyTorch и MXNet, активно обновляется. Хороший баланс между практикой и объяснениями.
Источники: оригинал, перевод на русский.

🔥 Deep Learning for Coders with fastai and PyTorch - Jeremy Howard, Sylvain Gugger
Книга для тех, кто хочет быстро перейти к решению реальных задач. Много примеров, best practices и объяснений - особенно подойдёт тем, кто уже умеет кодить и хочет перейти к серьёзным DL-проектам.
Источники: оригинал на английском.

Если вы только начинаете - начните с Nielsen или D2L. Если хотите системности - читайте Goodfellow. А если тянет в продвинутую практику - берите последнее из списка

#dl@data_easy

Читать полностью…

EasyData

Привет, друзья!
Совпадение или нет, но последняя неделя посвящена китайским LLM 🫢 На этот раз новость ещё более актуальная для программистов

Сегодня вышел Qwen3-Coder - и судя по отчётам, это один из самых мощных open-source кодеров на текущий момент. Новая модель от Alibaba - серьёзный конкурент для DeepSeek-Coder, Claude-Sonnet, GPT-4 и даже недавно вышедшей Kimi-K2 в задачах генерации и понимания кода. Ещё из плюсов: всё открыто и бесплатно😏

🤖 Что такое Qwen3-Coder?
Это серия LLM, заточенных именно под программирование. Они обучены на коде, документации, инженерных задачах и issue-тредах. В отличие от general-purpose LLM, Qwen3-Coder понимает разработку по-настоящему - от Python и C++ до frontend-а и devops-скриптов.

🤖 У самой эффективной модели в линейке:
- 480 млрд параметров, из которых активных 35 млрд
- контекст до 256k токенов напрямую и до 1 млн с помощью экстраполяций🤯
- обучена на свежем коде и диалогах разработчиков
- может читать, писать и рефакторить большие проекты, а не просто отвечать на мелкие вопросы

В демо модель решает наши стандартные задачи: распознаёт и комментирует код, предлагает правки, пишет unit-тесты, пайплайны, CI/CD-сценарии, отвечает как StackOverflow...

🤖 Ссылки:
- Репозиторий на GitHub
- Официальный блог-пост с метриками, параметрами и инструкциями по запуску (можно легко всё подключить через терминал)
- Протестировать модель ТУТ

PS: тем временем почти неделю жду, когда пришлют демо-доступ к KIRO 👊

#полезный_ии@data_easy

Читать полностью…

EasyData

Привет, друзья!
Совместно с коллегами из МФТИ выпустили статью на Хабре: как линал помогает заглянуть внутрь ML-моделей и понять, как они работают ♾️

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

Никаких формальных доказательств и заумных выкладок. Только:
💙 наглядные примеры,
💙 визуализации,
💙 реальные кейсы с понятными объяснениями.

#математика@data_easy

Читать полностью…

EasyData

Привет, друзья!

Сегодня поговорим про Numba - инструмент, который превращает обычный Python-код в "почти C" по скорости🏃‍♂️

Numba - это JIT-компилятор (Just-In-Time) для Python. Если вкратце, то он анализирует функции и компилирует их в машинный код прямо во время исполнения. То есть, вместо интерпретируемого Python код исполняется как скомпилированный.

Воспользоваться возможностями Numba крайне легко - нужно просто добавить декоратор @njit к функции, и всё! 🧑‍💻


@njit
def sigmoid_numba(x):
return 1 / (1 + np.exp(-x))


Но пара нюансов всё же есть:
➡️ Во-первых, не все операции могут быть ускорены таким способом. Общий рецепт таков: "чем проще и численно интенсивнее функция, тем лучше". Вот несколько типичных примеров, которые хороши для Numba:
1. численные циклы (циклы for, while)
2. операции с массивами numpy
3. алгоритмы оптимизации, матричные вычисления
4. генерация чисел и математические функции (sin, exp, sqrt, и т.д.)
5. фильтрация, агрегация и другие различные манипуляции над массивами
6. простые симуляции (например, метод Монте-Карло)

➡️ А во-вторых, при первом запуске функция с Numba может работать даже медленнее обычной Python-версии🙂 Всё потому, что в первый раз Numba не просто выполняет код, а сначала компилирует его в машинный код - и это занимает время. Но уже со второго вызова скомпилированный вариант готов и работает в разы быстрее, как настоящий нативный код.

А насколько быстрым получается код с добавлением Numba - смотрите на скринах:) Замеры проведены на втором запуске😉

Документация библиотеки +:
➡️ с список Python-операций, которые могут быть ускорены
➡️ с аналогичный список для Numpy-функций

Хорошей недели и гармоничных распределений! ☀️

#python@data_easy

Читать полностью…

EasyData

Всем привет!
Когда в последний раз вы удивлялись Python? Держите несколько коварных вопросов на внимательность и знание тонкостей языка😏

🐍 изменяемые аргументы по умолчанию (1 и 2),
🐍 dict с ключами разного типа (3),
🐍 логика работы логических операторов (4), с and, кстати, всё работает по тому же принципу,
🐍 is и магия чисел (5, 6).

Листайте условия в карточках, в конце недели подведём итоги👀

#python@data_easy

Читать полностью…

EasyData

Привет, друзья!
Во многих задачах - от классификации и кластеризации до поиска похожих объектов и генерации рекомендаций - важно уметь эффективно находить ближайшие векторы в высокоразмерном пространстве. Но как только число векторов превышает несколько тысяч, простые методы из sklearn и numpy начинают работать непозволительно медленно🐌 При масштабах же в миллионы объектов стоит задуматься уже не только про быстроту, но и про оптимизацию, балансируя между точностью, скоростью и потреблением памяти.

В таких случаях приходят на помощь библиотеки для быстрого KNN в высокоразмерных пространствах. Самая известная, пожалуй, Faiss от Facebook AI Research. Вот её главные преимущества:

🔠 Подкапотная реализация на C++ с SIMD-оптимизациями и продуманным управлением памятью в Python-обёртке. А ещё это значит, что Faiss не блокируется GIL'ом и отлично масштабируется по потокам: можно параллелить поиск через joblib.Parallel или ThreadPoolExecutor.
🔠 Поддержка GPU, что также даёт прирост скорости в десятки раз.
🔠 Гибкость индексов: от точного поиска (Flat) до приближённых структур с квантованием и кластеризацией.

Рассмотрим основные типы индексов:

🔠 IndexFlat - базовая реализация, которая хранит все векторы в RAM и выполняет точный линейный поиск. Работает быстро на малых объемах (<100K векторов), также идеален для отладки или в случаях, если поиск каждый раз нужно осуществлять в разных ограниченных подпространствах векторов (тогда просто запускаете с тем же Parallel:)).
🔠 IndexIVF (Inverted File Index) - предварительно перед поиском он кластеризует всё пространство векторов (например, с помощью k-means).
При поиске сначала выбираются N ближайших кластеров, а затем производится поиск заданной глубины K внутри них.
На моей практике, даже с учётом времени на обучение индекса, IVF ускорил процесс поиска в ~8 раз по сравнению с Flat+Parallel, при этом точность результата по метрикам проявилась только в 5-м знаке после запятой (ещё и в бОльшую сторону! 😎)
Но есть уже озвученное "НО" - такой индекс требует предварительного обучения, и на это нужно время. Поэтому имеет смысл его использовать, если запросы каждый раз делаются из одинакового и фиксированного пространства.
Если захотите воспользоваться IVF, то упомянутые N и K лучше брать как √d и 2–4*(размер топа, который вы ищете) соответственно, где d - количество векторов в базе для поиска.
🔠 IndexIVFPQ (Product Quantization) добавляет к IVF еще одно ускорение - сжимает векторы до компактного кода (например, 8 байт вместо 128 float32). Работает ещё быстрее и экономит память при минимуме потерь в точности. Имеет смысл посмотреть в сторону этого подхода, если у вас порядка миллиарда векторов.
🔠HNSW-семейство индексов (Hierarchical Navigable Small World) - индексы на основе графов малого мира, где каждый вектор представляется как вершина, связанная с соседями в многослойной структуре. Поиск происходит за счёт навигации по графу: сначала на грубом уровне, затем всё точнее.
Такие индексы не требуют предварительного обучения и хорошо подходят для динамических баз, где данные часто добавляются на лету. Отличаются высокой точностью даже при небольшой глубине поиска, но потребляют больше памяти и не поддерживаются на GPU.

Полезные ссылки:
🔠 Официальный репозиторий Faiss.
Там же ссылка на quick start и базу jupyter-ноутбуков с примерами кода на Python
🔠 Ещё пара хороших туториалов с примерами кода тут и тут
⚠️Если решите установить версию с поддержкой GPU, лучше использовать эту

Лёгкой и солнечной недели! ☀️

#mlops@data_easy

Читать полностью…

EasyData

Ну и раз уж речь зашла про математическую литературу, держите в дополнение к статистике ещё одно любопытное издание, посвящённое теории вероятности - книгу Сергея Самойленко "Вероятности и неприятности"🫴

Концентрация математики и формул повыше, чем у В. Савельева, но жизненные примеры и ассоциации не менее интересны!😊

#математика@data_easy

Читать полностью…

EasyData

Привет, друзья!
В DS-задачах часто встречаются категориальные признаки с очень высокой кардинальностью (в которых много уникальных значений): ID, URL, слова в тексте, теги и прочее. Прямое one-hot кодирование таких признаков, скорее всего, приведёт к огромным разреженным матрицам и быстро "взорвёт" размерность🤯

Но прежде чем объединять редкие категории в "другое" или просто отбрасывать их, стоит рассмотреть hashing trick - простой и масштабируемый способ кодирования категориальных признаков.

В чём идея алгоритма?

➡️ берём строковое значение (например, user_id),
➡️ пропускаем его через хэш-функцию,
➡️ берём остаток по модулю D - заранее заданного размера выходного вектора,
➡️ получаем индекс, в который кладём 1 (или другое значение, если это count/frequency).

🧐Кажется, что похоже на one-hot - но вот в чём ключевое отличие: мы не храним словарь всех уникальных значений и сами выбираем размерность пространства D.

🤷‍♂️ Из минусов: при таком подходе возможны коллизии - два разных значения могут попасть в одну и ту же ячейку. Это происходит случайно, и по смыслу такие значения нельзя считать похожими. Но коллизии - это осознанная плата за компактность🤷‍♀️

👍 Из плюсов: метод работает стабильно и хорошо масштабируется. Даже если вдруг появляется новая категория, она автоматически попадает в какую-либо ячейку без пересоздания маппинга. Это делает hashing trick особенно удобным в стриминге, real-time inference и онлайн-обучении. Кроме того, можно кодировать "перекрестные" (парные, тройные и т.п.) категориальные фичи.

💻 В sklearn уже есть готовая реализация этого приёма:


from sklearn.feature_extraction import FeatureHasher

# хэшер на 10 выходных фичей
hasher = FeatureHasher(n_features=10, input_type='string')

# пример категориальных данных
data = [
['user_1', 'item_42'],
['user_2', 'item_17'],
]

# собственно преобразование
X = hasher.transform(data)


Hashing trick - не волшебная кнопка, но отличный инструмент в арсенале. Особенно там, где важны скорость, масштабируемость и минимальное потребление памяти.

Успехов в оптимизации размерности!🌹

#classic_ml@data_easy

Читать полностью…

EasyData

Привет, друзья!
Если вам нравится автоматическая аналитика по типу YData Profiling, то, возможно, придётся по душе и Evidently!
Эта библиотека активно развивается и содержит множество удобных обёрток для мониторинга качества данных в проде.

💡Вот что она умеет:
- Анализировать качество данных: пропуски, типы данных, распределения... похоже на возможности YData.
- Отслеживать дрифт признаков и таргета: сравнивает две выборки по ключевым статистическим характеристикам (например, train и prod датасеты).
- Мониторить метрики моделей во времени: можно встроить в пайплайны (Airflow, Prefect, CI/CD), чтобы отслеживать изменения в качестве.
- Оценивать входы и выходы LLM: есть специальные отчёты для анализа prompt-response (длина, токсичность, повторяемость и т.п.)
- Работать локально или в облаке: можно использовать просто в ноутбуке или развернуть Evidently UI для команды.
- И самое главное:) Она создаёт интерактивные HTML-отчёты за пару строк кода.

💡Полезные материалы:
- официальная документация (сразу ссылка на quickstart)
- EvidentlyAI/videos">youtube-канал с видео-туториалами
- репозиторий библиотеки на github


Пусть дрифт остаётся на треке, а не в проде 🚙

#аналитика@data_easy
#mlops@data_easy

Читать полностью…

EasyData

Всем привет!
Сегодняшний пост для любителей японской культуры и тех, кто хочет нескучным способом освежить в памяти важные для ML основы математики 🤩

Держите подборку "математических" манг от Сина Такахаси, который решил, что объяснять сложные вещи через сюжеты и картинки - это не шутка, а мощный образовательный приём. Во вложениях следующие его работы:
🤩 Линейная алгебра
🤩 Факторный анализ
🤩 Регрессионный анализ
🤩 Статистика

Это далеко не весь список, есть труды по другим разделам высшей математики, физике, базам данных (к сожалению, не всё ещё переведено на русский).

Приятного просмотра! Есть кто уже читал - как вам?🌚

#математика@data_easy

Читать полностью…

EasyData

Привет, друзья!
Поздравляю с нашим профессиональным праздников - 256-м днём в году!
Пока вайбкодинг ещё не вытеснил программеров в Data Science, и пока Python играет одну из ключевых ролей, давайте освежим важные особенности языка, которые часто спрашивают даже у сеньоров на собеседованиях ✍️

1. Python со статической или динамической типизацией?

Напомним разновидности:

- Статическая типизация (C++, Java): тип переменной задаётся заранее и проверяется до запуска программы.
- Динамическая типизация (Python, JavaScript): тип переменной определяется во время выполнения программы - а именно, в момент присваивания. В Python это происходит при исполнении соответствующей строки кода (ведь он интерпретируемый), поэтому одна и та же переменная может в разные моменты хранить объекты разных типов.


2. Разница между генераторами и итераторами?
Вспомним, что итерируемый объект - это то, из чего можно последовательно доставать элементы (список, множество, строка).

Итератор - это «механизм перебора»: объект, который умеет по одному выдавать элементы итерируемого объекта. Для этого у него есть методы iter (возвращает сам итератор) и next возвращает следующий элемент)

Генератор — это удобный способ создать итератор. Его пишут через yield или в виде генераторного выражения. Главное отличие: генератор сам запоминает своё состояние между вызовами и продолжает работу с того места, где остановился.


3. В чем разница между yield и return?
return завершает функцию и возвращает одно значение.

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


4. А что такое декораторы и зачем они нужны?
Декоратор - это вызываемый объект (функция или класс с call), который принимает другую функцию или класс и возвращает «обёрнутую» версию. То есть позволяет добавлять новое поведение к функциям/классам без изменения их кода (примеры: логирование, кеширование, измерение времени работы фунции).


5. Какие бывают пространства имен в Python?
Есть четыре уровня пространств имён:
- Local (локальное внутри функции)
- Enclosing (это локальное пространство переменных внешней функции, к которому может обращаться внутренняя функция, если она определена внутри этой внешней)
- Global (глобальное внутри модуля)
- Built-in (встроенные объекты Python).

Запоминается по правилу LEGB.


6. Как передаются аргументы в функции - по значениям или по ссылке?
В Python аргументы передаются по ссылке на объект, но сами ссылки копируются. Если объект изменяемый (список, словарь) - изменения видны и снаружи функции. Если неизменяемый (int, str, tuple) - создаётся новый объект.


7. Как происходит управление памятью в Python?
Python управляет памятью автоматически: у каждого объекта есть счётчик ссылок - когда на объект больше нет активных ссылок, память освобождается сразу. Для циклических ссылок (когда объекты ссылаются друг на друга) работает отдельный garbage collector, который периодически запускается в фоне.


8. Что такое GIL и разрешена ли многопоточность в Python?
GIL (Global Interpreter Lock) - это глобальная блокировка интерпретатора, которая не позволяет одновременно выполнять код в нескольких потоках. Поэтому для CPU-ограниченных задач многопоточность в Python не даёт прироста. Но она хорошо работает для задач ввода-вывода (I/O) и для вычислений внутри библиотек, реализованных на C/C++ (NumPy или Faiss), которые обходят GIL.


9. Что такое дескриптор?
Дескриптор - это объект с методами set/get/delete который управляет доступом к атрибуту другого класса. На дескрипторах реализованы property, методы класса, статические методы.


10. Как работает менеджер контекста with под капотом?
Менеджер контекста - это объект, у которого определены методы enter и exit. При входе в блок with вызывается enter, при выходе - exit, что гарантирует корректное освобождение ресурсов (например, закрытие файла).


Кто все и так знал - ставьте 🐳

#python@data_easy

Читать полностью…

EasyData

Привет, друзья!
В продолжение подборки вводных курсов по ml держите коллекцию свежих бесплатных пособий и материалов по продвинутому DL и LLM✨
Тут и академические курсы, и практические репозитории, и настоящие «инженерные экскурсии» в мир SOTA-моделей 🤓

📚 Курс от MIT «Introduction to Deep Learning»
Самый полный и актуальный ввод в deep learning на 2025 год.
➡️ Лекции от основ до LLM и генеративного ИИ.
➡️ Практика из трёх крупных проектов: CV, LLM и музыка.
➡️ Всё запускается в Colab, можно не беспокоиться о ресурсах.
🔗 Сайт курса
🔗 Код и задания

📚Hugging Face «UltraScale LLM Playbook»
Руководство, как обучать LLM-модели на триллионы параметров.
➡️ Разбирается весь стек технологий: Tensor/Pipeline/Data Parallelism.
➡️ Оптимизация памяти и советы по железу.
➡️ Взгляд изнутри на инженерные задачи уровня SOTA.
🔗 Playbook на Hugging Face

📚 GitHub-репозиторий «LLM from scratch»
Это сокровище уже собрало почти 70k звезд!
➡️ Реализация GPT и attention с нуля.
➡️ Основы CUDA и PyTorch, пошаговые видео.
➡️ Предобучение, файнтюн, работа с текстовыми данными.
🔗 GitHub-репозиторий

📚LLM Agents Learning (Fall 2024)
Курс о том, как работают и строятся LLM-агенты: от базовых концепций до сложных пайплайнов. Отличный старт для тех, кто хочет разобраться, что «под капотом» у современных чат-ботов.
🔗 Сайт курса

📚 LangChain Academy «Intro to LangGraph»
Бесплатный курс от создателей LangChain.
Покрывает основы LangGraph: библиотеки для построения графов агентов и оркестрации LLM.
🔗 Сайт курса


Успехов в наступающем учебном году!😄🍀

#nlp@data_easy

Читать полностью…

EasyData

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

📱 D >< Vision - митап, посвященный CV от МТС AI.
Когда: 21 августа офлайн в Москве и онлайн.
Ссылка на регистрацию: тык.

👍 RecSys Meetup WB - встреча про рекомендательные системы и ML в e-commerce.
Когда: 28 августа офлайн в Москве и онлайн.
Ссылка на регистрацию: тык.

⚛️ MoscowAI #3 - серия встреч про нейросети, их применение и практические кейсы.
Когда: 3 сентября офлайн в Москве (возможно, будет и онлайн).
Ссылка на регистрацию: тык.

📦 ECUP от Ozon - турнир + конференция для ML-инженеров и дата-сайентистов с практическими кейсами от индустрии.
Когда: 13 сентября офлайн в Москве и онлайн.
Ссылка на регистрацию: тык.

📱 Data Driven - конференция о работе с данными для дата-саентистов и аналитиков.
Когда: 20 сентября офлайн в Москве и онлайн.
Ссылка на регистрацию: тык.

⚛️ DCCN - научная конференция под эгидой IEEE по вычислительным системам, сетям и ML-подходам.
Когда: 22–26 сентября офлайн в Москве.
Ссылка на регистрацию: тык.

📱 Practical ML Conf - практическая конференция для ML-инженеров и исследователей на самые разные темы.
Когда: 27 сентября офлайн в Москве.
Ссылка на регистрацию: тык.

🐍 А для новичков - завтра я участвую в открытом эфире "Первые-шаги-дата-сайентиста", где разберем классическую задачу прогнозирования стоимости недвижимости.
Когда: 21 августа 19:00 (мск) онлайн.
Ссылка на регистрацию: тык.

Входновения и полезных инсайтов!😎

#полезный_ии@data_easy

Читать полностью…

EasyData

Про чашку не шутка…

#мем@data_easy

Читать полностью…

EasyData

Привет, друзья!
Современные реалии таковы - новости про LLM заполонили все ленты. Но сегодня речь про кое-что особенное: OpenAI вернулась к своим корням и анонсировала GPT‑OSS - первую модель с открытыми весами после GPT‑2.

🐈А поподробнее?
🔜Доступны две версии: gpt‑oss‑120B (117 B параметров) и gpt‑oss‑20B (21 B параметров).
🔜Лицензия Apache 2.0 - а значит, можно свободно использовать и дорабатывать без ограничений.
🔜Это открытые веса, а не просто куча исходников - то есть можно запускать локально, адаптировать под себя и никак не связываться с API OpenAI.
🔜Производительность впечатляет: gpt‑oss‑120B сравнима с o4‑mini и даже превосходит её в некоторых задачах (смотрите на скрине).

😏 Это крутой поворот: OpenAI впервые с 2019 года возвращается в open‑weight лигу, а модели уже можно скачать с Hugging Face и запустить.

🐈Технические моменты:
🔜Модель использует Mixture-of-Experts (MoE) архитектуру: в расширенной версии из ~117 B параметров активны только ~5.1 B на токен, что делает её эффективной для инференса при больших нагрузках.
🔜Поддерживает chain-of-thought reasoning и function-calling, подходит для сложных агентных сценариев, интеллектуальных пайплайнов и использования внутри своей инфраструктуры.

🔗Самые важные ссылки:
🔜20B на Hugging Face
🔜120B на Hugging Face
🔜Официальный пост OpenAI с подробностями архитектуры и бенчмарками

Продолжаем следить за развитием событий 👀

#полезный_ии@data_easy
#nlp@data_easy

Читать полностью…

EasyData

Привет, друзья!
В DS-задачах часто важно не только получить точное предсказание модели, но и понять, как именно каждый признак влияет на результат. А простые встроенные методы оценки feature importance часто показывают лишь общее влияние, не раскрывая деталей и взаимодействий между признаками 🤷‍♀️

Зато есть мощная библиотека SHAP - она позволяет объяснять предсказания любой классической модели, давая детальные и справедливые оценки вклада каждого признака в конкретное предсказание. SHAP-значения основаны на теории игр и помогают понять не только важность, но и направление влияния признаков (подробнее про них тут и в colab😉).

В карточках листайте примеры основных возможностей SHAP, а в уже упомянутом ноутбуке - какими командами всё это построить на питоне 🐍

🔗 Ещё полезные ссылки для изучения SHAP:
- Официальная документация
- Репозиторий на GitHub
- Статья с обзором и более глубокой теорией

Откройте черный ящик моделей 😁

#classic_ml@data_easy

Читать полностью…

EasyData

Привет, друзья!
На небосклоне LLM новая восходящая китайская звезда: модель Kimi-K2 от Moonshot AI. Пока OpenAI и Google заняты гонкой за универсальными AGI (Artificial general intelligence), команда из Пекина делает ставку на производительность внутри диалога - и судя по всему, у них это неплохо получается!

🫤 Что такое Kimi-K2?
Kimi-K2 — это улучшенная LLM, похожая на DeepSeek-v3. Но Kimi-K2 - это не просто "следующая улучшенная версия", а модель, натренированная с прицелом на самостоятельное решение комплексных, многошаговых задач в реальных сценариях: она уточняет детали у пользователя, планирует шаги, кодит, анализирует и доводит дело до конца.

В официальном посте от разработчиков можно увидеть, как Kimi-K2 решает многосоставные задачи полностью и самостоятельно:
Собирает академическую родословную Stanford NLP: парсит данные, исследует карьеры выпускников, анализирует метрики влияния и строит интерактивный 3D-граф.
Планирует поездку на концерт: подбирает билеты, жильё, транспорт, сверяется с календарём и формирует отчёт.
Анализирует зарплаты и удалёнку: проводит статистический анализ с interaction effects, визуализациями и выводами.
Пишет веб-версию Minecraft: от архитектуры до hand-drawn текстур и генерации мира.
...
Главное - модель сама уточняет, планирует, кодит, анализирует и визуализирует, превращаясь из LLM в полноценного многошагового агента.

🫤 А технические детали?
У модели 1 трлн параметров, из которых 32 млрд активных, контекстное окно 128 тыс. токенов, веса можно скачать на Hugging Face😏
Насчёт обучения - pretrain + align (SFT + RLHF) + оптимизация плавности в диалоге.
И ключевой фокус на улучшение именно диалогового поведения, а не просто BLEU или accuracy.

🫤 Что это значит для нас?
Kimi-K2 - это пример LLM, фокусированной не на абстрактном интеллекте, а на конкретном опыте пользователя.
И это мощный тренд! Возможно, впереди нас ждёт эра не универсальных AGI, а практичных LLM-компаньонов, ориентированных на задачи конкретных профессий 😏

🫤 Ещё раз все ссылки:
🔗 репозиторий на GitHub
🔗 официальная статья с примерами, бенчмарками и другими деталями
🔗 веса на Hugging Face
🔗 НУ И САМОЕ ГЛАВНОЕ - попробовать модель можно ТУТ (главное сразу включить слева снизу Language=English ну или сделать автоперевод:)) На русском модель отлично отвечает!

Кто уже протестировал - как впечатления?

#полезный_ии@data_easy
#nlp@data_easy

Читать полностью…

EasyData

Привет, друзья!
Держите небольшую, но максимально эффективную подборку ресурсов для подготовки к собеседованиям по Data Science: практические задачи с ML-спецификой, вопросы от FAANG и полезные чек-листы👇

🔠 StrataScratch
Платформа с практическими задачами на SQL, Pandas, Polars и PySpark. Вопросы собраны из интервью реальных компаний (Amazon, Google, Lyft и др.). Можно фильтровать по уровню сложности и компании, а код исполняется прямо в браузере. Задачи есть как на выборку данных, так и на аналитическое мышление, манипуляции с датами, оконные функции и многое-многое другое!

🔠 DataLemur
Этот сайт для отработки чисто SQL-навыков. Все задачи делятся по темам (JOIN, агрегаты, оконные функции...), по сложности и по компаниям. Встроенный SQL-редактор позволяет сразу проверять решение. Есть подсказки, подробные разборы, статистика по сложности и рейтинг задач. И в отличие от sql-ex.ru с гораздо более современным интерфейсом и интересными задачами😁

🔠 Extremesarova/ds_resources (github)
Большой список ресурсов по всем темам для подготовки: Python, статистика, машинное обучение, SQL, A/B‑тесты, product sense, system design. Есть ссылки на видео, статьи, тренажёры и шаблоны. Удобно использовать как базу знаний или дорожную карту перед собеседованием.

🔠 alexeygrigorev/data-science-interviews (github)
Ещё один полезный чек-лист: краткая и чёткая структура по темам, которые часто встречаются на интервью. Плюс есть ссылки на полезные книги, туториалы и примеры вопросов. Особенно приятно, что есть разделы про системный дизайн и поведенческие интервью именно для DS.

А какие ресурсы нравятся вам? Может, есть любимые тренажёры или подборки, которые прокачали вас перед интервью? Поделитесь в комментариях😊

Успешной подготовки и уверенности на собесах! 💪

#карьера@data_easy

Читать полностью…

EasyData

Привет, друзья!
Пришло время подводить итоги прошлых задачек для разминки по Python. Ниже разбор правильных ответов⚠️

1.
print(magic_func(25)) # [50]
print(magic_func(30)) # [50, 55]

Причина в том, что аргумент lst=[] - изменяемый объект. Он сохраняется между вызовами функции. Поэтому при втором вызове к списку добавляется второй элемент.

2.
print(extend_list(1)) # [1]
print(extend_list(2)) # [1, 2]
print(extend_list(3, [])) # [3]
print(extend_list(4)) # [1, 2, 4]

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

3.
d = {1: 1, 1.0: 1.0, '1': '1', True: True}
print(d) # {1: True, '1': '1'}

Ключи 1, 1.0 и True считаются равными в словаре, потому что 1 == 1.0 == True (можете проверить это отдельно). Поэтому остаётся последний по порядку ключ из этой группы (True), и он перезаписывает предыдущие.

4.
print(tricky_or([], 'fallback')) # 'fallback'
print(tricky_or({}, 0)) # 0
print(tricky_or('', None)) # None

Оператор or возвращает первое "истинное" значение или последнее, если все ложные. [], {}, '' считаются ложными, 'fallback' - истинное, 0 и None - тоже ложные, но 0 возвращается, потому что он второй аргумент. По аналогии можете подумать, как ведет себя в подобных ситуациях and.

5.
print(x == y) # True
print(x is y) # False

== сравнивает значения, по этому принципу списки равны. is сравнивает идентичность объектов - а у нас два разных списка в памяти, находящихся по разным адресам.

6.
a = 256
b = 256
print(a is b) # True

a = 257
b = 257
print(a is b) # False

Числа от -5 до 256 кэшируются в Python, и переменные с такими значениями могут ссылаться на один и тот же объект. Значения вне этого диапазона не кэшируются, поэтому a is b даёт False.

Кто верно догадался во всех задачах - ставьте 😇

Успехов в диалогах с питоном!🐍

#python@data_easy

Читать полностью…

EasyData

#мем@data_easy

Читать полностью…

EasyData

Всем отличных выходных!
#мем@data_easy

Читать полностью…

EasyData

Привет, друзья!
Спешу поделиться и похвастаться тем, как выглядит автограф Владимира Савельева - автора знаменитой книги "Статистика и котики"😍 (кстати, кто ещё не читал - в этом посте можно найти её pdf-версию!)
Такой чудесный и неожиданный подарок прислали коллеги из Отраслевой ИТ-Школы Росатома, с которыми мы вместе вели курс - за что им огромное спасибо☺️

Читать полностью…

EasyData

#мем@data_easy

Читать полностью…

EasyData

Всех с серединой недели!🐸

#мем@data_easy

Читать полностью…

EasyData

Привет, друзья!
Не так давно в LinkedIn завирусилась очень полезная методичка по Apache Kafka - не смогла пройти мимо😁

Пару слов что такое Kafka и зачем она нужна...

Это распределённая платформа потоковой передачи сообщений, которая позволяет:
1️⃣ Собирать данные из разных источников (логов, БД, API...) в реальном времени.
2️⃣ Сохранять события в виде сообщений, которые можно читать многократно, разными потребителями и спустя время (в отличие от RabbitMQ).
3️⃣ Подключать обработчики (консьюмеры), которые анализируют или трансформируют поток данных - например, для аналитики, мониторинга или ETL.
4️⃣Организовывать обмен сообщениями между микросервисами так, чтобы они не зависели напрямую друг от друга - каждый подписывается на нужный поток и обрабатывает события независимо.

Ещё ссылки...
✴️ Официальная документация Kafka
✴️ Интерактивный учебник от Confluent
✴️ Документация confluent-kafka (обёртка для работы на Python)
✴️ И во вложении та самая методичка:)

Солнечной недели!🔆

#mlops@data_easy

Читать полностью…
Подписаться на канал