Добрался почитать статью SAM 2: Segment Anything in Images and Videos (старье, ей уже больше месяца!), искренне восхитился. Причем даже не только красивой демкой и высокими метриками на всех подряд zero-shot / semi-supervised бенчмарках по сегментации, а дизайном всего решения.
TL;DR такой:
- поставили новую задачу promptable video segmentation - в такой постановке задачу не решают, зато ее можно рассматривать как обобщение ранее известных задач;
- чтобы ее решить, подошли с обеих сторон - модель и данные;
- модель дизайнили под относительно быстрый стриминг инференс, пригодный и для видео, и для отдельных картинок, которые рассматриваются как частный случай видео из одного кадра;
- поддержка видео реализована через memory attention блок (выход енкодера проходит через self-attention на себя, а cross-attention - на memory, содержащий фичемапы предыдущих фреймов и предсказаний + вектора сегментируемого таргета);
- собрали огромный датасет из 600k+ масок, используя много итераций self-labeling с вовлечением разметчиков (human in the loop is all we need), в конце добившись среднего времени разметки кадра человеком 4.5 секунд;
- при помощи тех же self-labeling + валидацией человеками расширили датасет в четыре раза, и обеспечили этим еще и хорошую сегментацию фоновых объектов;
- для каждого куска пайплайна есть детальный ablation study.
Вообще не знаю, зачем пересказывать такую статью - она написана максимально понятно, вникать не придется, читается легче, чем телеграм-канал среднего ML-графомана. Но если читать все равно лень, можете посмотреть видео.
TL;DR такой:
- поставили новую задачу promptable video segmentation - в такой постановке задачу не решают, зато ее можно рассматривать как обобщение ранее известных задач;
- чтобы ее решить, подошли с обеих сторон - модель и данные;
- модель дизайнили под относительно быстрый стриминг инференс, пригодный и для видео, и для отдельных картинок, которые рассматриваются как частный случай видео из одного кадра;
- поддержка видео реализована через memory attention блок (выход енкодера проходит через self-attention на себя, а cross-attention - на memory, содержащий фичемапы предыдущих фреймов и предсказаний + вектора сегментируемого таргета);
- собрали огромный датасет из 600k+ масок, используя много итераций self-labeling с вовлечением разметчиков (human in the loop is all we need), в конце добившись среднего времени разметки кадра человеком 4.5 секунд;
- при помощи тех же self-labeling + валидацией человеками расширили датасет в четыре раза, и обеспечили этим еще и хорошую сегментацию фоновых объектов;
- для каждого куска пайплайна есть детальный ablation study.
Вообще не знаю, зачем пересказывать такую статью - она написана максимально понятно, вникать не придется, читается легче, чем телеграм-канал среднего ML-графомана. Но если читать все равно лень, можете посмотреть видео.
AI at Meta
Meta Segment Anything Model 2
SAM 2 is a segmentation model that enables fast, precise selection of any object in any video or image.
Самая технически сложная задача, которой я занимался в последний месяц - заставить домашний wifi нормально работать.
Вроде бы я не совсем кретин в вопросах сетей: в далекие школьные годы админил домашнюю сеть и еще помню романтику одного ADSL-подключения на четыре подъезда и обжима витой пары отверткой. Казалось бы, с тех пор прогресс огого, не надо ползать по чердаку и прописывать роуты вручную, так что организовать wifi на три комнаты должно быть несложно. Но нет, разобраться, почему прекрасно работавшая сеть внезапно начала терять 30% пакетов между роутером и экстендером, совсем не тривиально. Воспроизводимость экспериментов оказалась хуже, чем в машинлернинге, и даже random seed не зафиксировать.
Все починилось совершенно само по себе на следующий день. И как в таких условиях не верить в соседей с облучателем, который вызывает интерференцию?
Вроде бы я не совсем кретин в вопросах сетей: в далекие школьные годы админил домашнюю сеть и еще помню романтику одного ADSL-подключения на четыре подъезда и обжима витой пары отверткой. Казалось бы, с тех пор прогресс огого, не надо ползать по чердаку и прописывать роуты вручную, так что организовать wifi на три комнаты должно быть несложно. Но нет, разобраться, почему прекрасно работавшая сеть внезапно начала терять 30% пакетов между роутером и экстендером, совсем не тривиально. Воспроизводимость экспериментов оказалась хуже, чем в машинлернинге, и даже random seed не зафиксировать.
Все починилось совершенно само по себе на следующий день. И как в таких условиях не верить в соседей с облучателем, который вызывает интерференцию?
Иногда люди не видят лес за деревьями, и частный случай этого - не видеть здравый смысл за чеклистами.
Например, пишет мужик из издательства и намекает, что в книжке неоригинальный контент! Мол, переработайте перед печатью кое-какие куски, "so we can't be accused of any sort of plagiarism", и любезно присылает список этих кусков.
Открываем список и видим грозные коментарии "Needs rework; extremely close to the article text" и ссылки на какой-то notion, в котором человек составляет для себя конспект книги. Рекурсия!
Например, пишет мужик из издательства и намекает, что в книжке неоригинальный контент! Мол, переработайте перед печатью кое-какие куски, "so we can't be accused of any sort of plagiarism", и любезно присылает список этих кусков.
Открываем список и видим грозные коментарии "Needs rework; extremely close to the article text" и ссылки на какой-то notion, в котором человек составляет для себя конспект книги. Рекурсия!
Machines of Loving Grace - отличное эссе Дарио Амодеи (CEO Anthropic) про потенциальное влияние AI на мир в перспективе 5-10 лет. Умеренно оптимистичное, сдержанно предостерегающее, без хайпа, обещаний AGI за три недели и образов сингулярности из дешевой фантастики.
Darioamodei
Dario Amodei — Machines of Loving Grace
How AI Could Transform the World for the Better
Еще одно философское соображение, на этот раз по мотивам Нобелевки: некоторые мамкины комментаторы видят в наградах Хинтону и Хассабису сигнал, что нобелевский комитет вложился в nvidia разделяет неудержимый технооптимизм, e/acc и вот это все.
Но есть ироничный факт, что Дарон Аджемоглу, лауреат премии по экономике этого года, оценил рост мирового продуктивности за счет AI в 0.66% на горизонте 10 лет (т.е. примерно на порядок меньше оценок того же Goldman Sachs с их $7 триллионами за 10 лет).
Если кому-то вдруг интересно лично мое мнение: считаю, что предложенный фреймворк слишком линейный, и при некотором скепсисе на тему genAI верю в сдвиги в некоторых областях за пределами генерации контента в блогах b2b SaaS-компаний.
Но есть ироничный факт, что Дарон Аджемоглу, лауреат премии по экономике этого года, оценил рост мирового продуктивности за счет AI в 0.66% на горизонте 10 лет (т.е. примерно на порядок меньше оценок того же Goldman Sachs с их $7 триллионами за 10 лет).
Если кому-то вдруг интересно лично мое мнение: считаю, что предложенный фреймворк слишком линейный, и при некотором скепсисе на тему genAI верю в сдвиги в некоторых областях за пределами генерации контента в блогах b2b SaaS-компаний.
Реальность:
- надоело ждать полного прогона тестов на CI, между делом спрятал некоторые долгие джобы под if, чтобы они триггерились только для релевантных изменений.
Потенциальный пост в Linkedin:
- Pioneered a transformative project as part of a company-wide infrastructure efficiency and cost optimization strategy, establishing a scalable model that achieved a sustainable 40% reduction in CI operational costs across the AI organization.
- надоело ждать полного прогона тестов на CI, между делом спрятал некоторые долгие джобы под if, чтобы они триггерились только для релевантных изменений.
Потенциальный пост в Linkedin:
- Pioneered a transformative project as part of a company-wide infrastructure efficiency and cost optimization strategy, establishing a scalable model that achieved a sustainable 40% reduction in CI operational costs across the AI organization.
a16z выкатили примечательный блогпост про big ideas in tech 2025.
Примечателен он в первую очередь тем, как единственная страница может заставить включиться кулер нового макбука.
Примечателен он в первую очередь тем, как единственная страница может заставить включиться кулер нового макбука.
Почти в каждом deep learning-based продукте, над которым я работал, на каком-то этапе где-то сбоку появляется небольшая линейная модель, обучаемая отдельно, иногда даже на классических фичах. Она, конечно, не может решать основную сложную задачу, но внезапно сильно помогает с каким-нибудь корнеркейсом. Например:
- определять резкую смену контекста (и необходимость сбросить стейт),
- детектить потенциальные ошибки или аномалии,
- слегка уточнять результаты сложного пайплайна,
- роутить инпут между компонентами,
- заполнять недостающий параметр, если в API вдруг не приходит какое-то поле, а менять что-то на клиенте слишком дорого,
- подсвечивать потенциальные проблемы человекам in the loop.
Этой модели никогда нет в изначальном дизайне: если проблема была бы заметна изначально, она бы зачастую решалась элегантнее - например, добавлением дополнительной головы в основную модель. Она появляется, когда все вроде почти работает, и не хватает совсем чуть-чуть.
Вот сейчас у меня есть матрица расстояний в чем-то вроде матчинга, и нужно оценивать уверенность матча, потому что иногда лучше ответить ничего, чем неправильно. Сначала берешь собственно дистанцию, потом хочется добавить еще пару эвристик типа расстояния до second best кандидата, их нужно как-то взвешивать... Так что не надо брезговать классикой, и умение выжать лишний процент из линейной модели все еще полезно.
- определять резкую смену контекста (и необходимость сбросить стейт),
- детектить потенциальные ошибки или аномалии,
- слегка уточнять результаты сложного пайплайна,
- роутить инпут между компонентами,
- заполнять недостающий параметр, если в API вдруг не приходит какое-то поле, а менять что-то на клиенте слишком дорого,
- подсвечивать потенциальные проблемы человекам in the loop.
Этой модели никогда нет в изначальном дизайне: если проблема была бы заметна изначально, она бы зачастую решалась элегантнее - например, добавлением дополнительной головы в основную модель. Она появляется, когда все вроде почти работает, и не хватает совсем чуть-чуть.
Вот сейчас у меня есть матрица расстояний в чем-то вроде матчинга, и нужно оценивать уверенность матча, потому что иногда лучше ответить ничего, чем неправильно. Сначала берешь собственно дистанцию, потом хочется добавить еще пару эвристик типа расстояния до second best кандидата, их нужно как-то взвешивать... Так что не надо брезговать классикой, и умение выжать лишний процент из линейной модели все еще полезно.
Наткнулся на пост Top Python libraries of 2024, и набор библиотек в очередной раз затрагивает давно наболевшие топики:
1) несовершенство языка и пакетного менеджера (
2) все низкоуровневые штуки продолжают переписывать на rust;
3) главная проблема и в LLM-driven мире осталась все той же - перегонять данные из формата в формат, только к привычным HTML/JSON/markdown/датаклассам добавляются попытки сделать LLM-native форматы (BAML), LLM-native датаклассы (PydanticAI) etc.
Правда, из всего списка сколько-то массовый адопшен случился пока только у uv.
1) несовершенство языка и пакетного менеджера (
uv
вместо pip
, Whenever
как лучший datetime
, streamable
как альтернатива встроенным коллекциям, очередной генератор/валидатор типов...);2) все низкоуровневые штуки продолжают переписывать на rust;
3) главная проблема и в LLM-driven мире осталась все той же - перегонять данные из формата в формат, только к привычным HTML/JSON/markdown/датаклассам добавляются попытки сделать LLM-native форматы (BAML), LLM-native датаклассы (PydanticAI) etc.
Правда, из всего списка сколько-то массовый адопшен случился пока только у uv.
В канале есть примерно 1% лично знакомых читателей, которым может быть интересен пост уровня “дорогой дневничок, вот мои итоги года”. Но ведь это мои самые близкие читатели 👬! Придется писать.
✅ Запланировал и получилось:
- Пробежал 500+ км, включая свой первый полумарафон. Хобби, которое отлично сочетается с небольшими поездками в незнакомые города на выходные;
- Проплыл 100+ км, включая Босфор (всем рекомендую, лютый кайф!). Слегка горжусь, потому что по состоянию на начало года я плавать скорее не умел;
- Закончил с книгой, осталось дождаться бумажных копий. Кстати, сейчас у издательства распродажа до 1 января, но я ни на что не намекаю;
- Наконец-то сделал дома нормальное рабочее место (после пяти лет удаленной работы, за которые, впрочем, я сменил без малого десяток квартир).
❇️ Не планировал, но доволен:
- Съездил на ICML, чем обусловил победу Трампа. Отлично потусил, нужно чаще гонять на хорошие конференции.
- Вообще сколько-то путешествовал: +1 новая страна 🇭🇷, +5 новых городов 🇦🇹🇵🇹🇵🇱🇮🇹🇨🇾.
- Попробовал преподавать - провели один поток курса по ML System Design на базе книжки. И самому было интересно, и даже слушатели в основном остались довольны, но масштабировать пока не готов, отложу до более преклонных лет 👴, когда желание поучать молодежь станет главным драйвером.
- Формально стал senior staff ML engineer (что, конечно, больше говорит об инфляции тайтлов и прочих несовершенствах в HR практиках, чем о моих достижениях).
😿 Не получилось / не доволен:
- Съездить в US повидаться с корешами и коллегами - пани консул решила, что пошел бы я нахер вместо визы, а то слишком мутный тип, которого ничего не удерживает остаться нелегально машинлернить где-нибудь в SF bay area.
- Совершенно не прогрессировал в изучении польского, а ведь экзамен на kartę pobytu obywatela unii europejskiej уже в следующем году. Придется активно наверстывать!
- Без достижений по работе: неспешно дотащил новый проект из стадии полной неопределенности до стадии “пора планировать, сколько человеколет понадобится для того, чтобы прикрутить сюда фронтенд”. Были и изящные решения, но интегрально ближе к деградации. Вообще, работа в этом году была обделена вниманием, буду фиксить в 2025.
- redacted - здесь были какие-то еще более приватные пункты. Не думайте, что у меня ненормально высокая конверсия из хотелок в реализованное!
С наступающим Новым годом, и да пребудут с вами серендипность и множество хороших случайностей! 🎅
✅ Запланировал и получилось:
- Пробежал 500+ км, включая свой первый полумарафон. Хобби, которое отлично сочетается с небольшими поездками в незнакомые города на выходные;
- Проплыл 100+ км, включая Босфор (всем рекомендую, лютый кайф!). Слегка горжусь, потому что по состоянию на начало года я плавать скорее не умел;
- Закончил с книгой, осталось дождаться бумажных копий. Кстати, сейчас у издательства распродажа до 1 января, но я ни на что не намекаю;
- Наконец-то сделал дома нормальное рабочее место (после пяти лет удаленной работы, за которые, впрочем, я сменил без малого десяток квартир).
❇️ Не планировал, но доволен:
- Съездил на ICML, чем обусловил победу Трампа. Отлично потусил, нужно чаще гонять на хорошие конференции.
- Вообще сколько-то путешествовал: +1 новая страна 🇭🇷, +5 новых городов 🇦🇹🇵🇹🇵🇱🇮🇹🇨🇾.
- Попробовал преподавать - провели один поток курса по ML System Design на базе книжки. И самому было интересно, и даже слушатели в основном остались довольны, но масштабировать пока не готов, отложу до более преклонных лет 👴, когда желание поучать молодежь станет главным драйвером.
- Формально стал senior staff ML engineer (что, конечно, больше говорит об инфляции тайтлов и прочих несовершенствах в HR практиках, чем о моих достижениях).
😿 Не получилось / не доволен:
- Съездить в US повидаться с корешами и коллегами - пани консул решила, что пошел бы я нахер вместо визы, а то слишком мутный тип, которого ничего не удерживает остаться нелегально машинлернить где-нибудь в SF bay area.
- Совершенно не прогрессировал в изучении польского, а ведь экзамен на kartę pobytu obywatela unii europejskiej уже в следующем году. Придется активно наверстывать!
- Без достижений по работе: неспешно дотащил новый проект из стадии полной неопределенности до стадии “пора планировать, сколько человеколет понадобится для того, чтобы прикрутить сюда фронтенд”. Были и изящные решения, но интегрально ближе к деградации. Вообще, работа в этом году была обделена вниманием, буду фиксить в 2025.
- redacted - здесь были какие-то еще более приватные пункты. Не думайте, что у меня ненормально высокая конверсия из хотелок в реализованное!
С наступающим Новым годом, и да пребудут с вами серендипность и множество хороших случайностей! 🎅
Недавно влез в две похожие дискуссии про то, как злой AI украдет всю работу у программистов, когда LLM окончательно начнут писать код лучше нас (хаха, the bar is too low).
TL;DR: думаю, что сильно волноваться не надо.
1. Software engineering больше, чем просто писать код или даже возиться с инфрой (see also).
2. "Не надо бежать быстрее медведя, надо бежать быстрее геолога". Точнее, быстрее луддитов, который даже copilot не освоили и не хотят (see also).
3. Наконец, серьезный аргумент. Допустим, умные инструменты увеличат нашу производительность на порядок, скептики задаются вопросом, нужно ли миру на порядок больше софта. Но правильный вопрос звучит скорее как "нужно ли миру в X раз больше софта, если его стоимость снизится в X раз?".
Кажется, что да - есть длинный хвост задач, которые пока не решаются по экономическим причинам. В любом бэклоге хватает идей формата «вообще перспективно, но риски большие / expected value ниже, чем у альтернативных фичей». Не говоря уже о всякой мелочи, которая сейчас делается в экселе; а должна автоматизироваться - например, вносить налоговый вычет для купленного мной ноутбука должен AI agent, а пока что это делает специально обученный человек, тыкающий мышкой, копируя номер инвойса в декларацию. Женя @j_links подсказал, что эти мои диванные рассуждения вообще-то называются парадоксом Джевонса.
При всем этом, конечно, индустрия не может не измениться, старые карьерные пути инвалидируются, но будут какие-то новые. What a time to be alive!
TL;DR: думаю, что сильно волноваться не надо.
1. Software engineering больше, чем просто писать код или даже возиться с инфрой (see also).
2. "Не надо бежать быстрее медведя, надо бежать быстрее геолога". Точнее, быстрее луддитов, который даже copilot не освоили и не хотят (see also).
3. Наконец, серьезный аргумент. Допустим, умные инструменты увеличат нашу производительность на порядок, скептики задаются вопросом, нужно ли миру на порядок больше софта. Но правильный вопрос звучит скорее как "нужно ли миру в X раз больше софта, если его стоимость снизится в X раз?".
Кажется, что да - есть длинный хвост задач, которые пока не решаются по экономическим причинам. В любом бэклоге хватает идей формата «вообще перспективно, но риски большие / expected value ниже, чем у альтернативных фичей». Не говоря уже о всякой мелочи, которая сейчас делается в экселе; а должна автоматизироваться - например, вносить налоговый вычет для купленного мной ноутбука должен AI agent, а пока что это делает специально обученный человек, тыкающий мышкой, копируя номер инвойса в декларацию. Женя @j_links подсказал, что эти мои диванные рассуждения вообще-то называются парадоксом Джевонса.
При всем этом, конечно, индустрия не может не измениться, старые карьерные пути инвалидируются, но будут какие-то новые. What a time to be alive!
Мой главный вопрос по поводу the stargate project - чем же ответит Евросоюз 🇪🇺? Думаю, что нет времени на раскачку, настало время запрещать pytorch.
Moderately hot take: современный LLM-based AI engineering больше похож на времена до Imagenet moment, чем на эпоху расцвета диплернинга.
В эпоху до диплернинга (которую я застал краем глаза в контексте компьютерного зрения), в распоряжении инженера был набор стандартных инструментов, ни один из которых не был достаточно универсальным для end-to-end решения, и задачи решались набором костылей разной степени изящества. SIFT и другие ключевые алгоритмы уже придумали мудрецы в башне из слоновой кости, твоя задача - собрать из препроцессингов и эвристик что-то работающее для конкретной задачи и конкретного датасета. Кстати, тогда тоже были RAGи, и тоже работали так себе.
Во времена расцвета диплернинга, все больше задач стали решаться end-to-end, и потому ключевыми инструментами стали околоархитектурные изменения (включая знаменитый stack more layers) и, конечно, большие и чистые датасеты. Если предложить делать какой-нибудь adaptive histogram equalization перед инференсом какого-нибудь Resnet/Unet, в приличном обществе на тебя будут смотреть с опаской - пусть сеть сама это выучит, оставь свои древние штучки для аугментаций! Умение сделать кастомный лосс важнее умения придумать релевантную эвристику.
И вот с foundation моделями прошел полный оборот: большие модели делают умные GPU-rich ребята, соваться туда в подавляющем большинстве случаев бессмысленно, и надо снова придумывать пайплайны с эвристиками. Перебор разных фильтров в препроцессинге до сходимости был в той же степени хаком, как и идея добавлять wait в конец генерации; сейчас бы оно легло в парадигму test-time scaling и не считалось зазорным.
В эпоху до диплернинга (которую я застал краем глаза в контексте компьютерного зрения), в распоряжении инженера был набор стандартных инструментов, ни один из которых не был достаточно универсальным для end-to-end решения, и задачи решались набором костылей разной степени изящества. SIFT и другие ключевые алгоритмы уже придумали мудрецы в башне из слоновой кости, твоя задача - собрать из препроцессингов и эвристик что-то работающее для конкретной задачи и конкретного датасета. Кстати, тогда тоже были RAGи, и тоже работали так себе.
Во времена расцвета диплернинга, все больше задач стали решаться end-to-end, и потому ключевыми инструментами стали околоархитектурные изменения (включая знаменитый stack more layers) и, конечно, большие и чистые датасеты. Если предложить делать какой-нибудь adaptive histogram equalization перед инференсом какого-нибудь Resnet/Unet, в приличном обществе на тебя будут смотреть с опаской - пусть сеть сама это выучит, оставь свои древние штучки для аугментаций! Умение сделать кастомный лосс важнее умения придумать релевантную эвристику.
И вот с foundation моделями прошел полный оборот: большие модели делают умные GPU-rich ребята, соваться туда в подавляющем большинстве случаев бессмысленно, и надо снова придумывать пайплайны с эвристиками. Перебор разных фильтров в препроцессинге до сходимости был в той же степени хаком, как и идея добавлять wait в конец генерации; сейчас бы оно легло в парадигму test-time scaling и не считалось зазорным.
Пару дней программировал с Claude Code - это приложение-агент для терминала, которое умеет не только просто писать код, но и планировать, адаптироваться и выполнять команды локально. Весь инференс идет через Anthropic API, так что нужно подключить ключ и готовиться к затратам. Из коробки доступны базовые команды - view, edit, replace, glob, grep, выполнить произвольный баш, но можно и подключить свой MCP и адаптировать под себя. Сколько-то похоже на agent mode в Cursor, с которым я как-то не очень поладил (хотя inline автодополнение там клевое), а из опенсорсных решений напоминает Aider.
Я пробовал работать в двух проектах: один небольшой, но начат умными людьми и потому обладает некоторой структурой, второй я делал прям с нуля в режиме "вайб-кодинга". В обоих случаях у меня уходило что-то около 10 баксов в час, причем я старался вовремя сбрасывать контекст, чтобы счет меня не разорил. Когда осознаешь, что команда "run tests" стоит три цента, это вызывает странные незнакомые эмоции. Помимо денег, есть вопросы и к скорости: например, вчера перед сном я оставил агенту одну задачу и ушел, не закрывая ноутбук. Утром глянул результат -
Впрочем, скорость инференса - не единственный боттлнек. Пару раз ловил себя на мысли, что хочется печатать быстрее (или даже попробовать голосовой ввод) - обычно я думал медленнее, чем писал код, а тут хочется быстро командовать "эй, почини такой-то баг и прогони тесты".
Скучный бойлерплейт-код пишет отлично (в разы быстрее, чем я бы писал в редакторе даже с копайлотом или аналогом), дебажит неплохо, но, как и все LLM, может пойти по неправильному пути и нахерачить много дичи, надо вовремя останавливать и быть очень конкретным (например, жестко определять стек). Если не влезать в детали и давать недостаточно конкретные указания, будет так: "Бесконечная бессвязность за кажущимся смыслом, абсолютная неконсистентность, скачки мыслей и стилей между разными частями проекта. Полнейший ужас и хаос за кажущимся порядком".
Короче, пока немного сыровато, но буду иногда использовать. Хочется быстрее и дешевле; думаю, еще увидим в этом году.
See also: отзыв от Антона.
P.S. нашел пасхалку: через claude code можно заказать себе стикеры anthropic, но доставка только в 🇺🇸
Я пробовал работать в двух проектах: один небольшой, но начат умными людьми и потому обладает некоторой структурой, второй я делал прям с нуля в режиме "вайб-кодинга". В обоих случаях у меня уходило что-то около 10 баксов в час, причем я старался вовремя сбрасывать контекст, чтобы счет меня не разорил. Когда осознаешь, что команда "run tests" стоит три цента, это вызывает странные незнакомые эмоции. Помимо денег, есть вопросы и к скорости: например, вчера перед сном я оставил агенту одну задачу и ушел, не закрывая ноутбук. Утром глянул результат -
total cost: $5.90, total duration (API): 37m 11s.
Впрочем, скорость инференса - не единственный боттлнек. Пару раз ловил себя на мысли, что хочется печатать быстрее (или даже попробовать голосовой ввод) - обычно я думал медленнее, чем писал код, а тут хочется быстро командовать "эй, почини такой-то баг и прогони тесты".
Скучный бойлерплейт-код пишет отлично (в разы быстрее, чем я бы писал в редакторе даже с копайлотом или аналогом), дебажит неплохо, но, как и все LLM, может пойти по неправильному пути и нахерачить много дичи, надо вовремя останавливать и быть очень конкретным (например, жестко определять стек). Если не влезать в детали и давать недостаточно конкретные указания, будет так: "Бесконечная бессвязность за кажущимся смыслом, абсолютная неконсистентность, скачки мыслей и стилей между разными частями проекта. Полнейший ужас и хаос за кажущимся порядком".
Короче, пока немного сыровато, но буду иногда использовать. Хочется быстрее и дешевле; думаю, еще увидим в этом году.
See also: отзыв от Антона.
P.S. нашел пасхалку: через claude code можно заказать себе стикеры anthropic, но доставка только в 🇺🇸
partially unsupervised
Пару дней программировал с Claude Code - это приложение-агент для терминала, которое умеет не только просто писать код, но и планировать, адаптироваться и выполнять команды локально. Весь инференс идет через Anthropic API, так что нужно подключить ключ и готовиться…
Вдохновился постом о том, как использовать Claude Code для анализа структуры Claude Code и пошел по тому же рекурсивному пути: сгенерил при помощи Claude Code утилиту, чтобы логировать его же запросы. На первый взгляд, магии там мало - системный промпт, две базовые модели (sonnet 3.7 + haiku) и набор тулов.
Если хотите поковыряться своими руками, выложил результат на github.
Думаю, следующим шагом было бы интересно попробовать подменить базовые модели на что-то локальное.
Если хотите поковыряться своими руками, выложил результат на github.
Думаю, следующим шагом было бы интересно попробовать подменить базовые модели на что-то локальное.
Месяц как перекатился из мира, где комбинировал kNN и PCA, в мир MCP и ToT. Продолжая жонглировать акронимами, назову это мягким переходом из ML в AI - прототипирую некие инструменты для разработчиков, чем давно хотел заняться. Впечатления такие:
Во-первых, software engineering аспект стал прям важен! Раньше умение завернуть свою поделку в докер и высунуть хендлер уже считалось кое-каким уровнем, а умение покрыть это все хоть какими-нибудь тестами выделяло из толпы jupyter-писателей. Сейчас иначе: например, в первую неделю в рамках онбординга нужно было оптимизировать алгоритм обхода графа. Из других нетривиальных задач: придумать и добавить кастомное правило для линтера, спроектировать удобную стейт-машину поверх других низкоуровневых стейт-машин.
Во-вторых, LLM провоцируют выводить все на метауровень. Например, типичная итерация улучшения выглядит так: внес изменение, дальше в одну команду запустил пайплайн на сгенеренных сценариях, достал логи, проанализировал логи LLM-кой, сгенерил отчет, и только потом смотришь глазами на популярные failure modes. Все это занимает 10-15 минут (если не падает в рантайме, ыхыхы), так что итерироваться можно много и часто.
Во-третьих, порой ощущаю себя дурачком, во многом нужно разбираться с нуля и задавать коллегам неловкие вопросы. После рабочего дня голова часто трещит и настойчиво требует отдыха. Но главные навыки - декомпозировать проблему и анализовать ошибки - оказались абсолютно переносимы. Опыт таки пригодился!
(здесь могла быть реклама книги , и особенно глав про preliminary research и error analysis).
Во-первых, software engineering аспект стал прям важен! Раньше умение завернуть свою поделку в докер и высунуть хендлер уже считалось кое-каким уровнем, а умение покрыть это все хоть какими-нибудь тестами выделяло из толпы jupyter-писателей. Сейчас иначе: например, в первую неделю в рамках онбординга нужно было оптимизировать алгоритм обхода графа. Из других нетривиальных задач: придумать и добавить кастомное правило для линтера, спроектировать удобную стейт-машину поверх других низкоуровневых стейт-машин.
Во-вторых, LLM провоцируют выводить все на метауровень. Например, типичная итерация улучшения выглядит так: внес изменение, дальше в одну команду запустил пайплайн на сгенеренных сценариях, достал логи, проанализировал логи LLM-кой, сгенерил отчет, и только потом смотришь глазами на популярные failure modes. Все это занимает 10-15 минут (если не падает в рантайме, ыхыхы), так что итерироваться можно много и часто.
Во-третьих, порой ощущаю себя дурачком, во многом нужно разбираться с нуля и задавать коллегам неловкие вопросы. После рабочего дня голова часто трещит и настойчиво требует отдыха. Но главные навыки - декомпозировать проблему и анализовать ошибки - оказались абсолютно переносимы. Опыт таки пригодился!
Съездил на Gemma Dev Day. Пересказывать пресс-релиз про выход Gemma 3 смысла не вижу, но несколько вещей отмечу.
1) Действительно небольшая разница между 12B и 27B моделями + нативная поддержка квантования = отличный кандидат для локального использования, если это кому-то актуально. На макбуке с M4 Max 12B фигачит 36 токенов в секунду (для сравнения 27B выдает 16 т/сек).
2) Обещанная мультиязычность хоть и есть, но до совершенства еще далеко. На конференции активно хвастались, что помимо собственно знания языка модель прокачали в знании культурного контекста и прочего. Мне скоро предстоит экзамен по польскому, и потому в самолете активно вайб-чекал именно его: болтает нормально, если мучать вопросами грамматики, то даже я могу кое-где увидеть пробелы (а мой уровень польского очень посредственный!). Впрочем, какая-нибудь GPT-4o в этом смысле тоже не без греха.
3) Обещают function calling, но из коробки в ollama его нет. Разработчики говорят, что instruction following хороший, и потому для вызова функций надо просто детально описать инструкцию и потом самому парсить аутпут (привет, регулярки!). На нескольких семплах я бы сказал, что скорее работает даже в zero shot, но неидеально.
4) Всем участникам конфы досталось по футболке (ожидаемо) и по Jetson Nano Orin (неожиданно!). И еще более внезапно лично для меня футболка в моменте оказалась ценнее - опоздал на пересадку, ночевал в отеле аэропорта, но на утренний рейс пришел в свежей футболке! Надеюсь, что канплюктер окажется полезнее в долгосрочной перспективе.
P.S. Незапланированно повидался с Артемом @ai_newz и Григорием @gonzo_ML - ML мир все-таки тесный!
1) Действительно небольшая разница между 12B и 27B моделями + нативная поддержка квантования = отличный кандидат для локального использования, если это кому-то актуально. На макбуке с M4 Max 12B фигачит 36 токенов в секунду (для сравнения 27B выдает 16 т/сек).
2) Обещанная мультиязычность хоть и есть, но до совершенства еще далеко. На конференции активно хвастались, что помимо собственно знания языка модель прокачали в знании культурного контекста и прочего. Мне скоро предстоит экзамен по польскому, и потому в самолете активно вайб-чекал именно его: болтает нормально, если мучать вопросами грамматики, то даже я могу кое-где увидеть пробелы (а мой уровень польского очень посредственный!). Впрочем, какая-нибудь GPT-4o в этом смысле тоже не без греха.
3) Обещают function calling, но из коробки в ollama его нет. Разработчики говорят, что instruction following хороший, и потому для вызова функций надо просто детально описать инструкцию и потом самому парсить аутпут (привет, регулярки!). На нескольких семплах я бы сказал, что скорее работает даже в zero shot, но неидеально.
4) Всем участникам конфы досталось по футболке (ожидаемо) и по Jetson Nano Orin (неожиданно!). И еще более внезапно лично для меня футболка в моменте оказалась ценнее - опоздал на пересадку, ночевал в отеле аэропорта, но на утренний рейс пришел в свежей футболке! Надеюсь, что канплюктер окажется полезнее в долгосрочной перспективе.
P.S. Незапланированно повидался с Артемом @ai_newz и Григорием @gonzo_ML - ML мир все-таки тесный!
Googleblog
Google for Developers Blog - News about Web, Mobile, AI and Cloud
Gemma 3, the newest version of Google's open model family, introduces multimodality, enhanced reasoning, and support for 140+ languages.
По аналогии с афоризмом “в ходе следствия главное - не выйти на самих себя”, могу сказать, что в ходе разработки фреймворка для AI кодогенерации удалось сделать сам фреймворк совершенно непригодным для генерации. Например, вчера Claude предложил дописать примерно такое:
with HandlerTestTaskNode.run(**params) as ctx:
result = solve(lambda ctx: type('TypeContext', (), {'compiler': ctx.compiler})())
Старый приятель @peopleintech показал the best scam ever: приложение с гороскопами и прочей эзотерической мутью, а под капотом на самом деле - AI и когнитивно-поведенческая терапия. Надеюсь, в качестве дефолтной LLM там Gemini ♊
Вообще, на первый взгляд это смешно, а если задуматься, то такой UX не может не быть успешнее, чем стандартный чат-интерфейс с дополнительной парой кнопок поверх LLM API 🤔
Вообще, на первый взгляд это смешно, а если задуматься, то такой UX не может не быть успешнее, чем стандартный чат-интерфейс с дополнительной парой кнопок поверх LLM API 🤔
Вчера запекал баранью лопатку (вам же интересно мое чревоугодие? 🍖), и из этого вырос пост про случайность и скапулимантию.
Мы все знаем много алгоритмов, в которых случайность важна - в криптографии, оптимизации, ML, распределенных системах и так далее. А как насчет менее академических, более древних примеров? Теория вероятностей стартовала как прикладной инструмент для азартных игр, но я сейчас не про то, как Кардано играл в кости. Но кости в этом тексте еще будут упомянуты!
Давайте представим такую ситуацию: на некой территории живут племя охотников и стая вкусных животных (например, оленей или баранов). Охотники могут отходить от лагеря в поисках дичи в выбранном ими направлении. Олени хотят где-то пастись и избегать охотников. Предположим, что качество пастбищ на всей территории одинаковое. Каково оптимальное поведение для каждой группы с точки зрения базовой теории игр?
Если одна сторона будет предпочитать конкретное направление, то другая сторона адаптируется: охотники будут туда набегать / звери будут избегать этой местности. Таким образом, каждой стороне нужен источник случайности. Непонятно, как это решают олени и бараны, а вот у людей для этого давно были источники псевдорандома.
Например, гадание на лопатке. Алгоритм такой: охотник берет кость нужного зверя, нагревает на углях до образования трещин и трактует эти трещины как своего рода карту, выбирая направление для охоты. Поздравляю, теперь вы знаете, что ответить на интервью, если вас попросят задизайнить random number generator, имея остатки ужина и костер!
Фактоид честно украден из книги Джозефа Хенрика.
Мы все знаем много алгоритмов, в которых случайность важна - в криптографии, оптимизации, ML, распределенных системах и так далее. А как насчет менее академических, более древних примеров? Теория вероятностей стартовала как прикладной инструмент для азартных игр, но я сейчас не про то, как Кардано играл в кости. Но кости в этом тексте еще будут упомянуты!
Давайте представим такую ситуацию: на некой территории живут племя охотников и стая вкусных животных (например, оленей или баранов). Охотники могут отходить от лагеря в поисках дичи в выбранном ими направлении. Олени хотят где-то пастись и избегать охотников. Предположим, что качество пастбищ на всей территории одинаковое. Каково оптимальное поведение для каждой группы с точки зрения базовой теории игр?
Если одна сторона будет предпочитать конкретное направление, то другая сторона адаптируется: охотники будут туда набегать / звери будут избегать этой местности. Таким образом, каждой стороне нужен источник случайности. Непонятно, как это решают олени и бараны, а вот у людей для этого давно были источники псевдорандома.
Например, гадание на лопатке. Алгоритм такой: охотник берет кость нужного зверя, нагревает на углях до образования трещин и трактует эти трещины как своего рода карту, выбирая направление для охоты. Поздравляю, теперь вы знаете, что ответить на интервью, если вас попросят задизайнить random number generator, имея остатки ужина и костер!
Фактоид честно украден из книги Джозефа Хенрика.