max.sh
2.05K subscribers
61 photos
5 videos
73 links
Карьера, образование и исследования в мире AI через призму собственного опыта.


Канал ведет Макс Шапошников, Applied Scientist в FAANG. Профессионально ловлю CUDA OOM.

Cвязь в тг - @PorcelainFox
Коннект в Linkedin - https://www.linkedin.com/in/maxshapp/
Download Telegram
🔥6👍3😁1
💥Большой релиз - запускаем Alexa+ - next gen версия ассистента скоро станет всем доступна. Классно участвовать и наблюдать за процессом развития большого продукта. Наконец-то куча крутых фичей, над которыми работала команда доедет до пользователей.

Что именно ждет можно прочитать в официально анонсе, но главные моменты такие:

Официально можно считать Алексу Large Action Model (LAM) - взаимодействие с Алексой теперь может быть направлено именно на принятие действий и взаимодействие с средой.

Огромное количество интеграций сервисов в ассистента. Bсе будут работать по мгновению голоса: OpenTable, Ticketmaster, Yelp, Thumbtack, Vagaro, Fodor’s, Tripadvisor, Amazon, Whole Foods Market, Uber, Spotify, Apple Music,Netflix, Disney+, и куча других. Самое прикольное, то что можно их нативно комбинировать. Например, можно будет попросить заказать Алексу в такси в убере на определенное время и и попросить отправить своему другу уведомление. Или попросить заказать еду в Whole Foods, а если чего-то из списка не найдется - сделать это на Amazon fresh.

Отдельно будет обновленное Developers API для быстрой интеграции кастомных сценариев для сторонних разработчиков.

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

Low latency. Когда дело касается ассистентов, то latency (если быть совсем точным, то percieved latency) играет ключевую роль в создании ощущения, что общаешься с человеком, а не ботом. Чтобы минимизировать задержку в ответе используется куча трюков: и кэширование, и динамический routing, чтобы выбрать подходящую модель из того, что доступны на Amazon Bedrock. Большое количество запросов можно начать решать/озвучивать маленькими быстрыми модельками (например, у Amazon Nova Micro бешеные 161 t/s через API, но можно еще больше 🙂), а на фоне генерировать что-нибудь большим Claude

Свой режим оператора (a.k.a Agentic Flow). Можно попросить сделать что-то, о чем Алекса может быть не в курсе (например о каком-нибудь API), и она пойдет это делать в режиме оператора, возвращаясь к пользователю за советом или подтверждением через UI (многие девайсы уже давно идут с экраном, да) или голос.

Умный дом. Алекса будет в курсе всех дейвайсов в квартире и сможет переключаться между ними в риал тайме. Например, вы можете попросить включить музыку на колонке в гостиной, обращаясь к девайсу на кухне - она сообразит все сделать. На старте будет так жи и интеграция с Amazon Ring - умную камеру, которая трэкает ключевые события возле входа в ваш дом. Можно будет узнать из другого угла дома, кто стучится к вам в дверь.

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


📎 Подписку можно будет оформить за 20 долларов в месяц или получить вместе с Amazon Prime.

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👏2🏆2🤩1
💡 Фреймворк дня. aisuite - единый интерфейс для работы с разными AI провайдерами

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

Видимо, Эндрю Ын и его команда столкнулись с такой же проблемой и выпустили микро фреймворк, который представляет единый интерфейс для большого количества провайдеров. Сейчас официально плддерживаются: OpenAI, Anthropic, Azure, Google, AWS, Groq, Mistral, HuggingFace Ollama, Sambanova and Watsonx.

Если чего-то не хватает, то можно добавить свою реализацию.

В репозитории есть много примеров, включая всякие расширения типа tool_calling.

Работать с AWS Bedrock стало точно в разы приятнее. Не нужно вручную создавать boto сессии и заниматься дополнительным парсингом данных на вход и выход. Все зашито в интерфейс:


import aisuite as ai
client = ai.Client()


provider = "aws"
model_id = "meta.llama3-1-405b-instruct-v1:0" # Model ID from Bedrock

messages = [
{"role": "system", "content": "Respond in Pirate English."},
{"role": "user", "content": "Tell me a joke."},
]

response = client.chat.completions.create(
model=f"{provider}:{model_id}",
messages=messages,
)


Делитесь другими полезными инструментами для работы с LLM API провайдерами на каждый день в комментариях 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13🤓3👍2👨‍💻1🦄1
Новая Постановка Чеховской "Чайки" с Кейт Бланшетт

