TGViewer
Channel Public Channel
Заметки лида-раздолбая

Заметки лида-раздолбая

@laxcity_lead

Про всякое - спонтанно, нерегулярно, как на душу ляжет.

Про работу, программирование, кино, игры про все подряд.
Subscribers
1.17K
Photos
84
Videos
1
Links
133
Recent Posts 19 shown
Post #455 442
Интересное, конечно, золотая макось для M5 весит почти в 2 раза больше чем для М4🤔
Post #451 546
Уииии! /визжит как школьница при виде k-Pop demon hunters (и попкорн из глаз)

Теримнаторов показали (tactical dreadnought из space hulk).

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

https://youtu.be/5dKjhi90afk
YouTube Astartes II Teaser Trailer September 2026 – Warhammer+ | Warhammer 40,000 Deathwatch. Terminators. Coming to Warhammer+ this December. Subscribe to Warhammer+ today to watch more than 75 episodes of EPIC Warhammer animations: https://warhammerplus.com/ See all the reveals from the Big Autumn Preview on Warhammer Community: h…
  • 🔥 2
Post #450 665
Делал вчера в ночи сайт с документацией и как-то почему-то вспомнил про шейдеры в вебе.
В итоге соорудил себе лава-лампу и залипал в неё последующие полчаса =)

Кросивое.

Болюсь, правда, люди будут приходить почитать доку, залипать в лава-лампу и просаживать все запланированное время на втыкание в лава-лампу и в итоге не будут читать доку🤭
  • ❤ 8
  • 🔥 1
Post #449 981
Вчера, наконец, релизнул go-exhaustruct v5.2.0 с поддержкой go1.27 и дополнительно вкрутил возможность игнора blank-assignments (часто полезно для ситуаций проверки соответствия интерфейсу). Теперь останется дождаться нового патча golangci-lint и можно будет пользоваться.

К слову, пятая версия линтера, в силу отсутствия обратной совместимости, в golangci-lint доступна как exhaustruct_v5.
GitHub Releases · GaijinEntertainment/go-exhaustruct golang analyzer that finds structures with uninitialized fields - GaijinEntertainment/go-exhaustruct
  • 👍 4
  • 🔥 2
  • ❤ 1
Post #448 1.19K
А, ну и еще на этой неделе панируется релиз go-exhaustruct 5.1.

И я нахер НЕНАВИЖУ promoted embedded fields.

Я навреное не могу придумать штуки хуже, которую делали в го.
Мало того что 1.27 по-просту ломает существующий код (привет измененной аллокации массивов). Дак еще новый прекрасный стандарт привносит shadowing филдов внутри одной структуры👍

Я чет когда читал PR не понимал во что это выльется. А вот когда начал переделывать экзостракт, внезапно, понял что это –
за-лу-па.

Теперь у меня есть идея еще одного линтера. Интересно, кто первый внесет условный go-no-shadow в golangci-lint (ставлю против себя, потому что мне тупо лень).
  • 🔥 4
Post #447 999
Случился xkcd 927 и попутно самая тщеславная херня которую я делал.

С марта месяца я в сновном занимаюсь обузданием (обуздыванием?) ллмок в формате написания ревью туловины, котоарая на текущий момент ревьюит каждый коммит в геррит гайдзин. Пиииндец как интересно и именно поэтому задерживается следюущая глава про ллмки (да и там котента навалили с своими Claude 5 да китайцами новыми).

В общем, это вылилось в абсолютно фиерическое количество кода (сейчас это 20% нашей гошной монорепы, только го) и, в еще большее количество сопутствующих штук вокруг да около.

Например, в течение пары недель, если я не потону в чем-то еще, я выложу, условную альтернативу git-nexus и codebase-memory-mcp. Цели у туловины немного другие, но в агентской разрабоке оочень помогает. С черновиком я работаю уже 2 месяца и наверное это один из самых полезных mcp в арсенале. А еще оно на расте 🤦‍♂️ Ну нельзя отиндексироват граф зависимостей из 400к файлов на 6х языках за 20 секунд, оставаясь на гошке (учитывая что триситтер вообе на сях).

Даак вот. Самая большая головная боль - то как я пишу промпты для агентов (то как это было бы удобно поддерживать и читать) и то что агентам нужно – оно две пенпердикулярные штуки. Промпты, обычно – сместь commonmark и xml, отчего ни один из этих языков не рад.

А знааачит. Конечно же мы (Я) пилим свой формат.

А называться он будет Anton's eXtensible Prompt или `AXP`– по существу, смесь упрощенных CommonMark и XML с целью потребления модельками и, как вы поняли, удобства мейнтейнинга. Аж сразу в трех язках будет выпускаться: раст, го и тс.

Stay Tuned, как грица.
  • ❤ 3
  • 🫡 1
Post #446 1.08K
И в отпуске никуда не деться🗿
  • 😁 22
  • 😐 1
Post #445 1.34K
Если кто-то из вас досточно умалишенный чтобы пользоваться Gerrit: https://github.com/GaijinEntertainment/go-gerrit-mcp
Прошу.
К сожалению коллеги из гугла не понимают ни как работают агенты ни как агентов авторизуют, ни что вообще нужно братьям вайбкодерам. Поэтому пришлось делать своё. Грустно.

Я сделал не-грустно.

А еще проиллюстрировал нюансы спек-дривен-дизайна и "мощь" подхода DRAFT.
* часов назад ни этого репозитория ни конечного понимания как оно должно работать и распространяться небыло.

Был DRAFT и прототип в нашем локальном репо (который вообще не выглдяит как то что вы можете увидеть).

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

Не то чтобы я пытался както продать драфт – кроме приятных ощущений пониже пояса мне ничего с этого нет. Да и работает он совершенно точно не для всех и не всегда.
Я клоню к тому что подумать заранее и составить план намного важнее чем просто кидаться в разработку. И это почти аксиома. На теоретизацию потратится начтожно меньшее времени чем на реализацию по составленному плану.
GitHub GitHub - GaijinEntertainment/go-gerrit-mcp Contribute to GaijinEntertainment/go-gerrit-mcp development by creating an account on GitHub.
  • 👍 3
Post #444 1.04K
Заметки лида-раздолбая А новый The Ghost In The Shell ничотак. Весьма доставляет рисовка - она очень близко повторяет рисовку исходной манги. Вы здесь совершенно точно не увидите ни экзистенциальных кризисов из аниме 1995го, ни "взрослого" прагматизма синдрома одиночки 2002-2005х.…
К слову навеяло – из Stand Alone Complex, помимо опенинга который был частично на русском, мне максимально запомниалсь 17 серия второй сессии сериала.
В фильме заложили разрыв кусанаги с реальностью и непонимание "что же такое быть человеком если у тебя и тела небыло". То вот этот эпизод нагляднейше показывает "нечеловечность" Кусанаги.

• "ты маленький челик, и скорее всего помрешь скоро – давай секасом займемся"
• "я то какбы да, но тебе же наверное будет не очен приятно"
• "дак я сенсоры отключу"

То есть ей буквально без разницы на физическую оболочку, потому что для неё это просто кусок .. из чего там делают тела в 2030-м?
Боожечки как я орал в свои 15 лет когда это смотрел в первый раз.
Post #443 834
А новый The Ghost In The Shell ничотак.
Весьма доставляет рисовка - она очень близко повторяет рисовку исходной манги. Вы здесь совершенно точно не увидите ни экзистенциальных кризисов из аниме 1995го, ни "взрослого" прагматизма синдрома одиночки 2002-2005х.

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

Вопщем лайк. Это максимально далеко от мною, безмерно, любимого фильма (да строго говоря всей франшизы что была "до"). Но мне точно нравится.
  • ❤ 2
  • 👍 2
Post #442 696
Забавная штука у антропиков.
Я, конечно, не часто пересиживаю за это время, но все же.

Я живу в часовом поясе GMT+2 и если отсечка лимитов попадает на 3 ночи (тобишь в период с 3 до 4 ночи) 100 из 100 (на практике 6 из 6) - лимиты сбросятся на час раньше.
не соусем понимаю логику, но я же не один такой?
  • 🤔 1
Post #441 876
Ну и в догонку – скилл помогающий в работе с экосистемой charmbracelet для tui приложений на go: charm-tui.
В целом, если пилите какую-то TUI приложуху рекомендую их пакеты, я уже несколько лет пользуюсь - полностью доволен.
GitHub cc-foundry/plugins/golang/skills/charm-tui at master · xobotyi/cc-foundry Claude Code foundry - plugins, skills, and tools. Contribute to xobotyi/cc-foundry development by creating an account on GitHub.
  • 👍 7
  • 🔥 1
Post #440 722
В php плагине cc-foundry появился новый скилл - pest

Поможет агенту не запутаться в особенностях организации тестов в этом фреймворке и перестать смешивать синтаксис phpunit и pest.
GitHub cc-foundry/plugins/php/skills/pest at master · xobotyi/cc-foundry Claude Code foundry - plugins, skills, and tools. Contribute to xobotyi/cc-foundry development by creating an account on GitHub.
Post #439 1.13K
Релизнул обновление skill-enforcer плагина cc-foundry – адаптировал под новые реалии. Opus 4.8 на удивление хуже начал вызывать скиллы. А еще начал плеваться аутпутом, который должен был оставаться в ризонинге, в пользователя - выглядело некрасиво. Теперь красиво. И актуация скиллов будто даже повысилась в предыдущей версией.

Плагин теперь под себя требует меньше токенов - фреймворк нынче описывается примерно в 600 токенов (было 1000+) и напоминалки стали тоже компактнее.

В общем, если пользуетесь – обновляйтесь, если нет – зря🙃
GitHub cc-foundry/plugins/skill-enforcer at master · xobotyi/cc-foundry Claude Code foundry - plugins, skills, and tools. Contribute to xobotyi/cc-foundry development by creating an account on GitHub.
  • 👍 2
  • 🔥 1
Post #438 969
Но хоронить AdamW рано. Добрая половина статей-"убийц" 2023–2024 оказалась фокусом с не очень справедливым бейзлайном: исследователи выставляли свой вылизанный оптимизатор против кое-как настроенного AdamW. Стоило настроить по-честному — и скалярные претенденты вроде Lion и Sophia уложились лишь в 1.2x от AdamW, то есть абсолютно ничего выдающегося ("Fantastic Pretraining Optimizers", ICLR 2026, arXiv 2509.02046). В общем, пока что реальные соперники у адама — только matrix-based и только на больших моделях. А на дообучении одной модельки на одной видеокарте — можно по-прежнему брать AdamW.

Кстати, learning_rate не держат постоянным от начала до конца. Чаще всего, на старте идёт прогрев — шаг плавно увеличивают с около-нулевых значений, чтобы первыми же резкими движениями не разнести и без того едва живую инициализацию. Ближе к финалу наоборот: шаг плавно сбрасывают почти в ноль, чтобы модель аккуратно осела в найденную низину, а не проскочила её. А в 2025–2026 в моду вошёл другой подход: шаг держат постоянным почти весь прогон, а резко роняют почти в ноль лишь под самый конец — на финальной порции самых качественных данных.

Вот и весь цикл. Forward pass — модель сделала ставку. Loss — замерили, насколько модель промахнулась. Backward pass — раздал вину каждому параметру. Update — подкрутил веса. И с этой, чуть менее случайной, точки цикл начинается сначала, до тех пор пока нас не устроят значения loss.
  • 👍 1
Post #437 705
4.5. Update, retry, repeat.

Самый простой способ скорректировать веса градиентом — использовать его напрямую. Называется такой подход SGD (Stochastic Gradient Descent), и он до безобразия прост: параметр = параметр − learning_rate × градиент. По существу — мы двигаем каждое число чуть-чуть против его градиента, то есть в сторону, где ошибка меньше. Здесь у нас новый термин — learning_rate, длина шага.

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

Но чистый SGD на трансформерах сейчас не используют. Один общий learning_rate на все миллиарды параметров — это компромисс: у одних параметров градиенты крупные, у других еле заметные, и одна ставка шага на всех всегда кому-то да выйдет боком. Задерёшь повыше — крупные пойдут вразнос; прижмёшь — мелкие будут ползти как улитки. Хочется, чтобы у каждого параметра был свой, персональный шаг. Так и появился AdamW — де-факто стандарт обучения LLM аж с 2017 года.

Если не углубляться в матан — AdamW заводит на каждый параметр пару чисел. Первое — momentum: куда этот параметр стабильно толкало в последнее время. Второе — насколько его при этом болтало: ровно тянуло в одну сторону или дёргало туда-сюда. "В последнее время" — это не какие-то конкретные N шагов: AdamW не хранит историю, а каждый шаг лишь чуть подправляет оба числа свежим градиентом, так что след старых в них плавно тает. Из этих двух чисел и собирается персональный шаг. В этом, кстати, и весь смысл названия: "Adam" — это adaptive moment estimation; те самые "моменты" (moments) — наши два числа, а "adaptive" — про подстраивающийся под каждый параметр шаг. Ну а буква "W" — это weight decay, отдельный постоянный коэффициент: сверх персонального шага он каждую итерацию ещё и тянет все веса понемногу к нулю, чтобы те не разбегались в бесконечность.

Так что к обучению добавились ещё по два числа на каждый параметр — и оба в FP32, по 4 байта, даже когда сами веса ужаты в FP16. На ту же 70B-модель это +560 гигабайт под один только оптимизатор — вдвое больше, чем весят все её градиенты, и вчетверо больше самой модели. Попытка сделать получше снова больно бьёт по железу, ну и по кошельку.

Сам AdamW — единственное в этой главе, о чём есть смысл спорить. Почти девять лет у него не было конкурентов: учишь модель — берёшь AdamW, не глядя. Какой-то прогресс в этом направлении начался лишь в 2024–2026, когда подъехал целый класс matrix-based оптимизаторов. Если AdamW крутит каждый параметр по отдельности, matrix-based работают сразу с целыми матрицами весов, ловя связи между числами внутри: за счёт этого они доходят до того же результата за меньшее число шагов. Шаг хоть и становится тяжелее, но утяжеляют его перемножения матриц, с которыми GPU справляются очень эффективно, так что в сумме обучение всё равно получается быстрее. Shampoo на бенчмарке AlgoPerf 2024 дошёл до целевого качества на 28% быстрее настроенного AdamW (MLCommons); Muon на 16B-модели добился того же результата вдвое дешевле по вычислениям (arXiv 2502.16982), а в апреле 2026 на нём обучили DeepSeek V4 на 1.6 триллиона параметров — впервые не-AdamW дотянул до frontier-масштаба в продакшене.
  • 👍 2
Post #436 449
4.4. Backward pass: ищем виновного

После вычисления степени промаха переходим к стадии Backward pass — модель оперирует loss и миллиардами параметров, которые на неё повлияли. Вопрос ровно из заголовка: кто виноват в промахе и насколько? Та самая "вина" из прошлых глав тут наконец обретает точное имя — градиент. Градиент одного параметра отвечает на простой вопрос: "если чуть-чуть подкрутить вот это число, насколько сдвинется общая ошибка?". Чем выше значение градиента, тем больший вклад параметр внёс в ошибку, а значит, получит корректировку в большей мере.

Считается всё через backpropagation, что как бы следует из названия этапа. В сравнении с forward pass, мы разворачиваемся и идём от output projection к embedding-весам. Связано это с тем, что результат каждой группы зависит от того, что в неё передала предыдущая, поэтому градиенты считаются в обратном порядке, для каждой группы отдельно. То есть, например, так как во время forward pass мы передавали векторы из FFN в output projection, чтобы рассчитать градиенты для FFN, надо сначала, чтобы output projection "перенаправил" ошибку в FFN блок.

Коррекция ошибки начинается, как мы уже выяснили, с output projection. Для этого этапа градиент — это просто разница между тем, что модель предсказала, и тем, что было правильно. Правильный токен известен, в обрабатываемом векторе выставляем ему вероятность 1, а всем остальным — 0. Из выдачи модели вычитаем эталонное распределение и получаем исходный градиент.

Помните, я говорил, что в отличие от обычного инференса, при обучении модель сохраняет промежуточные данные? Дак вот эти данные: "активации" — состояния векторов на границах этапов. Вот здесь они и пригодятся — перемножим входящие градиенты на активации этой группы и получим градиенты этой группы (я упростил, не тупо умножаются, конечно же).
Градиент для каждого блока сохраняется, для того чтобы быть применённым при обновлении весов.
А для того, чтобы передать градиенты дальше по цепочке (теперь уже в FFN группу), входящие градиенты перемножают с весами группы.

Повторяем, пока не дойдём до группы эмбеддингов. Когда закончим, градиенты будут умножены на веса каждой группы (кроме эмбеддингов) ровно один раз. На руках у нас окажется градиентов по количеству параметров. И уже здесь можно увидеть намёк на причину дороговизны обучения моделей. Даже на небольшую 70B модель нам потребуется под 280 гигабайт, лишь чтобы хранить градиенты, и это не считая самих весов.

