Борис опять
15.1K subscribers
1.44K photos
72 videos
30 files
1.48K links
life = curiosity + irreducible noise

Whois: https://xn--r1a.website/boris_again/3400

Лс: @btseytlin
Download Telegram
# Нечего добавить? Не усложняй

Не знаю отчего, но очень популярен такой паттерн:

try:
do_thing()
except Exception as e:
logging.error("Doing thing failed")
return None


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

Прямо сегодня я столкнулся с этим в langchain (конечно же 👀). Он имеет привычку прятать все внутренние ошибки и заменять их на свои, абсолютно бесполезные.

Причем это не только про Python. Думаю у всех такое было, что на каком-нибудь сайте вылетает: "Что-то пошло не так!" Давай, детектив, разгадай в чем проблема.

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

Возможно есть какое-то суеверие, что у пользователя будет разрыв мозга если он увидит "exception KeyError(...)" вместо "Произошла ошибочка 😳🥰." Однако второй вариант ни капли не понятнее первого!

Есть редкие продукты которые просто показывают ошибку. Примерно в половине случаев я могу догадаться в чем проблема и обойти её. Во второй половине случаев я могу хотя бы скопировать ошибку когда обращусь в тех поддержку.

Существуют очень редкие случаи когда нельзя показывать ошибки из соображений безопасности. Это исключения.

🔹🔹🔹

Просто верни ошибку как есть. Не усложняй.

Перезапись ошибки другой информацией имеет смысл только если это лучше помогает решить проблему. 🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6617👎2🤔1
Это не только про ошибки, а про прозрачную коммуникацию в целом.

Например, сейчас много продуктов используют LLM и позволяют выбирать среди нескольких опций. Часто можно увидеть подобный выбор вариантов:
- GPT-4o v08
- Claude Sonnet 3.7 v2
- Gemini Pro 1.5 v3

Знаете какие должны быть варианты?
- gpt-4o-2024-08-06
- claude-3-7-sonnet-20250219
- gemini-1.5-pro-latest

То есть ровно такие названия, как у производителей.

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

Наконец, это не только про программирование и даже не только про IT. Это применимо когда мы строим любые системы которые коммуницируют между собой. Меньшее, что мы можем сделать, это не вносить шум в коммуникацию.

Если тебе нечего добавить к сообщению, то передай его как есть. Если что-то добавляешь или убираешь, то убедись, что этим ты делаешь лучше.
👍1028🤔4👎2
T-Bank выложил очень подробный пост на Хабр про предобучение моделей T-lite и T-pro.

Напомню, что T-Lite и T-Pro это опубликованные в 2024 опенсорс русскоязычные модели на 7 и 32 млрд параметров, обе доступны на HF.

Обе модели являются адаптациями Qwen-2.5 под русский язык, а не предобучением с нуля. Это позволяет кратно сократить затраты на обучение и воспользоваться качеством базовой модели. Однако всё равно есть этап continual pretraining, то есть не нужно путать это с простым SFT finetuning. Сейчас на такой подход перешли все кроме GigaChat.

Раньше обучение этих моделей описывали достаточно крупными мазками и нам показывали бенчмарки.

В новом посте выложили все детали обучения:
- Двухстадийное предобучение (continual pretraining): Stage 1 на 100B токенов и Stage 2 на 40B токенов
- Состав датасетов для каждой стадии, включая доли языков и источников
- Детальный пайплайн обработки данных с фильтрацией
- Технические детали обучения: гиперпараметры, расписание LR, размеры батчей
- Instruction masking во второй стадии
- Результаты экспериментов и аблейшнов

Очень много подробностей. Таких материалов крайне мало. Вдвойне ценно, что поделились тем, что не сработало.

Дальше обещают ещё один лонгрид про post-training (SFT и alignment).
38👍147🔥3
Делать стартап - это значит делать много вещей сразу, но обычно это значит делать все вещи плохо

Но GenAI многое поменял - теперь я могу делать ещё больше вещей и ещё хуже
159👍34🔥7👎1
AI мальчика: элайнмент, RLHF, Constitutional AI

AI мужчины:
🔥6051😢3
# Vibecoding vs pycocotools часть II: Cursor

Недавно я проверил, может ли Claude Code Agent написать для нас небольшую Python библиотеку: pycocotools здорового человека. Он не смог.

Сегодня я проверил может ли Cursor. Задача была ослаблена до того, может ли Cursor в неавтономном режиме (на агентов пока надежды нет) помочь мне написать библиотеку быстрее, чем я написал бы её сам.

Я записал час вайбкодинга на видео (сам вайбкодинг начинается с 20 минуты).

Как и в прошлый раз посмотреть как и куда я пришел можно в этом репозитории (только не забудьте смотреть в ветку `cursor`):
https://github.com/btseytlin/sane-coco/tree/cursor

Ниже опишу свои выводы
Media is too big
VIEW IN TELEGRAM
15👍7
В целом опыт на три с плюсом, почти четыре.

Сначала про плюсы. Очень приятный интерфейс. Cursor конечно монстр UI/UX. Очень простое погружение и онбординг. Самое главное: это работало. Если claude code agent за два часа работы не приблизил меня к желаемому результату, то здесь наблюдается прогресс. То, что осталось после часа работы, гораздо лучше, чем ничего. Cursor гораздо лучше понимал целевой вайб. В целом прикольно.

