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, а пока буду оптимизировать лишний час между работой, учебой и туалетом💗
Пока ваш любимый матрос галер пытается понять как из 24 часов сделать 40, чтобы успеть все сделать, ему предложили пособесится в AI стартап
Условия
Полный 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
Надеюсь на вашу поддержку и очень верю, что этот пост для вас будет очень полезен💗
В этом посте я попытался собрать все учебные материалы, по которым я когда либо учился и которые как-то мне помогли в получении работы и опыта.
Статистика
Курсы Карпова на 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
Forwarded from Заметки LLM-энтузиаста
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
Команда 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
Forwarded from Всеволод Викулин | AI разбор
Как сделать 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. Тогда сильно сэкономите нервы.
Но и не надо тратить деньги за широту знаний, которая вам особо не нужна. Особенно, если у вас их не много.
У вас есть невероятное преимущество по сравнению с Сэмом Альтманом. Сэм делает 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. Тогда сильно сэкономите нервы.
Но и не надо тратить деньги за широту знаний, которая вам особо не нужна. Особенно, если у вас их не много.
Forwarded from Не AБы какие тесты
Привет, товарищи-статистики!
Кто понимает p-value, тот, простите, понимает его, а кто нет, тому формулировка про все эти нулевые гипотезы, какие-то экстремальности и прочее будут ну очень далекими и оторванными от простого сравнения A и B. Но что если есть какая-то другая мера, которая, возможно, поможет лучше объясниться с теми, кто не особо понимает за статистику?
E-value — кажется, та самая мера, которая аналогично p-value говорит о значимости, но отвечает на на другой вопрос: "Насколько сильным должен быть некоторый неучтённый фактор, а не тритмент, чтобы полностью объяснить мой результат?".
Разберемся как следует в очередном большом посте!
Кто понимает p-value, тот, простите, понимает его, а кто нет, тому формулировка про все эти нулевые гипотезы, какие-то экстремальности и прочее будут ну очень далекими и оторванными от простого сравнения A и B. Но что если есть какая-то другая мера, которая, возможно, поможет лучше объясниться с теми, кто не особо понимает за статистику?
E-value — кажется, та самая мера, которая аналогично p-value говорит о значимости, но отвечает на на другой вопрос: "Насколько сильным должен быть некоторый неучтённый фактор, а не тритмент, чтобы полностью объяснить мой результат?".
Разберемся как следует в очередном большом посте!
Telegraph
E-value: возможно, понятнее, чем p-value (или нет)
Определение p-value не особо помогает заказчику что-то понять в наблюдаемых результатах, просто поставьте себя на место того, кто смутно понимает что-то в статистике и произнесите в слух определение p-value. Ну какая-то абстракция, чес слово! Однако в принципе…
Forwarded from Тимлид Очевидность | Евгений Антонов
Я принес. Ради чего люди ходят на работу? Пять типов мотивации по Герчикову
Я выступаю скорее против типирования, чем за. Легко человеку, не хотящему разбираться в людях, на глазок прикинуть психотип, наклеить на человека ярлык и всегда относиться к нему только определенным образом. А ведь люди не просто очень разные и не укладываются в один тип, а еще и со временем могут меняться их мотивации и стремления.
Однако сегодняшнюю статью я вам всё же принес https://habr.com/ru/companies/psb/articles/938116/
Мне понравилась, как она подробно и понятно расписана. С ней я предлагаю сделать 2 упражнения:
1. Прочесть и подумать, а что вас мотивирует из вышеуказанного сейчас? А 5-10 лет назад?
2. Принять, что на одно и то же событие у разных людей может быть очень разный взгляд, и перестать ультимативно спорить в интернетах про то, как ПРАВИЛЬНО. Кто-то говорит – только деньги-денежки-деньжищи, кто-то – профессионализм и развитие, кто-то – власть и вертикальный карьерный рост, кто-то – признание и народная любовь. А по сути-то каждый прав для себя (если он хорошо подумал и себя знает), но нет смысла другим это навязывать как ультимативно правильное мнение.
Я выступаю скорее против типирования, чем за. Легко человеку, не хотящему разбираться в людях, на глазок прикинуть психотип, наклеить на человека ярлык и всегда относиться к нему только определенным образом. А ведь люди не просто очень разные и не укладываются в один тип, а еще и со временем могут меняться их мотивации и стремления.
Однако сегодняшнюю статью я вам всё же принес https://habr.com/ru/companies/psb/articles/938116/
Мне понравилась, как она подробно и понятно расписана. С ней я предлагаю сделать 2 упражнения:
1. Прочесть и подумать, а что вас мотивирует из вышеуказанного сейчас? А 5-10 лет назад?
2. Принять, что на одно и то же событие у разных людей может быть очень разный взгляд, и перестать ультимативно спорить в интернетах про то, как ПРАВИЛЬНО. Кто-то говорит – только деньги-денежки-деньжищи, кто-то – профессионализм и развитие, кто-то – власть и вертикальный карьерный рост, кто-то – признание и народная любовь. А по сути-то каждый прав для себя (если он хорошо подумал и себя знает), но нет смысла другим это навязывать как ультимативно правильное мнение.
Хабр
Ради чего люди ходят на работу? Пять типов мотивации по Герчикову
В мире множество подходов к мотивации сотрудников. Офисы с печеньками, бонусы за выполнение KPI, публичные порицания или тихие депремирования. Кто‑то из руководителей...
Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Как заботать алгоритмы в осеннем семестре ВУЗа
Алгоритмы очень важный предмет для старта карьеры в 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
Алгоритмы очень важный предмет для старта карьеры в 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.
Ты делаешь со своего ноутбука, например:
Скрипт поднимет тебе под с заданным темплейтом, что позволяет задать все железные ресурсы на сайте runpod, или можно прямо в команде передать параметры. Далее запустит нужный скрипт с переменными из твоего локального энва(ЭТО НЕ СЕКЬЮРНО НЕ ИСПОЛЬЗУЙТЕ НА РАБОТЕ НЕ ПОДУМАВ) , по результатам убъет pod.
Может быть кому-то пригодится:
https://gist.github.com/btseytlin/0dbd29ce0ea76237585b16c17b9af0f6
Учтите, что там всё на жутких костылях
Кто не знает, 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, или можно прямо в команде передать параметры. Далее запустит нужный скрипт с переменными из твоего локального энва
Может быть кому-то пригодится:
https://gist.github.com/btseytlin/0dbd29ce0ea76237585b16c17b9af0f6
Учтите, что там всё на жутких костылях
Forwarded from Женя Янченко
Как обещала, сделала конспект доклада "Шардирование данных на PostgreSQL в критичных системах" от Алексея Светличного из Т-Банка.
Шардирование — это способ масштабирования баз данных, при котором большие объемы информации разбиваются на части (шарды) по какому-тот признаку и распределяются по нескольким серверам.
Зачем нужно шардирование:
🔵 Масштабируемость: позволяет обрабатывать больше данных и запросов, добавляя новые серверы вместо увеличения мощности одного сервера.
🟢 Производительность: запросы распределяются по нескольким узлам, уменьшая нагрузку на один сервер и ускоряя работу
🟡 Отказоустройчивость: выход из строя одного шарда не всегда приводит к недоступности всей системы - остальные шарды продолжают работать.
🟣 Эффективное использование ресурсов: вместо дорогих монолитных серверов можно использовать много более простых и дешевых узлов.
🔵 Гибкость архитектуры: дает возможность оптимизировать разные шарды по-своему: хранить "тяжелые" данные отдельно, географически распределять шарды ближе к пользователям.
Алексей рассказал про два подхода:
Шардирование из коробки (управление на уровне БД)
Приложение не знает, как разложены данные в БД, БД сама управляет шардированием.
➕ Простота в разработку
➖ Сложная эксплуатация на слое инфраструктуры
Примеры: MongoDb, Couchbase, PostgreSQL + Citus
Шардирование на уровне приложения
Приложение знает, что и как разложено в БД.
➕ Каждая БД может быть простой и компактной
➕ Могут быть разные БД
➕ Проще эксплуатация и поддержка на слое инфраструктуры
➖ Сложнее логика приложения
Так можно сделать с любыми БД, так как управление на уровне приложения.
Какие вопросы нужно решить при выборе пути шардирования на уровне приложения:
✅ Число шардов: фиксированное или изменяемое.
✅ Ключ шардирования: на чем основывается логика распределения данных по узлам. Универсальный идентификатор (UUIDv4 и др.) или другой признак (временной, географический).
✅ Компонент маршрутизации, т.е. логика вычисления узла, где располагаются данные. Может быть библиотекой или отдельным компонентом инфраструктуры.
✅ Миграция на целевое решение: в большинстве случаев проектируется не новое решение, а замена старому, поэтому необходимо учесть миграции из источника.
Алексей рассказал, как в Т-Банке внедрили шардирование в платформе пополнений, платформе карточных авторизаций и платежном шлюзе. Расскажу подробнее про первую.
В Платформу пополнений поступают обращения от различных источников, например пополнение счета по номеру карты из терминала в магазине.
Исходно был монолит с БД Oracle на терабайты данных с ростом каждый месяц. Стояла задача отказаться от монолита, повысить расширяемость.
🤔 При переходе к шардированию возник вопрос, что выбрать ключом шардирования.
Идентификатор клиента? Внешний идентификатор операции? Суррогатный ключ?
В случае шардирования по клиенту при отказе шарда не сможем обслужить часть клиентов. В случае выбора ключом внешнего идентификатора операций при отказе одного из шардов будет недоступна часть операций у части клиентов. В случае суррогатного ключа влияние отказа будет минимально, но для логики поиска шардов потребуется хранить справочник.
Продолжение⬇️
Шардирование — это способ масштабирования баз данных, при котором большие объемы информации разбиваются на части (шарды) по какому-тот признаку и распределяются по нескольким серверам.
Зачем нужно шардирование:
Алексей рассказал про два подхода:
Шардирование из коробки (управление на уровне БД)
Приложение не знает, как разложены данные в БД, БД сама управляет шардированием.
Примеры: MongoDb, Couchbase, PostgreSQL + Citus
Шардирование на уровне приложения
Приложение знает, что и как разложено в БД.
Так можно сделать с любыми БД, так как управление на уровне приложения.
Какие вопросы нужно решить при выборе пути шардирования на уровне приложения:
Алексей рассказал, как в Т-Банке внедрили шардирование в платформе пополнений, платформе карточных авторизаций и платежном шлюзе. Расскажу подробнее про первую.
В Платформу пополнений поступают обращения от различных источников, например пополнение счета по номеру карты из терминала в магазине.
Исходно был монолит с БД Oracle на терабайты данных с ростом каждый месяц. Стояла задача отказаться от монолита, повысить расширяемость.
Идентификатор клиента? Внешний идентификатор операции? Суррогатный ключ?
В случае шардирования по клиенту при отказе шарда не сможем обслужить часть клиентов. В случае выбора ключом внешнего идентификатора операций при отказе одного из шардов будет недоступна часть операций у части клиентов. В случае суррогатного ключа влияние отказа будет минимально, но для логики поиска шардов потребуется хранить справочник.
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Женя Янченко
Продолжение конспекта доклада "Шардирование данных на PostgreSQL в критичных системах" от Алексея Светличного из Т-Банка.
Команда приняла решение выбрать ключом шардирования внешний идентификатор операции. Соответственно:
✔️ Бакет определяется функцией хэширования этого идентификатора операции.
✔️ Каждый физический шард содержит несколько виртуальных бакетов. Шарды независимы.
✔️ За правила шардирования отвечает отдельный роутер со своей БД.
✅ Холодное хранение организовано аналогично на отдельных шардах.
✔️ Отказ одного из шардов не приведет к полной недоступности системы.
✔️ Из-за подхода к расположению данных нарушится работа части операций (чьи идентификаторы попадают на отказавший шард). При этом повторение операции может пройти успешно.
✔️ Чем больше шардов, тем меньше влияние от одного отказавшего шарда.
Мне доклад очень понравился!
Тут и теория и практика, особенно понравилось, что для всех примеров отмечено, что будет в случае отказа шарда. То есть та часть, о которой обязательно нужно подумать. Ибо отказы неминумы, и нужно подумать, как минимизировать потери денег/репутации😼
В завершении, что Алексей рекомендовал учитывать при выборе решения:
➡️ Цели команды и компании
➡️ Сценарии системы
➡️ Имеющаяся техническая экспертиза
➡️ Ландшафт (например, будет ли это облако внешнего провайдера или свой локальный контур)
Вот это мне отозвалось в самое ❤️
И это то, чем отличаются архитектурные собесы от проектирования архитектуры в реальности!
На арх (сисдиз) собесе мы можем позволить себе выбор любых технологий, а в реальности я бы 100 раз подумала прежде чем тащить в проект с нуля в качестве основного хранилища базу, с которой ни у кого из команды нет опыта, а сроки как обычно "к концу квартала в проде".
ИБ тоже вносит свои коррективы в полет творческой мысли 😅 Да и облачные решения не без проблем, по опыту могу сказать.
Поэтому понравилось, что доклад был про реальный мир.
Приходилось ли вам сталкиваться с организацией шардирования? Как принимали решения?
___________________
Повторюсь, что ребята из Т-Банка организовали супер-крутое мероприятие по уровню организации, движух и докладов 🔥 Спасибо им большое!
В сентябре анонсированы митапы других компаний, но если честно я уже чувствую какой-то переход в зимний режим, хочется сидеть дома и радоваться удалёнке🙂
А как часто вы ходите на разные митапы, видите ли для себя в этом какой-то смысл/ценность?
Команда приняла решение выбрать ключом шардирования внешний идентификатор операции. Соответственно:
Мне доклад очень понравился!
Тут и теория и практика, особенно понравилось, что для всех примеров отмечено, что будет в случае отказа шарда. То есть та часть, о которой обязательно нужно подумать. Ибо отказы неминумы, и нужно подумать, как минимизировать потери денег/репутации
В завершении, что Алексей рекомендовал учитывать при выборе решения:
Вот это мне отозвалось в самое ❤️
И это то, чем отличаются архитектурные собесы от проектирования архитектуры в реальности!
На арх (сисдиз) собесе мы можем позволить себе выбор любых технологий, а в реальности я бы 100 раз подумала прежде чем тащить в проект с нуля в качестве основного хранилища базу, с которой ни у кого из команды нет опыта, а сроки как обычно "к концу квартала в проде".
ИБ тоже вносит свои коррективы в полет творческой мысли 😅 Да и облачные решения не без проблем, по опыту могу сказать.
Поэтому понравилось, что доклад был про реальный мир.
Приходилось ли вам сталкиваться с организацией шардирования? Как принимали решения?
___________________
Повторюсь, что ребята из Т-Банка организовали супер-крутое мероприятие по уровню организации, движух и докладов 🔥 Спасибо им большое!
В сентябре анонсированы митапы других компаний, но если честно я уже чувствую какой-то переход в зимний режим, хочется сидеть дома и радоваться удалёнке
А как часто вы ходите на разные митапы, видите ли для себя в этом какой-то смысл/ценность?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM