Интересное что-то
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 Baldini • Nikita Boyandin (Nikita Boyandin)
Пособесимся?)🥵

Пока ваш любимый матрос галер пытается понять как из 24 часов сделать 40, чтобы успеть все сделать, ему предложили пособесится в AI стартап эксортницей в Дубайск part-time. На самом деле, middle ml разраб позиция с 2 годами опыта.

Условия 🍟
Полный remote в Дубай или Грузию, команда из 40 человек, делают что-то по безопасности с помощью ИИ. По зп-5к вечно зеленых, ну и какие то опционы при очень хорошей работе(блиииииин, без печенек в офисе).

Задачи на собесе🪥
Поскольку интервью было вводное, ни кодинга, ни MLSD, не было. Первый вопрос был классическим: Чем LSTM отличается от трансформера? Я ответил просто - механизмом внимания и немного добавил архитектуры. В фото более полноценный ответ.

А вот вторая задача оказалась нетривиальной: требовалось классифицировать тип приложения по зашифрованному трафику, проходящему через VPN. Сначала я рассматривал два подхода — либо извлекать признаки и обучать классические модели машинного обучения, либо пытаться решать задачу end-to-end с помощью трансформеров. На практике оказалось, что решение проще: достаточно было применить нейронную сеть и позволить ей автоматически выявлять зависимости в представлении трафика — в результате модель на сыром или слегка предобработанном представлении трафика успешно выделяла информативные паттерны для классификации.

Что думаю?🤨
Очень интересно понимать свою вилку в стартапах и что я могу получить в валюте, так что если вам зайдет такой формат и будет много реакций и комментов, то я расчехлю свой OPEN_TO_WORK, а пока буду оптимизировать лишний час между работой, учебой и туалетом💗
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ML Baldini • Nikita Boyandin (Nikita Boyandin)
Материалы к стажкам по машинному обучению😀

В этом посте я попытался собрать все учебные материалы, по которым я когда либо учился и которые как-то мне помогли в получении работы и опыта.💪

Статистика
Курсы Карпова на stepik
Часть1, Часть2
Книжка "Статистика и котики"

Основы Python
"Поколение Python": курс для начинающих
Хендбук по Python от Яндекса
"Поколение Python": курс для продвинутых
"Поколение Python": ООП (нужен далее для глубокого обучения)

Библиотеки по Python
Курс kaggle по Pandas
Курс по matplotlib и seaborn

Основные алгоритмы по машинному обучению
Учебник по машинному обучению
Intro to Machine Learning
Intermediate Machine Learning

Машинное обучение(полноценные курсы)
Deep Learning School
Введение в соревновательный Data Science
Курс вышки по мл

SQL
SQLbolt
Курс sql на степик
Sql academy
Курс Карпова по sql

Алгоритмы
Основы алгоритмов
Курс ИТМО по алгоритмам на codeforces
Алгоритмы и структуры данных от ИТМО

A/B и uplift тестирование
Курс по a/b тестированию от вышки
Курс по uplift-моделированию

MLOps (для стажки на ml-engineer могут спросить)

Окончательная подготовка перед собеседованием
Конспекты по каждому модулю от karpov.courses

Надеюсь на вашу поддержку и очень верю, что этот пост для вас будет очень полезен💗
Please open Telegram to view this post
VIEW IN TELEGRAM
ByteRover 2.0: Git для памяти ИИ-агентов и 15 новых MCP-инструментов 🚀

Команда ByteRover выпустила обновление версии 2.0 своего решения для управления памятью ИИ-агентов по разработке. Систему можно использовать со всеми популярными coding-агентами: Claude Code, Cursor, Codex, GitHub Copilot и т.д. (см. скрин)

Сейчас, например, очень популярна комбинация Codex (планирование и основной кодинг с GPT-5 Codex в режиме High-Reasoning) + Claude Code (Sonnet 4.0 или Opus 4.1 для devops и mcp части кодинга) и данный инструмент позволяет "шарить" контекст между Codex и Claude Code, что очень удобно.