На больших моделях проблемой становятся не только ресурсы, но и целостность сигнала. Пока градиенты протаскивают через все блоки и слои (этот термин я пока оставлю нераскрытым), сигнал градиентов может либо затухнуть — тогда embedding-веса не будут получать коррекции и так и останутся шумом. Либо же, напротив, произойдёт лавинный эффект, и в лучшем случае мы получим бесполезные веса, в худшем — где-то вылезет NaN, и весь прогон обучения можно сразу завершать и списывать в убытки.
Против обеих бед выработан стандартный набор приёмов — residual connections, нормализация, gradient clipping. Первые два — уже про устройство модели, доберёмся до них в Части 4; а clipping прост и груб: если градиенты разрослись за порог (обычно около `1.0`), их принудительно обрезают, чтобы как-то ограничить оверкомпенсацию.

К исходу backward pass на руках у нас градиент для каждого параметра — вина роздана сполна. Вот только сам градиент веса не двигает: он лишь говорит, куда и насколько крутить. Осталось пустить его в дело — это и есть последний шаг одной итерации цикла обучения модели.
  • 👍 1
Post #435 580
4.3. Loss: весь промах в одном числе

Продолжая игорную тематику: "ставки сделаны, ставок больше нет" — пора оценивать результат. Forward pass выдал распределение, правильный ответ известен; осталось оценить степень ошибки. Для этого вычисляют единственное число — loss, а считают её через cross-entropy. Перекрёстная энтропия, в свою очередь, меряет, насколько уверенно модель поставила на правильный ответ.
Если верный токен получил высокую вероятность — loss будет стремиться к нулю. Ну а если вероятность мала (обычно значит, что высокая вероятность у какого-то другого токена) — loss зашкаливает. Прелесть подхода в том, что делать вычисления по всему распределению не нужно: правильный токен один и известен заранее, так что от немаленькой формулы cross-entropy остаётся единственное слагаемое — −log(p), где p — вероятность, которую модель дала правильному токену. p = 0.9 даёт около 0.1, а p = 0.01 — уже 4.6.

У такого подхода есть еще дополнительный, но очень важный нюанс. Уверенная чушь штрафуется куда жёстче, чем честное "не знаю". Оставила правильному токену хоть сколько-то приличную вероятность — отделается умеренной loss. А пошла ва-банк и отсыпала 99% одному неправильному токену — на правильный остаются крохи, вот loss и взлетает до небес. То есть цикл, шаг за шагом, "отучает" модель быть уверенной и неправой. Галлюцинации на инференсе это, увы, не лечит — но почему, мы уже разобрали в предыдущей главе.

Для понимания масштаба: loss около 0.1 — модель отличная, около 5 — не понимает ничего. Но loss живёт на логарифмической шкале, и на глаз по ней тяжело понять, насколько всё плохо. Поэтому её часто переводят в перплексию — возводят e в степень loss. Читается это число просто: из скольких равновероятных вариантов следующего токена модель будто выбирает наугад. Если loss 0.1 перплексия будет примерно 1.1, ну а если loss 5 - примерно 150. Сравнивать перплексию и соответственно loss между моделями бесполезно, т.к. на неё напрямую влияет токенизатор и корпус обучения, а они у всех разные.

И еще, про loss легко подумать, что это чисто внутренняя кухня и параметр для backward pass. Но есть и второе назначение, не менее важное: именно по loss понимают, когда обучение пора заканчивать. Цикл обучения крутят не вслепую. Пока loss ощутимо падает, молотят дальше; как только кривая выполаживается и каждый проход срезает уже сущие крохи — всё, дальше дорого и почти без толку. На дообучении (fine-tuning) за ней следят ещё пристальнее — там по loss ловят момент, когда модель начинает не учиться, а зубрить; но это уже разговор для главы про стадии обучения.
  • 👍 1
  • 🔥 1
Older posts →

About this channel

How can I read @laxcity_lead without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Заметки лида-раздолбая: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Заметки лида-раздолбая have?
Заметки лида-раздолбая (@laxcity_lead) has 1.17K subscribers on Telegram, refreshed roughly every 30 minutes.
Does Заметки лида-раздолбая know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →