life = curiosity + irreducible noise Whois: https://t.me/boris_again/1652 Лс: @btseytlin
На этом все, всем спасибо. Я все еще чувствую, что не смог передать всей сути и ощущения от этой игры. Но я попытался
Читать полностью…## Абсурдный реализм
В игре нужно:
* Вручную распихивать вещи по карманам. Не все вещи влезают в карманы. Например, лук вы не засунете даже в самое большое отделение рюкзака. Карманы могут быть внутри карманов: можно засунуть кобуру в рюкзак, а в кобуру бану с лекарствами, а в банку пилюли. Разные карманы имеют разную скорость доступа к предметам.
* Главное применение этой механики я нашел такое: можно сложить все не нужное для боя в рюкзак, чтобы перед боем его можно было быстро скинуть на землю, а потом поднять и идти дальше.
* Выбирать как носить одежду. Одежда надевается слоями. Ничто не мешает вам надеть трусы поверх дождевого плаща, но будет неудобно. Носки лучше надевать под обувь, а не поверх. Ничто не мешает надеть двое штанов. Но два шлема надеть не получится (ууу вот это косяк!).
Контроллировать диету персонажа, чтоб не разжиреть и не исхудать. Естественно еще как бы не травануться чем-нибудь. Поэтому осторожнее с мясом разных мутантов. Ничто не мешает питаться в основном человеческой плотью, если хочется.
И другое.
С одной стороным все это бесит своим микроменеджментом. С другой стороны это часть той самой интерактивности. Такие механики заставляют действовать примерно так, как ты действовал бы в жизни. Так же реализм соседствует с киберимплатнами, мутантами, потусторонними демонами, что разбавляет происходящее и не позволяет ему превратиться в дрочево.
## Геймплей
В Cataclysm вы создаете своего пресонажа, выбирая ему характеристики, бекграуд и прочие детали, и оказываетесь в только что пораженной апокалиптическим катаклизмом альтернативной Америке. Америка альтернативная потому, что еще до всякого катаклизма она была той еще антиутопией. Теперь почти все человечество превратилось в зомби, лавкрафтовские Mi-Go похищают выживших, триффиды Герберта Уэлса борются за территорию с фунгалоидами, инопланетная слизь скрещивается с живой природой, отчего животные мутируют в монстров. Посреди этой вакхаканалии находитесь вы. И все, никакой сюжетной линии, делай что хочешь. Мир уже все равно не спасти, поэтому придется выбирать себе занятие самостоятельно. Прямо как в жизни.
Благо нам дается очень интерактивный мир. Cataclysm имеет уникальную систему сущностей и их свойств, так что вы можете взаимодействовать с каждым объектом примерно так, как делали бы это в жизни. Например, кухонный нож. Можешь положить его в краман, но только если он влезает в этот карман. Можешь им бить. Можешь его метнуть. Можешь им есть. Можешь привязать его к палке и сделать импровизированное копье. Можешь сделать из него антенну для радио. Можешь расплавить его и перековать во что-то ещё. Можешь нагреть его на огне и прижечь рану. Все это относится не только к предметам, но и ко всем объектам в мире.
Первичная цель это выживание. В Cataclysm ваш кожаный мешок нуждается в еде, причем со сбалансированной диетой, воде, отдыхе, отсутствии рваных ран и прочих потребностях. Мир вокруг опасен, так что выжить непросто. Первое время все, чем вы занимаетесь, это умираете. Умираете очень много. Например, стандартная ошибка выжившего это проснуться и побежать сразу в ближайший городок, чтобы запастить припасами. Так сожранный зомбаками выживальщик узнает, что зомби хорошо видят. В следующий раз выживальщик пробирается в город ночью. Успешно собрав необходимый набор (рюкзак, холодное оружие, спички, консервированная еда, лекарства, полезные книги) он решает заночевать в подвале одного из домов. Но, проснувшись и открыв дверь, он видит толпу зомби на всю улицу. Так он узнает, что зомби еще и умеют находить жертву по запаху.
Освоившийся игрок выглядит примерно так. В руках копье собственной ковки, потому что позволяет бить зомби не подходя к ним вплотную. На теле гидрокостюм, поверх одежда и затем броня, потому что так ты полностью защищен от укусов. На разгрузке в ближайщем доступе висит обрез, пара гранат и коктейль молотова. Это панические кнопки: если из-за угла выскочит какая-нибудь демоническая хрень можно будет разнести ей морду двумя картечными или подорвать. И еще коктейль другого рода, из амфетаминов, кокаина и кофе, чтобы, если что, очень быстро убежать. Перемещается только на бронированном электромобиле с турелями и обзором исключительно по камерам. Скорее всего персонаж еще и имеет пару киберимплатнов и ряд мутаций от ночного зрения (полезно) до кошачьего хвоста (результат неудачных экспериментов).
Но как бы ты ни был хорош, как бы не готовился, всегда настает тот самый момент. Момент гордыни, когда ты решаешь пощеголять. “Я уже мастер ножевого боя, у меня тревожных кнопок хоть отбавляй, да я урою этого халка одним ножом!” И вот ты снова труп. Или это просто случайность. Кинул гранату, а шрапнель рикошетом прилетела тебе в глаз. Залез в подземелье, а гигантский червь разрушил путь обратно. Выстрелил в зомби, а это был бывший солдат-огнеметчик, и теперь вы оба горите. Взламывал компьютер в лаборатории, нажал не ту кнопку, и в тебя уже стреляют крупнокалиберные турели. В общем вы поняли: рано или поздно ты умираешь.
Эта борьба с враждебной средой очень круто разминает мозги. В каком-то смысле это головоломка, которую приятно разгадывать.
# Catclysm: Dark Days Ahead
Многие здесь за профессиональным контентом, поэтому я редко пишу про игры. Но не спешите переключаться. Сегодня я расскажу про очень необычную игру, которая для меня входит в разряд значимых жизненных опытов, а не только развлечений. Для меня она во многих списках “самых самых”: самое большое количество контента, самый крутой реализм (часто через край), самая крутая RPG, и так далее.
Речь про open-source roguelike “Cataclysm: Dark Days Ahead.” Если одним предложением, то это чрезмерно реалистичный симулятор выживания в киберпанк постапокалипсисе с перманентной смертью и абсурдной свободой действий.
Я без преувеличения играю в нее уже десять лет (помню как будучи junior javascript разработчиком тайком играл в нее на работе, не надо так). Не постоянно конечно. Игра разрабатывается организованной группой психов open-source контрибьюторами, некоторые из которых работают над игрой каждый день последние десять лет. Раз в несколько месяцев игра изменяется, пополняется контентом, делится на форки. Я периодически возвращаюсь и залпом проглатываю все, что появилось с моего последнего визита, и, наигравшись, оставляю игру снова.
Короткой серией постов расскажу, что в этой игре такого интересного.
https://blog.pragmaticengineer.com/software-engineering-salaries-in-the-netherlands-and-europe/
Читать полностью…Вы знаете что делать
http://t.me/boris_again?boost
Ребята запускают курс для продактов. Когда-то я работал аналитиком продукта и учился на ходу. В то время мне бы пригодился такой интенсив, поэтому не жалко поделиться/порекламировать
Читать полностью…При схожих весах для обоих circuits моделям требуется очень много времени, чтобы достичь высокого качества на тесте. Некоторые выходят на плато, а другие вообще не сходятся. Примечательно, что достаточно долгое обучение как правило приводит к идеальному качеству на тесте даже при маленьком датасете.
Читать полностью…Запускаем много раз обучение для разных размеров датасета. Для C_mem, чем больше датасет, тем больше норма параметров (тем “сложнее” решение). При этом логит становится не сильно больше, т.е. модель не становится увереннее в предсказаниях.
Для C_gen никакой структуры не наблюдается. При увеличении датасета норма параметров не меняется, т.к. модели не нужно запоминать новые примеры.
Подглядев за Ваней (/channel/adventures_somewhere), который сходил на митап любимого наси обоими блога ACX (www.astralcodexten.com), я нашел такой же в Лиссабоне. Лучшие полтора часа жизни за неделю. Наконец-то cнова оказался в привычном кругу интересных нердов, отчего и сам почувствовал себя интересным человеком. Была очень разная публика: один парень делает юридический софт на LLM, другой профессиональный игрок в покер, третий рисерчит что-то про то, как нам выживать в постапокалипсисе, а одна дама какой-то крутой юрист в эффективном альтруизме. Это конечно не калифорнийский weird ai safety sex cult, но все равно было прикольно
Читать полностью…https://bayesianinvestor.com/blog/index.php/2023/09/13/outlive/
Читать полностью…https://www.thelancet.com/journals/landig/article/PIIS2589-75002200111-X/fulltext
Читать полностью…😩
https://www.anthropic.com/index/anthropic-amazon
## Лор
Не буду сильно спойлерить, скажу кратко. Игра уникальна тем, что в ней мир заведомо за чертой спасения. Вы не герой и не можете спасти этот мир, что ломает все классические тропы повествования. Вместо этого вы можете лишь наблюдать, как Земля становится лишь одной из площадок столкновения нескольких существ из иных измерений, пожирающих вселенные.
Есть сторителлинг, который происходит исключительно через разбросанные клочки информации и сам мир. Например, если путешествовать по линиям метро, можно иногда обнаружить скрытые государственные лаборатории. И сделать вывод, что правительство похищало людей для экспериментов. Вы можете собрать историю по кусочкам и восстановить хронологию событий, приведших к катаклизму. Но в целом это не имеет значения.
Постепенно в погоне за выживанием вы прибегнете к модификации своего тела с помощью имплатнов или мутаций. Вы или умрете, или неизбежно потеряете свою человечность став одним из существ нового мира.
Так же прикольно, что лор создается множеством независимых людей, поэтому представляет из себя этакий шотландский ковер из множества кусочков. Это сильно выделяет его среди сфокусированных наративов обычных игр (а хорошо это или плохо решайте сами).
Одна из визитных карточек игры это машины. Вы можете собирать машины по кусочкам, любой конфигурации. Как правило все начинается с какой-то городским электрокаром, а заканчивается киллдозером с встроенной кухней, кузницей, очистителем воды, рейлганом на крыше, броней с шипами и так далее.
В недавних версиях завезли еще и вертолеты, но я пока не пробовал, потому что персонажа придется учить пилотированию
## Символы
Сразу про слона в комнате. Это игра из классических Roguelike, а значит графика выглядит так, как на первом скриншоте.
Разве не видите? Это ночной лес, вон там человек, яма, деревья, кусты. Немногие поймут, в чем же тут дело)))
Это олдовый вариант, с которого я начинал играть. Сейчас уже завезли tileset-ы, которые заменяют СиМвОлЫ на картинки. На втором скрине тот же самый ночной лес, но уже с тайлсетом.
Но я бы всем советовал прочувствовать игру в оригинале. Сначала играть так чрезвычайно тяжело. Затем мозг привыкает и распознает объекты. На последней стадии вы уже не замечаете символов, потому что мозг берет на себя рендеринг и делает его прямо в воображении.
Отсутствие нормальной графики дает игре огромное преимущество: порог для разработки контента максимально низкий. Хочешь добавить монстра? Найди неиспользованную букву на клавиатуре. Но самое главное запрограммируй его. Таким образом игра жертвует графикой в пользу геймплея и разнообразия. В результате в игре есть такие механики, которых не встретишь нигде больше. Аналогичная история с более известным представителем жанра игр для поехавших, Dwarf Fortress.
Нашёл еще лучшие практики. poetry
(лучший из всех худших пакетных менеджеров в Python-окружении) год назад решил сделать deprecation одного из способов установить poetry
в CI/CD окружении.
Помимо собственно сообщения о том, что этот способ скоро перестанет работать, они вмёржили рандомайзер(!), который с 5%(!) шансом ронял ваш CI/CD билд. Интересно, сколько человекочасов было потрачено на исследование падений таких билдов (и сколько онкол инженеров было поднято из-за этого).
Это конечно кринж и лучше так не делать никогда. Еще лучше даже не думать о возможности так сделать (но теперь вы знаете, что так можно 🌚️️️️️️)
Proofs
https://open.substack.com/pub/borisagain/p/it-will-not-flip-your-world
Читать полностью…#лабораторный_журнал
Тихо праздную год в Planet Farms и чуть больше года в Португалии.
За это время я с нуля создал сервис, который принес в компанию компьютерное зрение, обрабатывает по 40к - 60к изображений в день, встроен в операции и собирает данные.
Теперь ML на паузе, я разрабатываю архитектуру Data Warehouse, придумываю Data Policies и всякое такое прочее. Придумал очень классную и, как мне кажется, неконвенциональную структуру для таблиц на основе Domain Driven Design. Но не буду рассказывать, потому что это явное нарушение NDA ( 🙁 ).
Жизнь не малина только по двум причинам: кажется мне недоплачивают за то какой я молодец (какой айтишник так не думает?) и мне не нравится в Португалии. К сожалению не зашло и это тяготит. Переход на удаленку практически невозможен.
Впереди новый проект включающий в себя одновременно робототехнику и детекцию. Говорят он откроет возможность производить новые продукты. Биздевы уже нашли тех, кто купит у нас фабрику, если все получится. Опять же из-за NDA не могу раскрывать подробности. Могу лишь сказать, что мне почему-то очень страшно, ведь я такого никогда и близко не делал. Но благо есть руководитель, который на этом собаку съел.
Планы на среду: прокачать SQL и расчет продуктовых метрик!
📣 20 сентября в 19:00 по Мск пройдет бесплатный live-интенсив по теме: “Расчет продуктовых метрик с помощью SQL”.
Мы проводили такой интенсив в прошлом месяце, но многие не успели на него записаться, а очень хотели — поэтому мы решили, почему бы не провести его еще раз 😍
А еще он очень понравился участникам, и мы собрали много положительного фидбека 💫
👉🏻 На live-интенсиве мы с вами подключимся к реальной облачной базе PostgreSQL и с помощью SQL рассчитаем основные продуктовые метрики онлайн-сервиса:
* Activation rate
* MAU
* ARPU и ARPPU
* другие метрики
На интенсиве вы узнаете:
◾️ Как используют SQL в реальной работе — вы сможете сохранить это в портфолио и показать на собеседовании: работодатель точно оценит 🤘🏻
◾️ Профессиональные фишки и лайфхаки SQL: мы копили их годами и хотим рассказать вам 😏
◾️ Как писать код на SQL, а также мы расскажем про продуктовые метрики — подробно объясним всё с нуля 😍
🔗 Регистрируйтесь по ссылке
Реклама. ООО АЙТИ РЕЗЮМЕ. Erid: LjN8KD9BM
Для себя я сделал такие выводы:
* Нейросети способны изучать обобщаемые решения, т.е. они не просто статистические попугаи. Получается, что LLM вполне может строить настоящую модель мира, которая в пределе сходится к истине. Это так же подтверждается статьей, которую я не могу откопать, где модель играла в настольную игру, и покопавшись в ее мозгах ученые обнаружили, что она строит модель всей доски, а не только действий на шаг вперед.
* Существует критический размер датасета, который позволяет изучить обобщаемое решение. Если ты не наблюдаешь grokking, то или данных мало, или учишь недостаточно долго. К сожалению этот критический размер скорее всего очень большой.
* Внутри нейросети есть подсети, которые имеют обобщаемое решение. Было бы очень круто научиться их вытаскивать и выбрасывать все остальное. Вероятно мы увидим какой-то умный прунинг (умнее чем доступный сейчас), который позволит сжимать модели еще больше.
При дообучении на достаточно маленьком датасете нейросеть начинает снова отдавать предпочтение C_mem, качество на тесте падает, происходит ungrokking
Читать полностью…#обзор_статьи #ml
# Explaining grokking through circuit efficiency, Vikrant et. al
Я обожаю статьи где берут маленькую модель и изучают фундмантельные свойства нейронных сетей.
Статья про grokking: откуда он возникает. Grokking это явление, когда предобученная нейронная сеть сначала переобучается под тренировочные данные (трейн лосс идет вниз, а тест лосс идет вверх), а затем вдруг начинает обучаться обобщаемому решению (тест лосс идет вниз, трейн лосс остается маленьким). Раньше предполагалось, что происходит так: сначала нейронная сеть находит решение, которое идеально описывает трейн сет, а затем начинает под воздействием регуляризации перебирать разные решения, которые и описывают трейн сет, и имеют маленькую норму параметров. То есть нейросеть как бы ищет более простое решение задачи.
В этой статье авторы препарируют маленькую модель, чтобы разобраться в этом явлении.
Основная идея в circuits — механизмах, состоящих из множества нейронов, которые нейросеть использует для принятия решения. Грубо говоря circuit это набор нейронов, которые выполняют одну функцию. Например, предсказывают один класс (т.е. отвечают за один выходной логит). Подронее про circuits в моделях можно почитать на distil.pub в прошлых работах Chris Olah. Там довольно прикольно: например есть circuit отвечающий за распознавание Дональда Трампа в текстах и изображениях.
Авторы обнаруживают, что существует два семейства circuits. Первое, C_mem, запоминает тренировочный датасет. Второе, C_gen, изучает обобщаемое решение. C_mem зависит от количества данных. При добавлении одного примера в датасет C_mem приходится его запоминать, изменить решение и возможно сделать его чуть хуже. C_gen же имеет большую эффективность: при добавлении одного примера в датасет C_gen чаще всего предсказывает его верно и не меняется. Значит C_gen не может быть хуже C_mem, но чаще всего оказывается лучше. Таким образом достаточно обученный C_gen почти не зависит от размера датасета.
Эффективность C_gen авторы определяют следующим образом: норма параметров. C_gen выдает верные ответы на трейн сете, при этом норма параметров у него в среднем меньше, чем у C_mem. Таким образом C_gen может уменьшать оба компонента лосса одновременно: и лосс классификации и регуляризацию на норму весов.
С_gen обучается сильно медленнее, чем C_mem. Поначалу C_mem быстрее снижает лосс просто запоминая примеры, поэтому обучается первым. Однако с увеличением датасета оптимизатор отдает все больше предпочтения C_gen, т.к. тот получает решения с меньшей нормой параметров. При достижении некоторого критического размера датасета C_gen начинает “побеждать” C_mem из-за своей большей эффективности.
При размере датасета больше критического мы наблюдаем grokking. При размере датасета сильно меньше мы наблюдаем переобучение: C_mem имеет больший вес, трейн лосс идет вниз, тест лосс вверх. Наконец, при размере близком к критическому мы наблюдаем что-то среднее, близкое к типичному обучению модели: трейн лосс идет вниз, тест лосс выходит на плато
Если предположения авторов верны мы должны наблюдать два новых феномена:
* Ungrokking: при дообучении модели на маленьком датасете она начинает снова отдавать предпочтение С_mem и теряет способность к обобщению,
* Semi-grokking: при недостаточном количестве данных модель имеет схожие веса для обоих circuits, так что мы наблюдаем что-то среднее.
Чтобы подтвердить все это экспериментами авторы делают простую модель, где заранее задают C_mem и C_gen и наблюдают, как градиентный спуск меняет их веса. В качестве задачи используют сложение по модулю, а в качестве модели однослойный трансформер. В таком случае circuits представляют по сути lookup table для верных ответов, где C_mem содержит ответы для случайно сгенерированных данных, а C_gen верные ответы для настоящих данных.
Эксперименты подтверждают теорию, сейчас покажу картинки
Надеялся, что ChatGPT будет моим репетитором по математике и научит меня доказательствам.
Но она начала врать даже на детской задаче
# Этот простой трюк увеличивает продуктивность джуна вдвое, нужно лишь…
Мой джун сталкивался с такой проблемой: начинает работать над задачей, закапывается в нюансы и детали, пытается делать несколько вещей одновременно, оставляет много временного кода, чтобы не забыть свой процесс решения, запутывается. Вроде бы много работал, что-то делал, но ничего не было сделано.
На 1х1 подсказал ему такую вещь: deliverables. Каждый день или даже каждый час у твоей работы должен быть конкретный результат, которым можно поделиться (но не всегда нужно). Это может быть что угодно: релизнул фичу, написал класс, написал тест, разобрался в работе куска кода. Главное, чтобы это был маленький результат. Тогда ты переходишь из одного стабильного состояния системы в другое и маленькими шажками приближаешься к конечному результату. Это удобно совмещать с хорошими практиками git: один результат — один коммит, и каждый коммит оставляет систему в рабочем состоянии.
По итогам продуктивность заметно выросла. Дополнительный плюс: если делишься результатами с коллегами, просто отписав в слек чат, то все видят, какой ты молодец, становится приятно, и синдром самозванца отступает.
# Разыгрываю Playstation 5 в честь 5000 подписчиков!
Выберу победителя рандломайзером сегодня в 00:00. Как доставить придумаем после.
Форма для записи на розыгрыш здесь, оставляйте свой телеграм юзернейм .
———
Ладно, шутка, я по вашему миллиардер что-ли? Не заезженная шутка а золотая классика
Если серьезно, то спасибо, что вы читаете этот канал. Вы очень крутая аудитория для которой всегда интересно писать.
В последнее время я стал меньше писать про личное и больше про профессиональное. Давайте в честь такого события устроим AMA (ask me anything). Задавайте любые вопросы в комментариях, а я попробую честно ответить