Ключевые нововведения:

🔄 Git для памяти ИИ
• Версионный контроль для памяти агентов
• Полная история изменений с временными метками
• Возможность отката к предыдущим версиям
• Функция форкинга баз памяти для экспериментов
• Детекция конфликтов в памяти при дублировании
• Совместная работа команды с отслеживанием авторства изменений

📝 Context Composer
Новый инструмент для создания контекста агентов:
• Загрузка документов, PDF, изображений
• Чат-интерфейс для взаимодействия с агентом
• Парсинг файлов в переиспользуемые воспоминания
• Интеграция со Slack, Jira, Figma, Google Drive

🛠 15 специализированных MCP-инструментов:

1️⃣ Knowledge Management - хранение паттернов кода и знаний с релевантным скорингом
2️⃣ Onboarding Tools - генерация и обновление справочников проектов
3️⃣ Plan Management - структурированные планы реализации с отслеживанием задач
4️⃣ Module Management - документирование модулей кодовой базы с техническими деталями
5️⃣ Reflection Tools - самооценка качества контекста агентом

Простая настройка ⚙️
• Создание workspace памяти
• Установка расширения в Cursor, Windsurf или другие AI IDE
• Добавление ключа workspace и email
• Автоматическое сохранение и восстановление памяти между сессиями

Альтернатива: Cipher 🔓
Для тех, кто предпочитает open-source решения, доступен Cipher - открытый слой памяти для coding-агентов (про другой oss вариант на базе OpenMemory MCP писал в заметке)

Возможности Cipher:
• Единый слой памяти для всех coding-агентов
• Интеграция через MCP сервер
• Поддержка OpenAI, Anthropic, OpenRouter
• Векторные базы: Milvus, Quadrant
• Ручное создание детализированных воспоминаний для проектов
• Автоматическое извлечение спецификаций и правил проекта

Настройка Cipher:
• Клонирование репозитория с GitHub
• Конфигурация в cipher.yml (MCP серверы, LLM провайдер, API ключи)
• Запуск в MCP режиме (default или aggregator)
• Интеграция с Cursor, Claude Code и другими IDE

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

🔗 ByteRover: https://www.byterover.dev/
🔗 Cipher GitHub: https://github.com/cipherdevs/cipher

@llm_notes

#byterover #cipher #memory #agents #mcp
Как сделать LLM лучше OpenAI, потратив всего 8 долларов

У вас есть невероятное преимущество по сравнению с Сэмом Альтманом. Сэм делает AI, чтобы сразу решать все задачи мира. Вам же нужно решить только одну конкретную задачу. И это позволит вам его обыграть. Сегодня разберем, как это можно сделать с помощью дообучения.

Статья, как дешево и сердито дообучать опенсорс

В статье коллеги взяли 31 NLP задач, в которых есть обучающая и тестовая выборки. Взяли 10 опенсорс LLM. Дообучили эти модели под все задачи, получили 310 новых LLM.

В итоге эти модели оказались в среднем на 10% лучше, чем GPT-4. При этом по числу параметров они в 1000 раз меньше. Обучали модели с помощью LORA, но это неважно, аналогичный эффект получился бы с чем угодно.

Такое дообучение еще и очень дешевое, потому что обновляет не модель целиком, а обучает только адаптер. Одна модель авторам обходилась примерно в 8 долларов.

Как это возможно?

Самое важное разобраться, в каких задачах авторам было легко побить GPT-4, а в каких не получилось.

Невозможно победить на широких задачах. На задачах, где надо одновременно много всего знать и уметь. Например, чтобы решать бенчмарк MMLU, своеобразный ЕГЭ для LLM, надо знать кучу фактов. Или для генерации кода надо знать синтаксис и уметь им оперировать для кучи различных ситуаций.

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

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

Но вы то не все.

Алгоритм, как правильно дообучать опенсорс

1) Проверьте, точно ли вам не нравится жить на промпте к чужой модели. Например, дорого или не хочется отправлять данные в чужую API.

2) Подумайте, широкая или узкая ваша задача. Если широкая — не надо ничего обучать, берите просто самый большой опенсорс и не думайте. Если к узким — можно дообучать. Как выбрать размер модели написано в моем гайде.

3) Первая итерация — Supervised Fine Tuning (SFT). Модель учится воспроизводить правильный ответ. Возможно, этого хватит и дальше лезть не придется.

4) Вторая итерация — Reinforcement Learning (RL). Модель награждают за хорошие ответы и ругают за плохие.

Дообучать можно адаптеры (LORA и ее друзья) или полным дообучением. В зависимости от количества данных.

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

Будьте рациональны.

Не надо дообучать модель в любом LLM-проекте. Проверьте, чаще всего все прекрасно работает на промпте + RAG. Тогда сильно сэкономите нервы.

Но и не надо тратить деньги за широту знаний, которая вам особо не нужна. Особенно, если у вас их не много.
Привет, товарищи-статистики!

Кто понимает p-value, тот, простите, понимает его, а кто нет, тому формулировка про все эти нулевые гипотезы, какие-то экстремальности и прочее будут ну очень далекими и оторванными от простого сравнения A и B. Но что если есть какая-то другая мера, которая, возможно, поможет лучше объясниться с теми, кто не особо понимает за статистику?

E-value — кажется, та самая мера, которая аналогично p-value говорит о значимости, но отвечает на на другой вопрос: "Насколько сильным должен быть некоторый неучтённый фактор, а не тритмент, чтобы полностью объяснить мой результат?".

Разберемся как следует в очередном большом посте!
Я принес. Ради чего люди ходят на работу? Пять типов мотивации по Герчикову

Я выступаю скорее против типирования, чем за. Легко человеку, не хотящему разбираться в людях, на глазок прикинуть психотип, наклеить на человека ярлык и всегда относиться к нему только определенным образом. А ведь люди не просто очень разные и не укладываются в один тип, а еще и со временем могут меняться их мотивации и стремления.

Однако сегодняшнюю статью я вам всё же принес https://habr.com/ru/companies/psb/articles/938116/

Мне понравилась, как она подробно и понятно расписана. С ней я предлагаю сделать 2 упражнения:

1. Прочесть и подумать, а что вас мотивирует из вышеуказанного сейчас? А 5-10 лет назад?
2. Принять, что на одно и то же событие у разных людей может быть очень разный взгляд, и перестать ультимативно спорить в интернетах про то, как ПРАВИЛЬНО. Кто-то говорит – только деньги-денежки-деньжищи, кто-то – профессионализм и развитие, кто-то – власть и вертикальный карьерный рост, кто-то – признание и народная любовь. А по сути-то каждый прав для себя (если он хорошо подумал и себя знает), но нет смысла другим это навязывать как ультимативно правильное мнение.
Как заботать алгоритмы в осеннем семестре ВУЗа

Алгоритмы очень важный предмет для старта карьеры в IT. Возможно один из самых полезных предметов на младших курсах. Экзамены в большинство школ содержат в себе алгоритмическую часть: ШАД, Летние школы Яндекс, Т-академия, а также отборы на стажировки практически во все компаниии бигтеха. Алго-часть есть почти для всех, аналитиков, бэкендеров, мл-разработчиков. Поэтому важно не просто заботать алгоритмы, заучив их, а важно проработать алгоритмический аппарат, что зачастую сделать не получается за счёт одного вузовского курса.

Начнём гайд с выбора площадки:

leetcode.com - сразу отбрасываем, задачи там подготовят вас лишь к простеньким алгоритмическим собеседованиям, за счет того что задачи на собеседованиях интервьюверы берут с этого сайта. Задачи там не развивают, они либо слишком простые конструктивы, либо баяны.