Однако мне кажется, что без курсора я бы продвинулся примерно так же. Было слишком много случаев когда агент шел не в нужную сторону, но это не было сразу очевидно, чтобы просто откатиться. Поэтому позже приходилось разбираться. В итоге процесс работы прерывается и приходится выходить из режиме решения задачи и переходить в режим "разбираемся в коде незнакомого интерна."

Самый неприятный момент (начинается около 57 минуты) был когда ассистент написал вызов трех методов:
1. Распарсить категории.
2. Распарсить изображения.
3. Распарсить аннотации.

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

Ничего, поправили. После шага парсинга аннотаций добавился шаг связи аннотаций и изображений (в COCO формате их надо сопоставить друг-другу). Потом ассистент пошел прогонять тесты, начал их править, внес множество изменений. И удалил шаг связи, который только что добавлял. Но вдруг тесты проходят!

Я смотрю в код и не понимаю как так может быть. То есть аннотации парсятся, результат записывается в переменную, а потом она нигде не используется. Её даже VSCode подсвечивает: смотри, этот кусок кода не нужен.

Получается мы распарсили аннотации, потом просто выбросили их, а тесты всё равно проходят. Не должно работать, но работает – очень плохая ситуация. Значит или тесты неправильные, или код работает не так, как мне кажется. Оказалось второе. На самом деле вторая функция, которая парсила изображения, уже записывала всё куда нужно. То есть она выглядела будто там нет сторонних эффектов, будто это правильная "делаю одну вещь" функция, а на самом деле это была подстава 👀.

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

Дело так же в качестве. Я поймал эту проблему только потому, что у меня очень четкое представление о том, что я хочу получить. И то она вскрылась случайно. Как много программистов заботятся о том, чтобы каждая функция делала одну вещь? Может процентов десять. Как много не-программистов/вайбкодеров? Ноль. Значит 90% программистам и 100% вайбкодерам Cursor поможет написать код со скрытым приколом 🙄. В общем готовьтесь через пару лет поддерживать чье-то курсорное легаси где возможно всё и в любом куске кода может обнаружиться пасхалка.

В общем смешанные ощущения. Но скорее положительные. Однако точно не идет речи ни о каком "В 100Х РАЗ ЛУЧШЕ ПРОГРАММИСТЫ НЕ НУЖНЫ!1!11" Я напоминаю, что мы тут всё ещё пытаемся прочитать JSON с диска.
Please open Telegram to view this post
VIEW IN TELEGRAM
59👍405🔥1
Вот это пожалуй лучший перл LLM кода сегодня 👀

Работало кстати
Please open Telegram to view this post
VIEW IN TELEGRAM
561
Так же Cursor практически не помогает думать. Я прошу написать тесты: он пишет тесты, где проверяет, что всё работает. Но пока не попросишь он не напишет негативные тесты. То есть он не будет без твоего пинка проверять, что то, что не должно работать, действительно не работает. И не скажет о том, что так нужно делать.

Так что программистский навык не обесценивается. Возможно, наоборот, теперь нужно два навыка:
1. Умение делать хорошо.
2. Умение распознать где LLM может тебя обмануть.
73👍259👎2
Блин, это слишком хорошо. Cursor не может заставить pycocotools работать в тестах и поэтому решил его выпилить

...из регрессионных тестов библиотеки которую мы пишем на замену pycocotools
142👍7
😀
Please open Telegram to view this post
VIEW IN TELEGRAM
35😢7
Любишь vibecoding люби и
😢70485
Hold up
186🤔11👍2😢1
Forwarded from epsilon correct
Gemma 3

Выкатили семейство очень добротных моделек, нацеленных на локальных юзеров. Размеры 1, 4, 12, 27B, но зато 4-27B модельки со зрением и 128к контекста! По MMMU обогнали Gemini 1.5 Flash и вплотную подобрались ко второму флешу.

По бенчмаркам не так сильно обогнали Gemma 2, но моделька сильно лучше разбирается в социальных науках, бизнесе, психологии. Особенно хороший прирост на европейских языках, но под шумок я долил и русского. 👉

Блогпост
Tech report
HuggingFace
Потыкать модель можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥385👍4
https://x.com/emollick/status/1901431681279475808

🔹LLMs produce funnier memes than the average human, as judged by humans.
🔹Humans working with AI get no boost.
🔶The best human memers still beat AI, however. 💪💪💪

Лучшие хьюман мемеры, вся надежда на вас 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
286👍2
👍1
https://mistral.ai/news/mistral-small-3-1

Внезапно мистраль выложил 24B мультимодальную модель Mistral Small 3.1, которая бьет GPT-4o Mini, Claude-3.5 Haiku и недавно вышедшие Gemma 3 (27B) и Cohere Aya Vision (32B).

Конечно подождем результатов на арене, но если подтвердиться, то считайте можно запускать бесплатную и улучшенную GPT-4o Mini на своём макбуке
🔥54👍62
😎😎😎😎😎

Я конечно согласился, ждите
Please open Telegram to view this post
VIEW IN TELEGRAM
175🔥18👍52