Сходил на этой неделе в Barbican Theathre на долгожданную премьеру "Чайки". Впечатления непередаваемые! Но обо всем по порядку.

Барбикан - это на самом деле огромный жилой комплекс в сердце Лондонского Сити. К нему примыкает библиотека, музей и большой центр искусства - все вместе образуют Barbican Complex. На втором фото можно увидеть макет комплекса. Кстати, из актуального, все выполнено в стиле брутализма.

Внутри центра исcусств находится огромная выставочная зона и сам театр - фото 3 и 4.

Кстати, здесь есть небольшой сувенирный магазин с разным прикольными штуками, приуроченными к выходу пьесы (фото 5). Жалею теперь, что ничего не купил на память 🥲

Ну а теперь перейдем к главному. К Пьесе. Она удалась во всех смыслах! Во-первых, тут просто невероятный актерский состав (и Кейт Бланшетт, и Эмма Корин, и Коди Смит-Макфи, и много других британских актеров). Все отлично отыгрывают своих персонажей и максимально органично смотрятся в своих ролях. Без сомнения, главная звезда на афише, Кейт Бланшетт, оказывается главной и на сцене, затмевая всех. Ну лично для меня. Во-вторых, несмотря на то что пьеса переносит в наше время, вся повествование, все три часа, смотрятся легко, целостно и уместно. Постановщик чуть модернизировал диалоги, но сохранил всю суть оригинала. Хронология событий тоже на месте. Быть может только чуть смещены акценты. Все-таки в пьесе герои Нина и Константин образуют центр повествования и двигают всю драму, тогда как в новой версии всю энергетику как будто забирает Аркадина, мать Константина. Ну это и не удивительно, ее играет Бланшетт 💥

📸Снимать само представление было нельзя. Но выход актеров на поклон и аплодисметны публики поймал в кадр.

Фух. На культруную жизнь переключился. Можно теперь и обратно к технологиям. 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥5😍43🕊3👏2🤩1🍓1
Интересный опрос в канале у @smirnovevgeny, Head of ML Лаборатории в Альфа-Банке про карьеру в ML, зарплатные вилки, географию, грейды и образование. Будет очень интересно посмотреть на результаты в контексте количество переработанных часов -> компенсация - есть ли тут корреляци, а самое главное какая. Порадовало, что такой вопрос вообще есть 😄

заполнить гугл форму можно тут
Результаты будут в канале
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤓6👏4👨‍💻1
💡Принцип Златовласки, или при чём тут сказка про трёх медведей?

Казалось бы, какая Златовласка? И какя вообще сказка?

Вот и я сначала удивился, когда услышал выражение "Goldilocks hard" (c английского дословно Goldilocks будет Златоваской) в недавней лекции Charles Sutton-а, Research Scientist-а из DeepMind, про AI Agents for Code Generation.

Давайте разберёмся.

Златовласка — это девочка из известной английской сказки Goldilocks and the Three Bears. В русском варианте, "Три Медведя", адаптированном Львом Толстым, она была заменена на безымянную «одну девочку», а в более поздних версиях — на Машу.

Сюжет сказки прост: девочка заблудилась в лесу, зашла в дом трёх медведей и обнаружила там три набора предметов разного размера — три тарелки, три стула, три кровати. Попробовав их, она каждый раз находила, что один слишком большой, другой слишком маленький, а третий — в самый раз.

Вот из этого "в самый раз" и происходит принцип Златовласки (Goldilocks principle), который используется в самых разных областях — от медицины и психологии до инженерии и машинного обучения.

Например, оптимальный learning rate при обучении модели — это тот, который и не слишком маленький (чтобы обучение не застопорилось), и не слишком большой (чтобы модель не перескакивала экстремумы и не сходилась хаотично).

Sutton в своей лекции использовал выражение Goldilocks hard, говоря о бенчмарках MBPP и HumanEval для оценки моделей генерации кода. Эти датасеты состоят из простых задач: реализовать базовый алгоритм на Python в 10–20 строк. В 2021–2022 годах такие бенчмарки были в "самый раз" — модели уже демонстрировали, что могут решать подобные задачи, но всё ещё показывали далёкие от идеала метрики, и было понятно, куда расти. Сегодня такие датасеты безнадежно устарели: 1) слишком простые 2) слишком мало юнит-тестов на каждую задачу 3) абсолютно точно они протекли в pretrain любой новой модели. По сути, MBPP и HumanEval стали аналогом MNIST в кодогенерации.