codeforces.com - отличный сайт для развития в спортпроге, один из немаловажных факторов - это наличие геймификации (рейтинговой системы). А также та же система помогает относительно точно классифицировать сложность задач и помогает планомерно расти. Например ваш текущий рейтинг x, чтобы наиболее эффективным образом развиваться и повышать свой рейтинг оптимально будет решать задачи рейтинга x + 200/300 во время тренеровок, на них будет уходить больше времени, но темп решения будет потом уменьшаться. Также не забудьте скрыть "теги" задач и решать "вслепую". Рейтинг формируется исходя из написания раундов (соревнований в реальном времени), здесь вначале трудно будет привыкнуть к требуемой скорости решения, но всё придёт с практикой (в первую очередь нужно научиться решать трудные задачи, а не быстро легкие). Задачи здесь близки к формату icpc, в последнее время преобладают конструктивы, но также и алгоритмические тоже довольно популярны, довольно весомую часть от решения занимает интерпретация легенды/сведение к фактам и т.п.

atcoder.jp - альтернатива кфу, но здесь задачи более математические, с формальными легендами. В целом прорешка эткодера даже сильнее даст буст, чем на кфе, но задачи там муторнее и сложнее зачастую. Также есть отдельная секция раундов с NP-задачами на оптимизации, отличная возможность попрактиковаться ко всяким huawei challenge.

Как с этим работать? Первым делом нужно понимать, что нужно тщательно отделять практику прорешки задач вслепую и изучения тематических контестов и алгоритмов. Примерные пропорции с которых нужно начать - это 35% прорешки на сайтах задач со скрытыми тегами и раундов, 65% - прорешки тематических контестов. Эта пропорция должна меняться по мере освоения базовых алгоритмов и в конечном итоге вы должны прийти к 90% - скрытые, 10% - тем. контесты (эти 10% необязательно новые алгоритмы будут занимать, тут можно скорее нарешивать те темы, в которых чувствуете трудности).

Для освоения основных тем мы подготовили подробную роадмапу по базовым темам и продвинутым. Изучать алгоритмы, советуем исключительно на c++, для спортивного программирование порог входа по знаниям плюсов очень низкий, поэтому хватит простенького курса на степике, сверх этого курса потребуется знать лишь stl-контейнеры и хеш-таблицы, для продвинутых пользователей можно также изучить pbds. Начать советую освоение с логарифмических поисков, сортировок и линейных алгоритмов эти темы используются в огромном кластере задач и часто используются в конструктивных идеях. Затем изучите динамическое программирование и теорию чисел (более подробные разделы тем указаны в роадмапе), тч поможет вам реализовывать модульную арифметику для вычисления комбинаторных формул и дп. Далее большой раздел теории графов последует, в нём отдельно изучите задачи на деревья и DAG. После освоения базовых тем можно перейти к структурам данных (ДО, фенвик, дд и т п). Самое последнее, как мне кажется на что следует обратить внимание это строковые алгоритмы (хеш-функцию вы можете пройти вначале своего пути, а задач которые нельзя решить хешами и можно только строковым алгоритмом достаточно мало).

@postypashki_old
Forwarded from Борис опять
Сделал из Runpod запускатор джоб.

Кто не знает, runpod.io это лучший на данный момент способ получить VM с GPU и оплатой по часам. Там низкие цены отличный сервис. Например, A40 за $0.4 в час это очень приятно. До этого я тренировал всё по пет-проекту на Google Collab, т.к. у меня были там кредиты, но теперь окончательно пересел.

Есть только одна проблема: runpod поды заточены под инференс. Например, есть такой чудесный дефолт: если ты создаешь pod и запускаешь на нём команду, то она исполнится, а потом pod перезапуститься и команда выполнится снова. Логичный паттерн если ты делаешь инференс, но я так получил pod который на протяжении двух часов бесконечно запускал мои бенчмарки и жрал деньги.

Я сделал скрипт который позволяет использовать runpod как исполнитель джоб. Примерно к такому сетапу я привык в eBay и до этого когда работал с ClearML.

Ты делаешь со своего ноутбука, например:


python runpod_submit.py --name any2json-train-a40 --script scripts/pod_train.sh --template-id gmu9nenh8c --max-runtime 24h --auto-terminate


Скрипт поднимет тебе под с заданным темплейтом, что позволяет задать все железные ресурсы на сайте runpod, или можно прямо в команде передать параметры. Далее запустит нужный скрипт с переменными из твоего локального энва (ЭТО НЕ СЕКЬЮРНО НЕ ИСПОЛЬЗУЙТЕ НА РАБОТЕ НЕ ПОДУМАВ), по результатам убъет pod.

Может быть кому-то пригодится:

https://gist.github.com/btseytlin/0dbd29ce0ea76237585b16c17b9af0f6

Учтите, что там всё на жутких костылях
Forwarded from Женя Янченко
Как обещала, сделала конспект доклада "Шардирование данных на PostgreSQL в критичных системах" от Алексея Светличного из Т-Банка.

Шардирование — это способ масштабирования баз данных, при котором большие объемы информации разбиваются на части (шарды) по какому-тот признаку и распределяются по нескольким серверам.

Зачем нужно шардирование:

🔵Масштабируемость: позволяет обрабатывать больше данных и запросов, добавляя новые серверы вместо увеличения мощности одного сервера.

🟢Производительность: запросы распределяются по нескольким узлам, уменьшая нагрузку на один сервер и ускоряя работу

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

🟣Эффективное использование ресурсов: вместо дорогих монолитных серверов можно использовать много более простых и дешевых узлов.

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

Алексей рассказал про два подхода:

Шардирование из коробки (управление на уровне БД)

Приложение не знает, как разложены данные в БД, БД сама управляет шардированием.
Простота в разработку
Сложная эксплуатация на слое инфраструктуры

Примеры: MongoDb, Couchbase, PostgreSQL + Citus

Шардирование на уровне приложения


Приложение знает, что и как разложено в БД.
Каждая БД может быть простой и компактной
Могут быть разные БД
Проще эксплуатация и поддержка на слое инфраструктуры
Сложнее логика приложения

Так можно сделать с любыми БД, так как управление на уровне приложения.

Какие вопросы нужно решить при выборе пути шардирования на уровне приложения:

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

Алексей рассказал, как в Т-Банке внедрили шардирование в платформе пополнений, платформе карточных авторизаций и платежном шлюзе. Расскажу подробнее про первую.

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

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

Продолжение ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Женя Янченко
Продолжение конспекта доклада "Шардирование данных на PostgreSQL в критичных системах" от Алексея Светличного из Т-Банка.

Команда приняла решение выбрать ключом шардирования внешний идентификатор операции. Соответственно:

✔️ Бакет определяется функцией хэширования этого идентификатора операции.
✔️ Каждый физический шард содержит несколько виртуальных бакетов. Шарды независимы.
✔️ За правила шардирования отвечает отдельный роутер со своей БД.
Холодное хранение организовано аналогично на отдельных шардах.

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

Мне доклад очень понравился!
Тут и теория и практика, особенно понравилось, что для всех примеров отмечено, что будет в случае отказа шарда. То есть та часть, о которой обязательно нужно подумать. Ибо отказы неминумы, и нужно подумать, как минимизировать потери денег/репутации
😼

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

➡️ Цели команды и компании
➡️ Сценарии системы
➡️ Имеющаяся техническая экспертиза
➡️ Ландшафт (например, будет ли это облако внешнего провайдера или свой локальный контур)

Вот это мне отозвалось в самое ❤️
И это то, чем отличаются архитектурные собесы от проектирования архитектуры в реальности!

На арх (сисдиз) собесе мы можем позволить себе выбор любых технологий, а в реальности я бы 100 раз подумала прежде чем тащить в проект с нуля в качестве основного хранилища базу, с которой ни у кого из команды нет опыта, а сроки как обычно "к концу квартала в проде".

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

Приходилось ли вам сталкиваться с организацией шардирования? Как принимали решения?

___________________

Повторюсь, что ребята из Т-Банка организовали супер-крутое мероприятие по уровню организации, движух и докладов 🔥 Спасибо им большое!

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

А как часто вы ходите на разные митапы, видите ли для себя в этом какой-то смысл/ценность?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM