Forwarded from LLM is all you need
Решил тут разобраться в великом множестве локальных UI-клиентов для LLM.
Поставил себе 10 штук и опробовал их.
Результатом проб стала статься на Хабре: Краткий обзор 10 локальных UI для LLM
Поставил себе 10 штук и опробовал их.
Результатом проб стала статься на Хабре: Краткий обзор 10 локальных UI для LLM
Forwarded from LLM is all you need
logit_bias это параметр генерации, который позволяет контролировать какие токены и с какой вероятностью должна печатать модель.Как он работает...
Рассмотрим такой запрос:
Столица Франции? Одним словом.. Скорее всего мы получим ответ: Париж.Но мы хотим "услышать" от модели что-то другое.
Сначала выясним из каких токенов состоит слово
Париж.from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('/models/qwen/Qwen3-14B')
token_ids = tokenizer.encode('Париж')
token_text = [tokenizer.decode([token_id]) for token_id in token_ids]
print("ID токенов:", token_ids) # [16854, 125947, 16964]
print("Текст токенов:", token_text) # ['П', 'ари', 'ж']
Итак, за букву
П отвечает токен 16854. Занулим его:from openai import OpenAI
client = OpenAI(
base_url='http://192.168.0.108:8000/v1',
api_key='any'
)
prompt = 'Столица Франции? Одним словом.'
response = client.chat.completions.create(
model = '/Qwen3-14B',
messages = [
{'role': 'user', 'content': prompt}
],
temperature = 0.9,
max_tokens = 500,
logit_bias = {16854:-100}, # Выкручиваем вероятность появления токена в 0
extra_body = {'chat_template_kwargs': {'enable_thinking': False}}
)
content = response.choices[0].message.reasoning_content
print(content)
После этого модель не сможеть начать текст с буквы "П" (да и вообще ее напечатать) и мы сможем увидеть в ответе что-то вроде "Ницца", "Версаль" и много чего еще :)
Измеряется
logit_bias от -100 до 100. При -100 вероятность появления токена около нулевая, а при 100 модель только его и будет печатать :)В
logit_bias можно передать сразу несколько токенов: {16854:-100, 125947:-100, 16964:-100}Forwarded from AI и грабли
Хотя я и в водовороте ИИ хайпа, но у меня почти нет ИИ продуктов, которыми я пользуюсь каждый день
Прям на постоянке только Cursor/Claude Code, Wispr Flow, chatgpt/ai.studio, пару самописных ботов и Granola
Почему так? Если честно, кажется, что большинство продуктов просто не дают достаточно интерфейсной ценности в сравнении с обычным ChatGPT.
Granola – крутой пример обратного. Вот вроде обычный транскрибатор, но на самом деле все сильно глубже. Никаким chatgpt такой флоу заменить не получится. Подробнее показывал на воркшопе пару недель назад. Постарался не столько дать инструмент, сколько сформулировать универсальные подходы и реальные кейсы
Выложил эту часть в бесплатный доступ на ютуб – смотреть можно тут
Прям на постоянке только Cursor/Claude Code, Wispr Flow, chatgpt/ai.studio, пару самописных ботов и Granola
Почему так? Если честно, кажется, что большинство продуктов просто не дают достаточно интерфейсной ценности в сравнении с обычным ChatGPT.
Granola – крутой пример обратного. Вот вроде обычный транскрибатор, но на самом деле все сильно глубже. Никаким chatgpt такой флоу заменить не получится. Подробнее показывал на воркшопе пару недель назад. Постарался не столько дать инструмент, сколько сформулировать универсальные подходы и реальные кейсы
Выложил эту часть в бесплатный доступ на ютуб – смотреть можно тут
YouTube
ИИ инструмент для коммуникации, который сохранил мне несколько тысяч долларов
Granola – granola.ai
Enterprise-grade security – fireflies.ai
Тоже обещают GDPR и давно на рынке (раньше делали шумодав) – krisp.ai
(Канал новый, так что ссылки не кликабельные)
UPD: granola тоже обещает SOC2 и GDPR - granola.ai/security
Мой канал в тг:…
Enterprise-grade security – fireflies.ai
Тоже обещают GDPR и давно на рынке (раньше делали шумодав) – krisp.ai
(Канал новый, так что ссылки не кликабельные)
UPD: granola тоже обещает SOC2 и GDPR - granola.ai/security
Мой канал в тг:…
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
Пока я отчаянно пытаюсь найти время на продолжение цикла постов про Concurrency & Consistency хочу поделиться классной методичкой по потоковой обработке данных от признанного специалиста в этой области. Считаю что она незаслуженно обделена вниманием, поэтому исправляю это.
Making Sense of Stream Processing. The Philosophy Behind Apache Kafka and Scalable Stream Data Platforms
В далеком 2016м, Мартин Клепманн (да, это автор того самого кабанчика) написал методичку на 180 страниц в которой очень понятно и доступно рассказывает про:
- События, потоки данных.
- DDD, CQRS.
- Change Data Capture паттерн и при чем тут Kafka.
- Как тюнить базы данных под разные сценарии, особенно аналитические.
Чем хороша книга - в ней много понятных примеров и иллюстраций. Именно её я советую сейчас и советовал ранее своим менти, когда получал запрос на материалы про потоки данных "понятным языком".
Скачать книгу можно бесплатно с сайта автора: https://martin.kleppmann.com/papers/stream-processing.pdf
Делитесь в комментариях отзывами если читали, буду рад если посоветуете материалы которые помогли вам быстро вникнуть в тему Stream Processing.
P.S. Материал для постов по Concurrency почти готов, скоро будут посты. Будем велосипедить примитивы синхронизации с нуля и сравнивать с эталонными реализациями заодно щупая на практике все проблемы конкурентного программирования.
Making Sense of Stream Processing. The Philosophy Behind Apache Kafka and Scalable Stream Data Platforms
В далеком 2016м, Мартин Клепманн (да, это автор того самого кабанчика) написал методичку на 180 страниц в которой очень понятно и доступно рассказывает про:
- События, потоки данных.
- DDD, CQRS.
- Change Data Capture паттерн и при чем тут Kafka.
- Как тюнить базы данных под разные сценарии, особенно аналитические.
Чем хороша книга - в ней много понятных примеров и иллюстраций. Именно её я советую сейчас и советовал ранее своим менти, когда получал запрос на материалы про потоки данных "понятным языком".
Скачать книгу можно бесплатно с сайта автора: https://martin.kleppmann.com/papers/stream-processing.pdf
Делитесь в комментариях отзывами если читали, буду рад если посоветуете материалы которые помогли вам быстро вникнуть в тему Stream Processing.
P.S. Материал для постов по Concurrency почти готов, скоро будут посты. Будем велосипедить примитивы синхронизации с нуля и сравнивать с эталонными реализациями заодно щупая на практике все проблемы конкурентного программирования.
Forwarded from Инжиниринг Данных (Dmitry)
Проект, который может сделать каждый - Кастомизацию резюме.
Мой пример. Она пока работает, но еще надо тюнить и добавить prompts с рекомендациями.
Что использую:
- Cursor ID
- Antropic API key (вы можете любой AI использовать)
- Markdown файл с моим исходным резюме
- Open Resume framework (создает PDF резюме в нужном формате). Сам framework я даже не использовал, только взял идею JSON->PDF и сделал ее в PDF.
Механика простая:
1) Запускаю скрипт
2) Даю ссылку на вакансию
3) Python crawler забирает все
4) Antropic читает требования и обновляет резюме
5) Open Resume создает JSON и конвертирует его в PDF
Это пока сырой пример, и он там немного от себя напридумывал и зачем-то даты убрал из резюме, и написал, что я еще в Амазоне работаю (хитрый, однако)
А дальше, можно строить агента, например на N8N или от OpenAI посмотреть. Он может за вас ходить смотреть вакансии и делать отклики. Можно настроить все через Телегам Бота - увидели вакансию, скинули ссылку и дальше все само.
Мой пример. Она пока работает, но еще надо тюнить и добавить prompts с рекомендациями.
Что использую:
- Cursor ID
- Antropic API key (вы можете любой AI использовать)
- Markdown файл с моим исходным резюме
- Open Resume framework (создает PDF резюме в нужном формате). Сам framework я даже не использовал, только взял идею JSON->PDF и сделал ее в PDF.
Механика простая:
1) Запускаю скрипт
2) Даю ссылку на вакансию
3) Python crawler забирает все
4) Antropic читает требования и обновляет резюме
5) Open Resume создает JSON и конвертирует его в PDF
Это пока сырой пример, и он там немного от себя напридумывал и зачем-то даты убрал из резюме, и написал, что я еще в Амазоне работаю (хитрый, однако)
make optimize-interactive
🎯 Interactive Resume Optimization
==================================
Please provide the job posting URL:
Job URL: https://www.amazon.jobs/en/jobs/3010960/data-engineer-pricing-and-promotions-science-data-and-insights
🔄 Processing job posting: https://www.amazon.jobs/en/jobs/3010960/data-engineer-pricing-and-promotions-science-data-and-insights
✅ Loaded resume: DMITRY ANOSHIN
🔍 Extracting job content from: https://www.amazon.jobs/en/jobs/3010960/data-engineer-pricing-and-promotions-science-data-and-insights
✅ Extracted 5528 characters of job content
🤖 Analyzing job requirements with Claude...
✅ Job analysis completed
🔧 Optimizing resume for job match...
✅ Resume optimization completed
💾 Saved optimized resume to: src-resume/my-resume-optimized.json
📊 RESUME OPTIMIZATION REPORT
==================================================
📝 SUMMARY CHANGES:
Original length: 492
Optimized length: 754
💼 WORK EXPERIENCE REORDERING:
Original order: Rock Your Data, Inc. → Microsoft → Amazon → Wawanesa Insurance → Forex Club → Teradata / Lamoda / BNP Paribas
Optimized order: Senior Data Engineer, Alexa Team → Lead Data Engineer → Senior Data Engineer → Lead Data Engineer → Data Engineer / BI Developer → Senior Data Engineer / BI Architect
🛠️ SKILLS UPDATED:
1. **Coding:** SQL, Python, bash, PySpark → **AWS Technologies:** Redshift, S3, Glue, EMR, Kinesis, Lambda, IAM
2. **Data Platforms:** Snowflake, Redshift, Synapse, Databricks, BigQuery, Elastic MapReduce, HDInsight, EMR → **Programming Languages:** Python, SQL, Scala, PySpark, Java, NodeJS, bash
3. **ETL:** dbt, Amazon Glue, Airflow, SSIS, Prefect, Azure Data Factory, Luigi → **Data Platforms:** Snowflake, Redshift, Synapse, Databricks, BigQuery, EMR, HDInsight
4. **BI:** Tableau, Looker, Power BI, MicroStrategy, SAP Business Objects, Jupyter Notebooks → **Orchestration & ETL:** Airflow, dbt, AWS Glue, Azure Data Factory, Prefect, SSIS, Luigi
5. **DevOps:** GitHub, GitLab, Azure DevOps, Terraform, Azure Bicep, Kubernetes, Ansible, Helm Values → **Databases:** NoSQL, Graph databases, Column-family databases, Key-value stores, Object storage, SQL Server, Oracle
6. **Cloud:** AWS, Azure, Google Cloud → **Infrastructure-as-Code & DevOps:** Terraform, Azure Bicep, GitHub, GitLab, Azure DevOps, Kubernetes, Ansible, Helm
📋 Optimization report saved to: optimization_report.txt
✅ Resume optimization complete!
📄 Original: src-resume/my-resume.json
📄 Optimized: src-resume/my-resume-optimized.json
📋 Report: optimization_report.txt
🔄 Generating optimized PDF...
🔄 Converting src-resume/my-resume-optimized.json to PDF...
✅ PDF created successfully: src-resume/my-resume-optimized.pdf
✅ Optimization complete!
📄 Files created:
- src-resume/my-resume-optimized.json
- src-resume/my-resume-optimized.pdf
- optimization_report.txt
А дальше, можно строить агента, например на N8N или от OpenAI посмотреть. Он может за вас ходить смотреть вакансии и делать отклики. Можно настроить все через Телегам Бота - увидели вакансию, скинули ссылку и дальше все само.
GitHub
GitHub - xitanggg/open-resume: OpenResume is a powerful open-source resume builder and resume parser. https://open-resume.com/
OpenResume is a powerful open-source resume builder and resume parser. https://open-resume.com/ - xitanggg/open-resume
Forwarded from DziS Science | Data Science
Привет всем!
Сегодня продолжим рассмотрение методов отбора признаков.
Ранее мы познакомились с довольно интересным методом - Boruta.
Сегодня мы пообщаемся про его улучшение - Boruta Shap.
Прежде, чем понять, чем этот лучше оригинального, напомню основную проблему, связанную с оригинальным подходом - ограничение выбора моделей.
В оригинальном методе модели должны иметь "деревянную архитектуру".
Так как метод действительно хорош, основная идея улучшения - распространить подход на другие модели, не привязываясь к архитектуре.
Тут как раз на помощь приходит метод, популярный в сценарии "black box" (когда нам без разницы какую модель мы оцениваем) -SHapley Additive exPlanations.
Таким образом мы можем сформулировать алгоритм работы Boruta Shap:
1️⃣ 🔤 Создаем теневые признаки (Shadow Features), аналогично оригинальному методу Boruta, перемешивая значения, делая признаки случайными.
2️⃣ 🔤 Считаем Shapley Additive Explanations для всех признаков, в качестве метрики отбора. Это и есть главное премущество данного подхода в сравнении с оригинальным, дающий нам большую гибкость.
3️⃣ 🔤 Отбираем признаки, по которым Shapley выше, чем у самого значимого теневого признака.
4️⃣ 🔤 Повторяем процедуру итеративно, вычисляя Z-score для разделения признаков на 3 группы:
🔵 Подтвержденные (Confirmed) — важные признаки.
🔹 Временные (Tentative) — признаки, по которым алгоритм не смог принять однозначного решения.
🔸 Отклоненные (Rejected) — неважные признаки.
Собственно, признаки отбираются в полном признаковом пространстве, выбирая все лучшие признаки, а не только топ-N признаков, тем самым гарантируя полноту и информативность признаков в модели, не ограничивая архитектуру используемой модели.
Реализация в🐍 представлена в виде библиотеки
Сразу скажу, что данный метод хорош даже в промышленном использовании, особенно когда более простые итеративные методы гоняются долго и есть сомнение касаемо их результатов (Forward Feature Selection не дает стабильный набор признаков). Например, в моделях кредитного риска, где основная задача получить стабильный и качественный набор данных, балансируя между производительностью и объяснимостью моделей.
По традиции, 🔥, если понравилось.
#ds_лайфхаки
Сегодня продолжим рассмотрение методов отбора признаков.
Ранее мы познакомились с довольно интересным методом - Boruta.
Сегодня мы пообщаемся про его улучшение - Boruta Shap.
Прежде, чем понять, чем этот лучше оригинального, напомню основную проблему, связанную с оригинальным подходом - ограничение выбора моделей.
В оригинальном методе модели должны иметь "деревянную архитектуру".
Так как метод действительно хорош, основная идея улучшения - распространить подход на другие модели, не привязываясь к архитектуре.
Тут как раз на помощь приходит метод, популярный в сценарии "black box" (когда нам без разницы какую модель мы оцениваем) -SHapley Additive exPlanations.
Таким образом мы можем сформулировать алгоритм работы Boruta Shap:
Собственно, признаки отбираются в полном признаковом пространстве, выбирая все лучшие признаки, а не только топ-N признаков, тем самым гарантируя полноту и информативность признаков в модели, не ограничивая архитектуру используемой модели.
Реализация в
BorutaShap, документацию которой можно посмотреть в оригинальном репозитории. Сразу скажу, что данный метод хорош даже в промышленном использовании, особенно когда более простые итеративные методы гоняются долго и есть сомнение касаемо их результатов (Forward Feature Selection не дает стабильный набор признаков). Например, в моделях кредитного риска, где основная задача получить стабильный и качественный набор данных, балансируя между производительностью и объяснимостью моделей.
По традиции, 🔥, если понравилось.
#ds_лайфхаки
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Айтишник обыкновенный 🐰
US vs UC
Скажешь ты и будешь абсолютно прав(а)🤝
Но как бы смешно нам не было, вопросы на эту тему на собесах продолжают задавать, даже на позиции уровня senior... 🍅 Если честно, не всегда именно на тех. интервью, иногда вопросом по UC и US профилируют милейшие девушки (иногда не менее милейшие мужчины) HR, тем не менее – это🌟
Чаще, наверное, только спрашивают про SOAP 🧼 и REST 🤟
Публикации на тему UseCase и UserStory у меня не было, поэтому держи памятку, сохраняй, расчехляй при поиске работы. Еще можешь поделиться ей и обязательно поставить реакции.
Итак, UseCase — это сценарий использования, описание взаимодействия пользователя с системой.
Пример:
UserStory — короткое неформальное описание функциональности с точки зрения какой-то роли.
Пример:
Ну, и чтобы памятка стала более законченной, делюсь еще методом для оценки качества пользовательских историй – INVEST:
Ну какой же банальнейший и тупой пост, кому вообще это надо, любой джун и даже «вкатыш» всё знает про эти инструменты для формализации требований. Отписька🔥
Скажешь ты и будешь абсолютно прав(а)
Но как бы смешно нам не было, вопросы на эту тему на собесах продолжают задавать, даже на позиции уровня senior... 🍅 Если честно, не всегда именно на тех. интервью, иногда вопросом по UC и US профилируют милейшие девушки (иногда не менее милейшие мужчины) HR, тем не менее – это
Публикации на тему UseCase и UserStory у меня не было, поэтому держи памятку, сохраняй, расчехляй при поиске работы. Еще можешь поделиться ей и обязательно поставить реакции.
Итак, UseCase — это сценарий использования, описание взаимодействия пользователя с системой.
Пример:
Название: Просмотр истории операций
Акторы: Пользователь
Предусловия: Пользователь авторизован в приложении
Основной поток:
Пользователь входит в приложение
Заходит в блок с историей операций
Выбирает интересный ему промежуток дат и времени
Проверяет свои траты
Альтернативные потоки:
Если необходимо пользователь может активировать фильтры нужных ему видов или типов трат
Если пользователь выбирает промежуток без операций или фильтры, при применении которых операции отсутствуют, необходимо отобразить экран заглушку с предложением отменить фильтры/сменить промежуток.
Постусловия: отсутствуют
Исключения: Если при загрузки операций произошла ошибка, необходимо уведомить пользователя и предложить повторить попытку.
UserStory — короткое неформальное описание функциональности с точки зрения какой-то роли.
Пример:
Как пользователь, я хочу видеть историю операций, чтобы понимать сколько и на что уходит денег.
Состоит из:
Роль – пользователь
Действие – хочу видеть историю операций
Цель – чтобы понимать сколько и на что уходит денег
Ну, и чтобы памятка стала более законченной, делюсь еще методом для оценки качества пользовательских историй – INVEST:
Independent (Независимая) – История должна быть независимой от других историй.
Negotiable (Обсуждаемая) – Она должна отражать суть, а не детали, без указания конкретных шагов реализации.
Valuable (Ценная) – Эта история должна быть полезной для клиентов, бизнеса или/и стейкхолдеров.
Estimable (Оцениваемая) – Её можно оценить по сложности или другим параметрам(время, деньги).
Small (Компактная) – Команда может завершить эту историю за один спринт.
Testable (Тестируемая) – У нее есть различные критерии для проведения тестов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from дAI потестить!
Сайты где можно закупить нейронки без подписок (API)
Самое то, если нужно протестировать, или сделать парочку круток для проекта
fal.ai
replicate.com
wavespeed.ai
mindvideo.ai (free sora mindvideo.ai/text-to-video/ )
runware.ai
kie.ai
#list
Самое то, если нужно протестировать, или сделать парочку круток для проекта
fal.ai
replicate.com
wavespeed.ai
mindvideo.ai (free sora mindvideo.ai/text-to-video/ )
runware.ai
kie.ai
#list
Forwarded from Убежище аналитика
Всем привет!🤟
Сегодня мы немного подушним и рассмотрим классические t-, z- интервалы под новым углом - когда выборки маленькие. Это в свою очередь приводит нас к серьёзной ошибке, когда доверительный интервал не покрывает истинный эффект с той alpha, что мы закладываем. Также вы узнаете что такое разложение Эджворта и как это помогает увидеть проблему описанную ранее.
https://telegra.ph/Naskolko-bolshim-dolzhno-byt-n-dlya-intervalov-z-i-t-11-03
Всем приятного чтения!
Поставьте реакций, если вам нравится и если не нравится - тоже ставьте.
Сегодня мы немного подушним и рассмотрим классические t-, z- интервалы под новым углом - когда выборки маленькие. Это в свою очередь приводит нас к серьёзной ошибке, когда доверительный интервал не покрывает истинный эффект с той alpha, что мы закладываем. Также вы узнаете что такое разложение Эджворта и как это помогает увидеть проблему описанную ранее.
https://telegra.ph/Naskolko-bolshim-dolzhno-byt-n-dlya-intervalov-z-i-t-11-03
Всем приятного чтения!
Поставьте реакций, если вам нравится и если не нравится - тоже ставьте.
Telegraph
Насколько большим должно быть n для z- и t- интервалов?
Всем привет! Вероятно вы когда-то задавались вопросом: «Насколько большим должно быть n, чтобы z- и t-интервалы давали корректные вероятности покрытия?» Чтобы ответить на этот вопрос нам необходимо будет погрузиться немного в глубины ЦПТ (центральной предельной…
Forwarded from max.sh
Типы вопросов на собеседованиях про Трансформеры.
Один из первых постов на канале был про виды кодинг раундов для ML позиций совсем по верхам.
Так как я сам неоднократно проводил такие секции в роли интервьюера, а в начале года еще и активно собеседовался, то решил собрать новый текст на эту тему на основе личного опыта, опыта знакомых и историй читателей, которые уже есть на канале (ищите по тегу #интервью). Такие дисклеймеры делают текст сугубо субъективным и на полноту не претендуют.
В этот раз будет про темы вопросов.
Сюрприз-сюрприз, но почти всегда все сводится к работе с авторегриссонными трансформерами.
Тема 1. Предобработка данных.
Самые далекие от непосредственной работы с моделями вопросы. Такие чаще встречаются у ML SWE или ML Ops-ов (у самих же моделистов это наверняка спросят в теории) и заключатся они в том, чтобы реализовать какой-нибудь алгоритм или пайплайн обработки данных. Например, токенизация текста с помощью BPE.
BPE довольно интуитивен и красив, но реализация требует определенных манипуляций со словарями, списками, обработкой краевых случаев. Посмотреть подробнейший гайд с питонвоской реализацией можно у нашего любимого Andrej Karpathy
Тема 2. Реализация механизма self-attention
Может показаться удивительным, но вопрос "напишите на numpy классический self attention" успешно мигрировал из 2021-2022 (тогда их массово адоптировали) в 2025. При чем иногда даже без изменений. Еще более удивительно, что писать его научились далеко не все и огромное количество кандидатов не всегда могут написать и vanilla вариант.
На самом деле, какой бы простой не была задача, реализованный код - это просто повод к дискуссии. И даже в классической версии всплывает множество вещей, где можно копать: 1) а какой смысл нормировать QK на корень из размерности векторов? 2) а как сделать softmax стабильным 3) а как посчитать Q,K,V с помощью одной матричной операции, ...
Так что готовиться нужно не столько к задаче, сколько к хорошему пониманию каждого кусочка архитектуры. Дьявол всегда в деталях.
Тема 3. Сэмплинг токенов
Greedy Decoding - это хорошо, но нужен только для дебага. На практике используют вероятностные методы, вот и интервьюеры придумали спрашивать другие стратегии сэмплинга. Самый частый сейчас, на моей памяти, это top p. Хорошее референсое решение можно посмотреть тут (на сайте вообще бездонное количество крутых текстов)
Опять же, тут поможет уверенное владение матричными фрейморками (торч, numpy, jax), чтобы быть готовым к любой вариации. И чтобы экзотика типа min p не казалось странной.
Тема 4. Inference Loop
Эта секция на то, чтобы уверенно взаимодействовать с архитектурой, как с черным ящиком. Тензоры на вход, тензоры на выход, но еще надо хранить кэш, прошлые логиты, чего-нибудь еще. Тут тоже помогает детальное знание архитектуры трансформеров и умение писать это самому.
Порешать похожее можно на neetcod-e тут, и в смежных задачах.
Тема 5. ML Debugging
Довольно новая и загадочная вариация (по концепции) интервью. Ведь дебажить можно что угодно. Вам дают ссылку на ноутбук с кодом какой-нибудь сетки или пайплайном и просят найти в них... разные баги. В такой постановке я встречал подобное один раз, это было в биг тех. Дали код GPT2, в котором было сломано все. Модель начинала выдавать NaN-ы после нескольких итераций обучения. Нужно было поправить и добиться плавного падения лосса. Ну и попутно убеждать интервьюера, что говоришь что-то адекватное. Знакомый вытянул похожий вопрос на смежную тему: модель при инференсе выдает на одних и тех же входах разные ответы, устранить все источники недетерминированности.
Как-то так. Happy Learning!
Один из первых постов на канале был про виды кодинг раундов для ML позиций совсем по верхам.
Так как я сам неоднократно проводил такие секции в роли интервьюера, а в начале года еще и активно собеседовался, то решил собрать новый текст на эту тему на основе личного опыта, опыта знакомых и историй читателей, которые уже есть на канале (ищите по тегу #интервью). Такие дисклеймеры делают текст сугубо субъективным и на полноту не претендуют.
В этот раз будет про темы вопросов.
Сюрприз-сюрприз, но почти всегда все сводится к работе с авторегриссонными трансформерами.
Тема 1. Предобработка данных.
Самые далекие от непосредственной работы с моделями вопросы. Такие чаще встречаются у ML SWE или ML Ops-ов (у самих же моделистов это наверняка спросят в теории) и заключатся они в том, чтобы реализовать какой-нибудь алгоритм или пайплайн обработки данных. Например, токенизация текста с помощью BPE.
BPE довольно интуитивен и красив, но реализация требует определенных манипуляций со словарями, списками, обработкой краевых случаев. Посмотреть подробнейший гайд с питонвоской реализацией можно у нашего любимого Andrej Karpathy
Тема 2. Реализация механизма self-attention
Может показаться удивительным, но вопрос "напишите на numpy классический self attention" успешно мигрировал из 2021-2022 (тогда их массово адоптировали) в 2025. При чем иногда даже без изменений. Еще более удивительно, что писать его научились далеко не все и огромное количество кандидатов не всегда могут написать и vanilla вариант.
На самом деле, какой бы простой не была задача, реализованный код - это просто повод к дискуссии. И даже в классической версии всплывает множество вещей, где можно копать: 1) а какой смысл нормировать QK на корень из размерности векторов? 2) а как сделать softmax стабильным 3) а как посчитать Q,K,V с помощью одной матричной операции, ...
Так что готовиться нужно не столько к задаче, сколько к хорошему пониманию каждого кусочка архитектуры. Дьявол всегда в деталях.
Тема 3. Сэмплинг токенов
Greedy Decoding - это хорошо, но нужен только для дебага. На практике используют вероятностные методы, вот и интервьюеры придумали спрашивать другие стратегии сэмплинга. Самый частый сейчас, на моей памяти, это top p. Хорошее референсое решение можно посмотреть тут (на сайте вообще бездонное количество крутых текстов)
Опять же, тут поможет уверенное владение матричными фрейморками (торч, numpy, jax), чтобы быть готовым к любой вариации. И чтобы экзотика типа min p не казалось странной.
Тема 4. Inference Loop
Эта секция на то, чтобы уверенно взаимодействовать с архитектурой, как с черным ящиком. Тензоры на вход, тензоры на выход, но еще надо хранить кэш, прошлые логиты, чего-нибудь еще. Тут тоже помогает детальное знание архитектуры трансформеров и умение писать это самому.
Порешать похожее можно на neetcod-e тут, и в смежных задачах.
Тема 5. ML Debugging
Довольно новая и загадочная вариация (по концепции) интервью. Ведь дебажить можно что угодно. Вам дают ссылку на ноутбук с кодом какой-нибудь сетки или пайплайном и просят найти в них... разные баги. В такой постановке я встречал подобное один раз, это было в биг тех. Дали код GPT2, в котором было сломано все. Модель начинала выдавать NaN-ы после нескольких итераций обучения. Нужно было поправить и добиться плавного падения лосса. Ну и попутно убеждать интервьюера, что говоришь что-то адекватное. Знакомый вытянул похожий вопрос на смежную тему: модель при инференсе выдает на одних и тех же входах разные ответы, устранить все источники недетерминированности.
Как-то так. Happy Learning!
Forwarded from КПД
На этой неделе ребята из команды YandexGPT совместно c ШАДом (Школа анализа данных) провели интенсив по работе с LLM, где были затронуты вопросы обучения, инференса, и коммуникаций.
Материал довольно подробный и интересный, но требует определенной базы для вхождения.
В общем, рекомендую к просмотру всем интересующимся и желающим освежить знания.
Лекция 1: https://youtube.com/live/JMUWSdSD1Uk
Лекция 2: https://youtube.com/live/IAeAKcdMtsw
Лекция 3: https://youtube.com/live/BYiFv5PoMBw
Лекция 3.1: https://youtube.com/live/-52RgKQENl0
Лекция 4: https://youtube.com/live/VXI41kyQTPs
Лекция 5: https://youtube.com/live/AHMJICS2JQ0
Лекция 5.1: https://www.youtube.com/live/3v43mnx31OQ
Материал довольно подробный и интересный, но требует определенной базы для вхождения.
В общем, рекомендую к просмотру всем интересующимся и желающим освежить знания.
Лекция 1: https://youtube.com/live/JMUWSdSD1Uk
Лекция 2: https://youtube.com/live/IAeAKcdMtsw
Лекция 3: https://youtube.com/live/BYiFv5PoMBw
Лекция 3.1: https://youtube.com/live/-52RgKQENl0
Лекция 4: https://youtube.com/live/VXI41kyQTPs
Лекция 5: https://youtube.com/live/AHMJICS2JQ0
Лекция 5.1: https://www.youtube.com/live/3v43mnx31OQ
YouTube
LLM Scaling Week 2025 | Лекция 1. Арифметика глубокого обучения
Спикер: Михаил Хрущев, руководитель группы претрейна YandexGPT.
На лекции поговорим про эффективное обучение больших DL-моделей. Мы ответим на вопросы:
- Что мешает загрузить GPU в кластере на 100%?
- Как устроена логистика данных внутри GPU, хоста и кластера?…
На лекции поговорим про эффективное обучение больших DL-моделей. Мы ответим на вопросы:
- Что мешает загрузить GPU в кластере на 100%?
- Как устроена логистика данных внутри GPU, хоста и кластера?…