Актуальный Goldilocks hard бенчмарк для кодогенерации — это, скорее, SWE-Bench (а ещё лучше его отфильтрованная версия SWE-Bench Verified), который основан на pull request'ах из крупных open-source Python-проектов на GitHub.

Такая вот история про Златовласку и генерацию кода 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍8🐳21😁1💩1🤓1🆒1
Когда я начал вести канал, то заинтересовался похожими авторскими проектами на тему образования, технологий, карьеры и машинного обучения.

Обнаружил канал Андрея Созыкина - https://t.iss.one/a_sozykin

Андрей записывает классные видео курсы ( да, у него большой ютуб канал на 125к!) для начинающих на разные темы: про Компьютерные сети, по основам SQL и Python, различным главам в машинном обучении. Очень давно я ставил первые куда драйверы для тензорфлоу как раз по его туториалу 😄

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

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

У него еще и много интересного про образовательные проекты в IT на базе разных университетов, поэтому прикольно следить еще и в этом направлении)
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍8🔥3👏2🤝1
Давно не было постов с рассказами о собеседованиях в разные компании. Сегодня интересное пополнение: опыт прохождения интервью на позицию Senior ML Engineer в Apple Music (Лондон).

Сам отзыв в следующем сообщении.

Apple давно входит в число FAANG-компаний, поэтому, казалось бы, найти рассказы о собеседованиях туда несложно. Но лично я ни разу не встречал хорошего обзора процесса найма именно ML-инженеров. Но из рассказа понял, почему так - разные команды могут менять процесс найма, нет одного набора секций; Это делает историю подписчика особенно ценной! Большое спасибо, что делитесь такой редкой информацией 😊

Кстати, я обновил закреплённое сообщение с формой для историй. Теперь в нём не только ссылка на форму, но и список уже опубликованных рассказов — так будет проще искать нужную информацию.

Присоединяйтесь и делитесь своим опытом! Буду рад видеть истории о зарубежных и отечественных компаниях, стартапах, необычных местах и других уникальных собеседованиях на AI / ML / Research роли. 🎉

P.S Скоро опубликую еще одну офигенную историю в горячую компанию 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥644🦄2😎2🍾1
Senior ML Engineer в Apple Music, London 😮

Авторская орфография сохранена


#интервью

Ник автора в тг - Анонимно

Название комании, можете указать ссылку или коротко описать что за место - Apple, продукт Apple Music

Как подались на вакансию - рекрутер сам вышел на меня

🔥 Субъективно Сложность процесса по 10 бальной шкале - 4


Когда начали процесс - 02/24

Когда закончили процесс - 04/24


Позиция, на которую собеседовались - Senior ML Systems Engineer

Грейд на который собеседовались (если известно) - ICT4 (примечание от автора канала: расшифровывается как Individual Contributor L4, соответствует позиции Senior, сравнение с другими биг техами можно найти на levels.fyi)

Локация вакансии - London

🔥 Расскажите про этапы собеседований

Хочу отметить, что собеседования в Apple являются team-specific, и нет каких то общих этапов. Поэтому опыт собеседований в другие команды может сильно отличаться

1) Screen with Hiring manager
Вопросы про предыдущий опыт, чтобы понять есть ли потенциальный fit

2) Coding screen interview
Есть уже готовый сэмпл кода на питоне, нужно было встроить в него нужную логику.
Найти имеющиеся в коде слабые места, предложить способы улучшения, и реализовать фиксы.
По итогу получается смесь из литкода и чего то более приближенного к day-to-day job.

Onsite (5 секций)

3-4) Behavioural - классические вопросы для поведенческих интервью. Не знаю зачем, но в Apple Music зачем то проводят 2 behavioural собеседования с разными людьми.

5) ML System Design - стандартный вопрос из разряда "design of next song recommendation system".

6) ML Coding - по большей части это собеседование было очень похоже на предыдущее, но с уклоном в прототипирование кода

7) Data Engineering - нужно было решить алгоритмическую задачку связанную с обработкой данных. Не смотря на название этапа, это собеседование в большей степени было похоже на обычные leetcode секции.


Что понравилось:
- было приятно поговорить с менеджером еще до начала собеседований

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



Итоги собеседования, например оффер или отказ, или что-то другое: Offer (принятый)

Информация про Total Compensation (если желаете): 120k base + 50k sign-on bonus + 400k stocks (по ощущениям это был максимум на который Apple мог согласиться).
примечание от автора канала: детали зарплаты в фунтах, стоки выдаются с вестингом на 4 года, то есть условно по 25% становятся доступными в год, но реальные доли могут отличаться (10,20,30,40 или 5, 15, 40, 40).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍219🔥8🏆321💯1🆒1
📎Phi-4-Multimodal - модель, которая может понимать картинки, речь и текст одновременно


1️⃣ Microsoft в начале марта выложили в открытый доступ серию моделей и поделились подробным техническим деталями в статье. Phi-4-Multimodal может одновременно обрабатывать картинки, текст и аудио. Релиз прошел совсем тихо и почти никто про эти модельки не говорит. На мой взгляд зря, получилось очень интересно.

2️⃣ Сначала сухие факты

⏺️Модель Phi-4-multimodal, лицензия MIT, веса на HF

⏺️На вход умеет принимать текст, речь или картинки - суммарный контекст 128,000 токенов. На выход текст (0.34 секунды до первого токена, throughput 26 t/s)

⏺️Размер 5.6B параметров, все в BF16, 3.8B из этих параметров идут от бэкбона Phi-4-mini, остальные параметры от обучаемых энкодеров для картинок и аудио, и LoRA адаптеров - об этом подробнее дальше.

⏺️На text-vision бенчмарках обходит Qwen2.5-VL-3B, Claude 3.5 Sonnet, and GPT 4o-mini

⏺️На vision-speech бенчмарках выше Gemini-2.0-Flash

⏺️В транскрипции речи в текст согласно репорту выше всех аналогов.

3️⃣ Подробнее про устройство модели.

Бэкбоун всего решения - 3.8B текстовая LLM Phi-4-mini. Ее тоже выложили и есть отдельная instruct версия под MIT лицензией. Модель очень шустрая и маленькая - отлично подходит для файн-тюнов на своих данных под конкретную задачу. Именно файн-тюнов. Из коробки few-shot prompting и обобщающие способности очень слабые - убедился в этом сам на своих бенчмарках по разным доменным задачам - до gpt 4o mini / claude 3.5 haiku и других mini версий как до луны - может поэтому релиз и прошел мимо.


4️⃣ Теперь про мультимодальность.

Аудио энкодится через Conformer модель (сверточная сеть + трансформер) и дополнительную проекцию пространство токенов базовой текстовой LLM. Изображения энкодятся через vision transformer SigLIP-400M и так же проекцию в пространство токенов текстовой модели. Таким образом, благодаря projection слоям все модальности можно представить в одном пространстве. Как показано на рисунке 1.

Наконец, чтобы все модальности “уживались” друг с другом, в трансформер слои Phi-4-mini добавлены LoRA адаптеры, один для аудио (460M), другой для картинок (370M). И в итоге forward на инференсе выглядит как последовательное применение базовых весов и адаптеров, показано на рисунке 2. Коротко Обучение происходит в несколько стадий: 1) обучение vision части 2) обучение аудио части 3) joint обучение на обеих модальностях.


5️⃣ В итоге получается элегантная модель, которая может и в понимание картинок, и в ASR, и в vision-to-audio understanding, и многие другие задачи вокруг этих модальностей. Да, обучение для каждой стадии непростое (много деталей есть в статье), и требует много данных, но инференс выглядит максимально бесшовным и нативным.

Плюс, такой подход позволяет распараллеливать рисерч команды в большой лабе, где люди работают над разными направлениями. Одна команда улучшает foundation model, тогда как другие накручивают свои модальности и и пользуются базовой моделью, как универсальным источником знания о мире. Как раз про движение в эту сторону, в контексте мультимодальности не только картинок и текста (так делают уже все), но и добавления аудио/речи, и микс этого всего, рассуждал недавно в подкасте ко-фаундер 11Labs здесь (кстати, офигенный выпуск)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍42🐳2🦄2👏1🤔1👨‍💻1😎1
Пятница, время нового поста с отзывами на собесы в интересные места. Сегодня делюсь опытом одного из подписчиков в очень горячей компании - Nvidia, на роль Performance Инженера.

Отзыв можно найти в посте ниже.

Почитал детали, офигел от сложности процесса. По описанию, почти все интервью специфичные и нужно прямо хорошо знать свое дело, чтобы успешно пройти раунды. Как я понял, многие вопросы построены вокруг оптимизаций вычислений (ну а как еще, нвидиа же продает видеокарты, чтобы учить большие модели, а роль про оптимизацию :D), поэтому нужно знать детали распределенного обучения, как устроены разные типы данных, как работать с CUDA, и в каких местах искать bottleneck-и пайплайнов.

А, ну и еще первый раз слышу про Hard Leetcode да еще и с задачей на тему DP на собеседовании. Это при том, что один из этапов собеса - объемная домашка. Что ж, процесс сложный, но думаю и награда в виде щедрого оффера того стоит.

У человека явно стальные нервы - начать собес в Августе 2024 и закончить в Январе 2025 🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
8🍾5😎4👍3😱2
🤩 Performance Engineer в Nvidia, Munich

Авторская орфография сохранена

#интервью

Ник автора в тг - Анонимно

Название комании, можете указать ссылку или коротко описать что за место - Nvidia

Как подались на вакансию - Реферал

🔥 Субъективно Сложность процесса по 10 бальной шкале - 9


Когда начали процесс - Август 2024

Когда закончили процесс - Январь 2025


Позиция, на которую собеседовались - Performance Engineer (примечание от автора канала: согласно описанию роли, например здесь, эта роль про бенчмарки, профайлинг и анализ решений, которые разрабатывает Nvidia и поиск боттлнеков в них, то есть роль посередине между software командами, которые пишут сервисы для кастомеров и hardware, которые напрямую работают с железяками).

Грейд на который собеседовались (если известно) - IC4 (примечание от автора канала: расшифровывается как Individual Contributor L4, согласно таблице грейдов на levels.fyi это выше чем Senior, но и не Staff - что-то посередине. Если сравнивать с гуглом, то это на уровне L5 гугла - то есть Senior.)

Локация вакансии - Munich

🔥 Расскажите про этапы собеседований

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

2. Технический скрин: кодинг c++, performance tuning, parallelism: TP, PP, etc.

3. Домашка: алгоритмы + параллелизация (примечание от автора канала: подозреваю, что домашка на реализацию чего-то на C++ и OpenMP)

4. Онсайт
- 4.1 PyTorch, про разные внутренности: память, autograd, устройство типов данных
- 4.2 Deep Learning / Quantization: популярные алгоритмы, трейдоффы между разными подходами
- 4.3 Distributed training
- 4.4 и 4.5 Leetcode (задачи уровня медиум, типа на обход графов и уровня хард на DP)


Итоги собеседования, например оффер или отказ, или что-то другое: Offer (принятый)

Информация про Total Compensation (если желаете): N/A (примечание от автора канала: возможно, что компенсация не указана, чтобы не шокировать всех 😄)
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾24🔥14👍8😎4👨‍💻2
💡 Фреймворк дня. typer - замена старому доброму argparse

Каждый питонист точно написал в своей жизни хотя бы одно CLI приложение. И наверняка для этого использовался старый добрый модуль argparse - встроенный тул для CLI нужд.

Мне всегда казалось, что argparse какой-то кривой, неинтуитивный, слишком избыточной (заставляя писать новую портянку для каждого нового скрипта, копируя, по большом счету один и тот же набор команд). Но пересесть на простую и комфортную альтернативу не получалось.

Наконец-то нашел тул, который решил запрос. Тестирую либу typer последние пару месяцев и очень доволен - все запросы покрывает. Может, так нравится, потому что typer - родственник FastAPI (есть кто-то, кто не любит этот фреймворк?) и в core контрибьюторах те же люди, или потому что реально вышло удобно и просто. Заонбордился за пару минут.

Посмотреть кучу примеров можно в официальной доке: https://typer.tiangolo.com/#run-the-upgraded-example

Совсем базовый пример может быть таким скриптом


import typer

from pathlib import Path

app = typer.Typer()

@app.command()
def annotate(
book: Path = typer.Argument(..., help="Path to the book file"),
num_jobs: int = typer.Option(1, help="Number of parallel jobs"),
):
print(f'Reading book stored under {book} and processing it with {num_jobs} jobs')

if __name__ == '__main__':
app()


Ну а дальше запускаем как обычно python3 demo_with_typer.py --help

Получаем красивый интерфейс как на картинке выше.


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

- Пишется все очень интуитивно
- Минимальное количество дублирования кода
- Можно писать произвольные вложенные парсеры, с командами и подкомандами
- Эстетически приятный интерфейс, который превращает даже самую стандартную и скучную оболочку во что-то цветное и футуристичное ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍72🔥2👨‍💻2👌1🦄1😎1👾1