Я давно перестал любить работу и вам советую
На дворе 2020 год, и я работаю в Москве в лабе Самсунга. Это уже моя четвёртая работа, если считать первую стажировку, и за это время я перепробовал разные форматы - продуктовый Data Science, чистый ресёрч, прикладной ресёрч, и разные подобласти ML - табличную классику, RL, NLP, GAN-ы и др.
Спустя 4 года опыта ко мне пришла такая мысль - а чем я вообще занимаюсь? Точнее, буквально - на что я физически трачу время на своей работе?
На «интересную» часть работы - творческий дизайн каких-то решений - у меня всегда уходила минимальная доля времени, и я даже бы не сказал, что в ресёрче эта доля была выше. Я осознал, что вне зависимости от контекста, подавляющая доля времени уходит на поиски ответа на вопрос «Почему это говно не работает?»
Сделал прототип своей ресерч идеи? Отлично, теперь в N раз больше времени уйдет, чтобы понять, почему результаты сосут.
Сделал трансформер для нового сервиса? Теперь неделями дебажишь его экспорт и применение.
Написал новую компоненту? Ну вы поняли.
На заре карьеры моей второй опцией было пойти в геймдев. Пару месяцев назад я посмотрел весьма любопытное интервью с разработчиком движка из Grinding Gear Games (Path of Exile).
Как вы думаете, чем он в основном занимался последние месяцы перед интервью? Красивой графикой? Оптимизацией игры? Новыми механиками? Ага, щас.
Когда игра вышла в ранний доступ, игроки иногда испытывали проблему с крашем. Это стало задачей номер 1 для команды. В логах не было никакого паттерна, вылетало просто на вызове рандомных шейдеров.
У команды было много гипотез, и они внимательно изучали код, находя один за одним баги, которые в теории могли вызвать такую проблему. Ничего не помогало.
Спустя время поняли, что система в процессе игры иногда перестает видеть видеокарту в системе. Они пошли общаться с NVIDIA, и инженер с той стороны так и не смог ничем помочь.
В итоге, спустя месяцы мучений, команда пофиксила движок так, чтобы он был тупо устойчив к тому, что видеокарта пропадает из системы, и после восстановления сигнала инициализирует её заново.
Вот, чем занимаются разработчики игр.
Эта история жёстко напомнила мне мои студенческие годы, когда я, будучи криворуким, тратил дни на то, чтобы настроить CUDA-драйвера для Tensorflow. Получается, что не такими уж и разными вещами мы занимаемся.
Работа не предназначена для получения удовольствия от интересного занятия. Для этого есть хобби, пет-проекты, убыточный бизнес. Работая по найму, вы большую часть времени будете проводить за копанием в говне. Компьютерное зрение, NLP, рекомендации - все это отличается только контекстом, а говно будет везде пахнуть одинаково.
Уборщику, который чистит унитазы, не важно, кто в них срёт - Илон Маск или Вася Пупкин. Да, можно себя убедить в том, что твои унитазы для очень важных людей, но… достаточно уже про говно, в общем. А у разработчиков всё почти то же самое.
Осознав всё это, мне стало всё равно, чем заниматься. Я не ищу удовольствия на работе. Когда я уйду из рекомендательных систем, я больше не открою ни одну статью на эту тему. Если бы мне предложили с теми же карьерными перспективами верстать сайт для общества любителей пива, мне было бы в целом по барабану.
Вместо этого, лучше думать о том, как поскорее сделать так, чтобы можно было не работать вообще - вопрос каких-то нескольких миллионов долларов. Думайте о том, чем вы будете заниматься после освобождения от бедности. Начните делать это в небольшом количестве уже сейчас. Ищите своё счастье.
@knowledge_accumulator
P.S.
У всего есть свой предел. Я слышал, в одной компании нужно несколько месяцев читать онбординг-гайды, параллельно накручивая метрику количества коммитов для перфоманс ревью. Там я бы застрелился.
На дворе 2020 год, и я работаю в Москве в лабе Самсунга. Это уже моя четвёртая работа, если считать первую стажировку, и за это время я перепробовал разные форматы - продуктовый Data Science, чистый ресёрч, прикладной ресёрч, и разные подобласти ML - табличную классику, RL, NLP, GAN-ы и др.
Спустя 4 года опыта ко мне пришла такая мысль - а чем я вообще занимаюсь? Точнее, буквально - на что я физически трачу время на своей работе?
На «интересную» часть работы - творческий дизайн каких-то решений - у меня всегда уходила минимальная доля времени, и я даже бы не сказал, что в ресёрче эта доля была выше. Я осознал, что вне зависимости от контекста, подавляющая доля времени уходит на поиски ответа на вопрос «Почему это говно не работает?»
Сделал прототип своей ресерч идеи? Отлично, теперь в N раз больше времени уйдет, чтобы понять, почему результаты сосут.
Сделал трансформер для нового сервиса? Теперь неделями дебажишь его экспорт и применение.
Написал новую компоненту? Ну вы поняли.
На заре карьеры моей второй опцией было пойти в геймдев. Пару месяцев назад я посмотрел весьма любопытное интервью с разработчиком движка из Grinding Gear Games (Path of Exile).
Как вы думаете, чем он в основном занимался последние месяцы перед интервью? Красивой графикой? Оптимизацией игры? Новыми механиками? Ага, щас.
Когда игра вышла в ранний доступ, игроки иногда испытывали проблему с крашем. Это стало задачей номер 1 для команды. В логах не было никакого паттерна, вылетало просто на вызове рандомных шейдеров.
У команды было много гипотез, и они внимательно изучали код, находя один за одним баги, которые в теории могли вызвать такую проблему. Ничего не помогало.
Спустя время поняли, что система в процессе игры иногда перестает видеть видеокарту в системе. Они пошли общаться с NVIDIA, и инженер с той стороны так и не смог ничем помочь.
В итоге, спустя месяцы мучений, команда пофиксила движок так, чтобы он был тупо устойчив к тому, что видеокарта пропадает из системы, и после восстановления сигнала инициализирует её заново.
Вот, чем занимаются разработчики игр.
Эта история жёстко напомнила мне мои студенческие годы, когда я, будучи криворуким, тратил дни на то, чтобы настроить CUDA-драйвера для Tensorflow. Получается, что не такими уж и разными вещами мы занимаемся.
Работа не предназначена для получения удовольствия от интересного занятия. Для этого есть хобби, пет-проекты, убыточный бизнес. Работая по найму, вы большую часть времени будете проводить за копанием в говне. Компьютерное зрение, NLP, рекомендации - все это отличается только контекстом, а говно будет везде пахнуть одинаково.
Уборщику, который чистит унитазы, не важно, кто в них срёт - Илон Маск или Вася Пупкин. Да, можно себя убедить в том, что твои унитазы для очень важных людей, но… достаточно уже про говно, в общем. А у разработчиков всё почти то же самое.
Осознав всё это, мне стало всё равно, чем заниматься. Я не ищу удовольствия на работе. Когда я уйду из рекомендательных систем, я больше не открою ни одну статью на эту тему. Если бы мне предложили с теми же карьерными перспективами верстать сайт для общества любителей пива, мне было бы в целом по барабану.
Вместо этого, лучше думать о том, как поскорее сделать так, чтобы можно было не работать вообще - вопрос каких-то нескольких миллионов долларов. Думайте о том, чем вы будете заниматься после освобождения от бедности. Начните делать это в небольшом количестве уже сейчас. Ищите своё счастье.
@knowledge_accumulator
P.S.
У всего есть свой предел. Я слышал, в одной компании нужно несколько месяцев читать онбординг-гайды, параллельно накручивая метрику количества коммитов для перфоманс ревью. Там я бы застрелился.
1👍61❤39🔥14👎10🤮4😱3💯3😁2🤔2
Да что ж ты будешь делать без работы?
Даже среди граждан Телеграма, не говоря уж об остальных, не особо распространена идея FIRE (Fuck you money, если по-нашему).
Я не буду сегодня в очередной раз объяснять, как этого достичь, в какую страну переезжать и куда складывать накопления - тут всё и так в принципе понятно.
Наибольшую печаль у меня вызывает подмножество людей, которые понимают техническую составляющую Fuck you money, но, почесав репу, решили, что это не стоит того или не для них.
Мне искренне грустно за этих людей, потому что работа по найму их обманула и сломала им психику. Она смогла убедить их, что работа интереснее всего остального, а заниматься ей, как основным делом, это отлично.
Этому не подвержены какие-то глупые люди. Наоборот - такой человек смог добиться чего-то в своей карьере и нашёл место и позицию, в которой его работа стала не такой уж и неприятной. Этому подвержены самые работоспособные из нас, кто может годами не брать отпуск и чё-то ковырять на выходных.
В моей жизни не было момента, когда я концентрировался только на своей работе длительное время. У меня всегда было другое занятие, которое я любил сильно больше. Наверное, ценой упущенной продуктивности, это спасло меня от вышеупомянутого недуга, но, абсолютно уверен, это стоило того.
Меня вообще не пугает потенциальный жизненный вакуум при отсутствии работы, потому что его не будет. Те, кто этого боятся, просто не понимают базового алгоритма:
Даже будучи в полной социальной изоляции, не выезжая из деревни, я бы нашёл себе занятий на целый день:
⁃ Астрономия
⁃ Низкоуровневое программирование
⁃ Кино
⁃ Гамать в комп (а как же)
⁃ Выучить китайский/японский
⁃ Изучать историю кого-то / чего-то
⁃ Ходить в качалку
И это я уже не говорю про время с семьёй, социальные развлечения, путешествия, поиск сообщества по интересам, мероприятия, ну и, конечно, воспитание детей.
Это не лежание на пляже целый день - все эти занятия в совокупности составляют полноценную активную жизнь, неплохо нагружая ваш мозг. Он, кстати, такому разнообразию будет рад больше, чем перекладыванию конфигов по 8 часов в день.
В общем, понятия не имею, как можно не хотеть перестать работать. Надеюсь, что те, кто так говорят, просто сидят на высоких дозах копиума и переобуются при первой возможности. Но, к сожалению, если к этому не стремиться, такой возможности и не появится. Так что, давайте, соберите яйца в кулак и примите своё печальное положение. Тогда вы, может, выберетесь.
@knowledge_accumulator
Даже среди граждан Телеграма, не говоря уж об остальных, не особо распространена идея FIRE (Fuck you money, если по-нашему).
Я не буду сегодня в очередной раз объяснять, как этого достичь, в какую страну переезжать и куда складывать накопления - тут всё и так в принципе понятно.
Наибольшую печаль у меня вызывает подмножество людей, которые понимают техническую составляющую Fuck you money, но, почесав репу, решили, что это не стоит того или не для них.
Мне искренне грустно за этих людей, потому что работа по найму их обманула и сломала им психику. Она смогла убедить их, что работа интереснее всего остального, а заниматься ей, как основным делом, это отлично.
Этому не подвержены какие-то глупые люди. Наоборот - такой человек смог добиться чего-то в своей карьере и нашёл место и позицию, в которой его работа стала не такой уж и неприятной. Этому подвержены самые работоспособные из нас, кто может годами не брать отпуск и чё-то ковырять на выходных.
В моей жизни не было момента, когда я концентрировался только на своей работе длительное время. У меня всегда было другое занятие, которое я любил сильно больше. Наверное, ценой упущенной продуктивности, это спасло меня от вышеупомянутого недуга, но, абсолютно уверен, это стоило того.
Меня вообще не пугает потенциальный жизненный вакуум при отсутствии работы, потому что его не будет. Те, кто этого боятся, просто не понимают базового алгоритма:
while bored:
hobby = something_fun_others_do()
add_to_weekly_schedule(hobby)
Даже будучи в полной социальной изоляции, не выезжая из деревни, я бы нашёл себе занятий на целый день:
⁃ Астрономия
⁃ Низкоуровневое программирование
⁃ Кино
⁃ Гамать в комп (а как же)
⁃ Выучить китайский/японский
⁃ Изучать историю кого-то / чего-то
⁃ Ходить в качалку
И это я уже не говорю про время с семьёй, социальные развлечения, путешествия, поиск сообщества по интересам, мероприятия, ну и, конечно, воспитание детей.
Это не лежание на пляже целый день - все эти занятия в совокупности составляют полноценную активную жизнь, неплохо нагружая ваш мозг. Он, кстати, такому разнообразию будет рад больше, чем перекладыванию конфигов по 8 часов в день.
В общем, понятия не имею, как можно не хотеть перестать работать. Надеюсь, что те, кто так говорят, просто сидят на высоких дозах копиума и переобуются при первой возможности. Но, к сожалению, если к этому не стремиться, такой возможности и не появится. Так что, давайте, соберите яйца в кулак и примите своё печальное положение. Тогда вы, может, выберетесь.
@knowledge_accumulator
1👍53😁13💯12❤8🤡4🔥3🤓2
Как переизобрести цивилизацию с нуля, оказавшись в древности?
Этого я не знаю. Сегодня обсудим более узкий вопрос - как с нуля переизобрести компьютер?
Кто не пытался собрать в школе компьютер в Майнкрафте, у того нет сердца. У меня оно было. Но в мои 14 мой подход к проблеме был не особо зрелый, дело было так:
1) Я прочитал гайд, как реализовывать логические гейты
2) Собрал наугад калькулятор с небольшими элементами памяти и небольшим набором операций
3) Перестал понимать, как двигаться дальше, и в целом стало лень, в итоге забил. К сожалению, по сравнению с вот этим челом я был амёбой.
Проблема была в том, что я знал конечную цель слишком верхнеуровнево. В то же время, майнкрафт без модов, в котором я всё делал, был неудобным доменом - делать всё вручную, туда-сюда бегать, всё это такое себе удовольствие.
К счастью, после взросления и появления мозгов моё сердце не охладело к подобным вопросам. Мне всё ещё интересно собрать (концептуально) компьютер прям с нуля. Начав гуглить, я весьма быстро наткнулся на парочку ресурсов:
nand2tetris.org - сайт с тонной материалов именно на эту тему. Он содержит 12 частей, начиная с логических гейтов, и заканчивая «высокоуровневым» программированием и операционной системой. Прилагается книга.
Для тех, кто не знает - NAND - логическая операция, которой достаточно, чтобы воссоздать все остальные. Компьютер можно собрать чисто на NAND-гейтах.
Этот материал весьма большой, и тянет на несколько месяцев ковыряния. Если у вас на это пока нет времени, к счастью, есть альтернатива:
nandgame.com - здесь процесс превратили в игру и оставили только самую мякотку.
Она состоит из уровней, в каждом из которых вы собираете всё более и более сложную схему, используя результаты предыдущих уровней в качестве уже готовых блоков.
Всего в игре около 30 уровней, где в первом нужно собрать NAND-гейт из реле, а заканчивается всё сборкой памяти и процессора. Конечно, всё упрощено, но все важные логические переходы на уровень выше остаются в вашей власти. Обязательно попробуйте.
Бонусом оставлю ещё одну рекомендацию на тему - eater.net. У этого чела много материалов на близкую тематику, в том числе, он продаёт физические наборы для сборки мини-компьютера - это уже для тех, кто не боится кусачками резать провода.
Переизобрести компьютер своими руками в одиночку вполне возможно. У вас нет задачи сделать его таким же быстрым, с таким же общим назначением, налаживать массовое производство и т.д.
И самое главное - делая это, никто не будет вас донимать встречами и агрессивными дедлайнами. Можно, наконец, инженерить в свое удовольствие, пока самому не надоест.
@knowledge_accumulator
Этого я не знаю. Сегодня обсудим более узкий вопрос - как с нуля переизобрести компьютер?
Кто не пытался собрать в школе компьютер в Майнкрафте, у того нет сердца. У меня оно было. Но в мои 14 мой подход к проблеме был не особо зрелый, дело было так:
1) Я прочитал гайд, как реализовывать логические гейты
2) Собрал наугад калькулятор с небольшими элементами памяти и небольшим набором операций
3) Перестал понимать, как двигаться дальше, и в целом стало лень, в итоге забил. К сожалению, по сравнению с вот этим челом я был амёбой.
Проблема была в том, что я знал конечную цель слишком верхнеуровнево. В то же время, майнкрафт без модов, в котором я всё делал, был неудобным доменом - делать всё вручную, туда-сюда бегать, всё это такое себе удовольствие.
К счастью, после взросления и появления мозгов моё сердце не охладело к подобным вопросам. Мне всё ещё интересно собрать (концептуально) компьютер прям с нуля. Начав гуглить, я весьма быстро наткнулся на парочку ресурсов:
nand2tetris.org - сайт с тонной материалов именно на эту тему. Он содержит 12 частей, начиная с логических гейтов, и заканчивая «высокоуровневым» программированием и операционной системой. Прилагается книга.
Для тех, кто не знает - NAND - логическая операция, которой достаточно, чтобы воссоздать все остальные. Компьютер можно собрать чисто на NAND-гейтах.
Этот материал весьма большой, и тянет на несколько месяцев ковыряния. Если у вас на это пока нет времени, к счастью, есть альтернатива:
nandgame.com - здесь процесс превратили в игру и оставили только самую мякотку.
Она состоит из уровней, в каждом из которых вы собираете всё более и более сложную схему, используя результаты предыдущих уровней в качестве уже готовых блоков.
Всего в игре около 30 уровней, где в первом нужно собрать NAND-гейт из реле, а заканчивается всё сборкой памяти и процессора. Конечно, всё упрощено, но все важные логические переходы на уровень выше остаются в вашей власти. Обязательно попробуйте.
Бонусом оставлю ещё одну рекомендацию на тему - eater.net. У этого чела много материалов на близкую тематику, в том числе, он продаёт физические наборы для сборки мини-компьютера - это уже для тех, кто не боится кусачками резать провода.
Переизобрести компьютер своими руками в одиночку вполне возможно. У вас нет задачи сделать его таким же быстрым, с таким же общим назначением, налаживать массовое производство и т.д.
И самое главное - делая это, никто не будет вас донимать встречами и агрессивными дедлайнами. Можно, наконец, инженерить в свое удовольствие, пока самому не надоест.
@knowledge_accumulator
1👍30❤4🔥4🥱1
Я больше не знаю языки программирования, на которых пишу
Когда ML-щики вылупляются и покидают инкубатор, часто их ждёт неприятный сюрприз - оказывается, работа не похожа на Kaggle, когда тебе дают готовые данные, и твой конечный результат - это оффлайн-метрика.
Большую часть времени надо работать над предобработкой данных и донесением обученной модели до прода. Кто-то не хочет с этим мириться и отказывается делать что-то полезное, ну и уходит в ресёрч. А кто-то находит способ с этим ужиться.
Не так давно я пережил такое же знакомство с реальностью ещё раз, но уже в квадрате.
Сейчас у нас в компании в районе рекомендательной системы очень жёсткое давление в сторону упрощения. Всё сводится к очень простому и понятному ML-фреймворку, в котором мало места для ML-ных инноваций. Наш объём данных и компьюта такое позволяет.
Можно сказать, на все рекомендации нужен 1 человек, который нормально знает ML, всё остальное это техническое обслуживание концептуально простой системы.
В итоге, мой спектр задач начинает расширяться ещё дальше. То надо раздебажить код на расте, то написать какую-то компоненту на скале. Я не освобождён ни от написания генератора кафка-стрима с обучающими данными, ни от починки применялки, ни от раскатки модели в Kubernetes.
Это было бы ещё ничего, если бы на это не накладывалась наша скорость. Мне нужно прыгать между совсем разными частями системы каждую неделю. У меня нет времени и стимула сесть и нормально выучить раст, потому что к следующему разу, когда он мне понадобится, я уже всё забуду. Я не написал бы на нём даже Hello World.
Выживать в таких условиях помогают два фактора:
1) В большинстве случаев языки ведут себя примерно одинаково. Раздебаживать кусок незнакомого кода в огромной монорепе одинаково сложно что на скале, что на питоне. Скилл и моральная готовность копаться в этом говне прилипает и переносится на следующие разы.
2) Писать компоненту на языке, которого ты не знаешь, с использованием абстракций, которые ты видишь впервые, очень сильно помогают LLM-ки. Бывает, что остаётся только скептически посмотреть на генерацию и в случае чего поправить.
Таким образом, каждую неделю я прохожу через широкий спектр ощущений, начиная от тотального непонимания, что вообще от меня надо и почему этим занимаюсь я, до постепенной адаптации и решения поставленной задачи сквозь смех и слёзы.
Ничего, яйца в кулак и терпим.
@knowledge_accumulator
Когда ML-щики вылупляются и покидают инкубатор, часто их ждёт неприятный сюрприз - оказывается, работа не похожа на Kaggle, когда тебе дают готовые данные, и твой конечный результат - это оффлайн-метрика.
Большую часть времени надо работать над предобработкой данных и донесением обученной модели до прода. Кто-то не хочет с этим мириться и отказывается делать что-то полезное, ну и уходит в ресёрч. А кто-то находит способ с этим ужиться.
Не так давно я пережил такое же знакомство с реальностью ещё раз, но уже в квадрате.
Сейчас у нас в компании в районе рекомендательной системы очень жёсткое давление в сторону упрощения. Всё сводится к очень простому и понятному ML-фреймворку, в котором мало места для ML-ных инноваций. Наш объём данных и компьюта такое позволяет.
Можно сказать, на все рекомендации нужен 1 человек, который нормально знает ML, всё остальное это техническое обслуживание концептуально простой системы.
В итоге, мой спектр задач начинает расширяться ещё дальше. То надо раздебажить код на расте, то написать какую-то компоненту на скале. Я не освобождён ни от написания генератора кафка-стрима с обучающими данными, ни от починки применялки, ни от раскатки модели в Kubernetes.
Это было бы ещё ничего, если бы на это не накладывалась наша скорость. Мне нужно прыгать между совсем разными частями системы каждую неделю. У меня нет времени и стимула сесть и нормально выучить раст, потому что к следующему разу, когда он мне понадобится, я уже всё забуду. Я не написал бы на нём даже Hello World.
Выживать в таких условиях помогают два фактора:
1) В большинстве случаев языки ведут себя примерно одинаково. Раздебаживать кусок незнакомого кода в огромной монорепе одинаково сложно что на скале, что на питоне. Скилл и моральная готовность копаться в этом говне прилипает и переносится на следующие разы.
2) Писать компоненту на языке, которого ты не знаешь, с использованием абстракций, которые ты видишь впервые, очень сильно помогают LLM-ки. Бывает, что остаётся только скептически посмотреть на генерацию и в случае чего поправить.
Таким образом, каждую неделю я прохожу через широкий спектр ощущений, начиная от тотального непонимания, что вообще от меня надо и почему этим занимаюсь я, до постепенной адаптации и решения поставленной задачи сквозь смех и слёзы.
Ничего, яйца в кулак и терпим.
@knowledge_accumulator
1❤40👍21🤣10🔥4🤯2🫡1
Чё там в Долине
Я уже почти месяц как живу в Долине, пришло время рассказать о первых впечатлениях.
Главным гвоздём моей программы здесь является работа, но, к сожалению, истории отсюда не подлежат распространению от слова совсем. Могу разве что сообщить, что переключился на рекламу. Меня, кстати, удивило, насколько она отличается от рекомендаций в некоторых неожиданных моментах.
Сложно серьёзно воспринимать работу в других местах, после того как поработаешь под нашим давлением, и с тем масштабом импакта, который у нас вносит каждый отдельный инженер. Смешно встречать посты людей в соцсетях про impact или тем более fast pace у них в компаниях. Вы не представляете, что такое истинный fast pace, щенки.
Времени писать посты в прошлом режиме сейчас нет, к сожалению. Надеюсь, оно появится позже, по гарантий никаких. Ладно, хватит уже о работе, поговорим о самой Долине.
Конечно, здесь дорогое жильё. Распределение цен сдвинуто по сравнению с тем же Лондоном ощутимо вправо. Но надо сказать, что помимо этого вправо сдвигается и распределение качества.
И в Лондоне, и в Долине наша стратегия выбора жилья была примерно одинаковая - приличный Build-To-Rent (многоэтажки с квартирами, построенные именно для сдачи) в пределах допустимого расстоянии от работы, без каких-то значимых компромиссов.
В таких домах квартиры стоят раза в полтора дороже аналогичных в Лондоне, но они сильно больше при том же количестве спальных комнат, а ещё в них - о чудо - есть кондиционер. Из приятных мелочей - у нас в доме есть мало того, что бассейн, так ещё и джакузи. Да, на единицу комфорта жильё в Долине дороже, но я промолчу про разницу в зарплатах.
Наконец-то, слава богу, никакого метро. Расскажу, как выглядит дорога до работы стандартного жителя Долины.
Вы спускаетесь в подземную парковку своего дома и садитесь в Теслу. Как только выехали на улицу, нажимаете кнопку ВКЛ на автопилоте и просто сидите, смотря на дорогу. Сейчас уже даже руки на руле можно не держать. Дороги тут огромные и прямые, машин немного, так что почти не нужно вмешиваться. В конце вы выбираете место для парковки и машина +- сама паркуется.
Если вы считаете, что добираться на работу на общественном транспорте лучше, "зато машина не нужна", то я не знаю, что с вами не так. В своей машине не будет проблем с температурой, духотой, вонючими бомжами, и в ней просто комфортнее. Скоро сможете также сидеть в телефоне всю дорогу. А ещё вам всё равно на погоду.
Кстати, про погоду. В Долине лучший климат среди тех мест, где я был. Среднесуточная температура в моей окрестности зимой 10 градусов, а летом 20. Солнечных часов здесь почти в 2 раза больше, чем в Лондоне и Москве. В 2 раза меньше дождливых дней, чем в Лондоне.
Многие беспокоятся про то, что тут нечем заняться по сравнению с Лондоном или тем же Нью-Йорком. Культурной плотности здесь правда гораздо меньше, но сходить всё ещё есть куда - в Сан-Франциско жизнь присутствует, до него нам ехать минут 40 (как раньше до центра Лондона). LA в нескольких часах езды тоже присутствует. Лично мне культурная программа не так интересна, да и времени на неё не завезли.
Зато тут хорошо с отдыхом на природе. Рядом много всяких национальных парков и прочих красивых мест, до которых удобно добираться на автопилоте, а не на полуработающих электричках. Но это мы пока мало исследовали.
В целом, пока никаких неприятных сюрпризов, полёт нормальный. Конечно, Калифорния - левацкая помойка, как и Великобритания или Россия, так что к этому я уже привык, и ничего особо не выделяется. Но дам знать, если накипит.
@knowledge_accumulator
Я уже почти месяц как живу в Долине, пришло время рассказать о первых впечатлениях.
Главным гвоздём моей программы здесь является работа, но, к сожалению, истории отсюда не подлежат распространению от слова совсем. Могу разве что сообщить, что переключился на рекламу. Меня, кстати, удивило, насколько она отличается от рекомендаций в некоторых неожиданных моментах.
Сложно серьёзно воспринимать работу в других местах, после того как поработаешь под нашим давлением, и с тем масштабом импакта, который у нас вносит каждый отдельный инженер. Смешно встречать посты людей в соцсетях про impact или тем более fast pace у них в компаниях. Вы не представляете, что такое истинный fast pace, щенки.
Времени писать посты в прошлом режиме сейчас нет, к сожалению. Надеюсь, оно появится позже, по гарантий никаких. Ладно, хватит уже о работе, поговорим о самой Долине.
Конечно, здесь дорогое жильё. Распределение цен сдвинуто по сравнению с тем же Лондоном ощутимо вправо. Но надо сказать, что помимо этого вправо сдвигается и распределение качества.
И в Лондоне, и в Долине наша стратегия выбора жилья была примерно одинаковая - приличный Build-To-Rent (многоэтажки с квартирами, построенные именно для сдачи) в пределах допустимого расстоянии от работы, без каких-то значимых компромиссов.
В таких домах квартиры стоят раза в полтора дороже аналогичных в Лондоне, но они сильно больше при том же количестве спальных комнат, а ещё в них - о чудо - есть кондиционер. Из приятных мелочей - у нас в доме есть мало того, что бассейн, так ещё и джакузи. Да, на единицу комфорта жильё в Долине дороже, но я промолчу про разницу в зарплатах.
Наконец-то, слава богу, никакого метро. Расскажу, как выглядит дорога до работы стандартного жителя Долины.
Вы спускаетесь в подземную парковку своего дома и садитесь в Теслу. Как только выехали на улицу, нажимаете кнопку ВКЛ на автопилоте и просто сидите, смотря на дорогу. Сейчас уже даже руки на руле можно не держать. Дороги тут огромные и прямые, машин немного, так что почти не нужно вмешиваться. В конце вы выбираете место для парковки и машина +- сама паркуется.
Если вы считаете, что добираться на работу на общественном транспорте лучше, "зато машина не нужна", то я не знаю, что с вами не так. В своей машине не будет проблем с температурой, духотой, вонючими бомжами, и в ней просто комфортнее. Скоро сможете также сидеть в телефоне всю дорогу. А ещё вам всё равно на погоду.
Кстати, про погоду. В Долине лучший климат среди тех мест, где я был. Среднесуточная температура в моей окрестности зимой 10 градусов, а летом 20. Солнечных часов здесь почти в 2 раза больше, чем в Лондоне и Москве. В 2 раза меньше дождливых дней, чем в Лондоне.
Многие беспокоятся про то, что тут нечем заняться по сравнению с Лондоном или тем же Нью-Йорком. Культурной плотности здесь правда гораздо меньше, но сходить всё ещё есть куда - в Сан-Франциско жизнь присутствует, до него нам ехать минут 40 (как раньше до центра Лондона). LA в нескольких часах езды тоже присутствует. Лично мне культурная программа не так интересна, да и времени на неё не завезли.
Зато тут хорошо с отдыхом на природе. Рядом много всяких национальных парков и прочих красивых мест, до которых удобно добираться на автопилоте, а не на полуработающих электричках. Но это мы пока мало исследовали.
В целом, пока никаких неприятных сюрпризов, полёт нормальный. Конечно, Калифорния - левацкая помойка, как и Великобритания или Россия, так что к этому я уже привык, и ничего особо не выделяется. Но дам знать, если накипит.
@knowledge_accumulator
1🤡63👍53❤10🔥3👎1
Вайбкодинг: суровая реальность
Расскажу про то, как вчера прошли мои несколько часов на работе, которые мне показались интересным опытом.
Итак, меня попросили помочь другой команде с составлением датасета. Ситуация следующая - у них на руках 50 тыщ ссылок на страницы с одного вебсайта, с каждой из которых нужно вытащить конкретные данные.
Чел №1 запускает тулзу, которая парсит страницы, попутно записывая в соответствующие поля список ссылок на картинки, название страницы и несколько других полей.
Квест №1 - нужно добыть рейтинг объекта с этой страницы. Расстроенный, что скачивающая тулза не парсит этот рейтинг нативно, чел №1 предлагает скормить каждую страницу LLM-ке и попросить её вытащить этот рейтинг.
Удостоверившись, что тулза дампает ещё и весь html, я предлагаю другой вариант - если это данные с 1 сайта, то рейтинг можно легко найти в самой html-ке по тегам. Заварил Beautiful Soup, функцию извлечения из 3 строчек, и готово. +1 к олдскульности в глазах коллег.
Квест №2 - нужно скачать фотографии с определённой карусели на странице этого сайта. Воодушевлённый своим умением в древние технологии, я принялся разбираться в html-ках. Но что-то у меня не клеилось.
Я втыкал в несколько образцов страниц. В части из них у фоток из нужной мне карусели был определённый тег, по которому я их находил. А в некоторых случаях у скачанных html-ек была какая-то другая структура, хотя на самом сайте всё было как обычно. Я больше 30 минут втыкал в разные страницы и пытался найти закономерность, тестил гипотезы, но так и не смог найти признака, по которому можно отличить нужные мне фотки.
Спустя время ко мне подходит чел №2 и говорит - я 5 минут назад попросил данные, и у меня вроде получилось распарсить. Я говорю - как? Он говорит - да я сказал курсору, что надо распарсить, и он написал код. Смотрю в него - там 400 строк отборнейшего AI-слопа. Чел №2 добавляет - я в душе не знаю, как он работает, я посмотрел на нескольких образцах, результат выглядит валидно.
Я попытался вчитаться - парсер забирает какой-то markdown страницы (что это вообще?), берёт все ссылки и применяет кучу фильтров на текст рядом с этими ссылками. В результате остаются только нужные. Я бы сам такое решение не соорудил за адекватное время.
Меня это задело. Я почувствовал, что мой век уходит. Я - дряхлый старик, застрявший в предыдущей эре, и работающий гораздо медленнее тех, кто освоил новые технологии. Ну и хуй с вами, делайте дальше сами - подумал я - и пошёл поесть.
Вернушись, я застал сеанс парного вайб-кодинга. Чел №1 ест, а чел №2 что-то усиленно пишет курсору. Он мне говорит - "чё-то слишком дохуя edge-кейсов, оказалось, что в половине случаев ничё не работает. Я скидываю курсору неправильные кейсы и она фиксит код". Через ещё несколько минут ко мне подошли - может, по-братски всё же свой парсер доделаешь?
Замотивированный на успех, я ещё раз вчитался в 30% "неправильных html" и до меня дошло - эти страницы сдампали до того, как они полностью загрузились. Когда я открывал страницы вручную, замечал, что нужная мне карусель загружается не сразу. Я попросил чела №1 перескачать страницы, выставив большее время перед загрузкой, и после этого почти все 50к страниц стали парсится очень короткой функцией. Мне сказали, что я Wizard.
В этой истории никто из нас не действовал оптимально. Я, скорее всего, сделал бы работу быстрее, если бы обратился к LLM-ке для генерации гипотез, и скорее всего она бы мне подсказала про частично загруженные страницы. Но моя крайность, наверное, лучше другой, в которой работа не была сделана вообще, потому что дебажить 400 строк сломанного AI-слопа человек не в состоянии.
А вы что думаете про всё это? Расскажите свои истории на тему.
@knowledge_accumulator
Расскажу про то, как вчера прошли мои несколько часов на работе, которые мне показались интересным опытом.
Итак, меня попросили помочь другой команде с составлением датасета. Ситуация следующая - у них на руках 50 тыщ ссылок на страницы с одного вебсайта, с каждой из которых нужно вытащить конкретные данные.
Чел №1 запускает тулзу, которая парсит страницы, попутно записывая в соответствующие поля список ссылок на картинки, название страницы и несколько других полей.
Квест №1 - нужно добыть рейтинг объекта с этой страницы. Расстроенный, что скачивающая тулза не парсит этот рейтинг нативно, чел №1 предлагает скормить каждую страницу LLM-ке и попросить её вытащить этот рейтинг.
Удостоверившись, что тулза дампает ещё и весь html, я предлагаю другой вариант - если это данные с 1 сайта, то рейтинг можно легко найти в самой html-ке по тегам. Заварил Beautiful Soup, функцию извлечения из 3 строчек, и готово. +1 к олдскульности в глазах коллег.
Квест №2 - нужно скачать фотографии с определённой карусели на странице этого сайта. Воодушевлённый своим умением в древние технологии, я принялся разбираться в html-ках. Но что-то у меня не клеилось.
Я втыкал в несколько образцов страниц. В части из них у фоток из нужной мне карусели был определённый тег, по которому я их находил. А в некоторых случаях у скачанных html-ек была какая-то другая структура, хотя на самом сайте всё было как обычно. Я больше 30 минут втыкал в разные страницы и пытался найти закономерность, тестил гипотезы, но так и не смог найти признака, по которому можно отличить нужные мне фотки.
Спустя время ко мне подходит чел №2 и говорит - я 5 минут назад попросил данные, и у меня вроде получилось распарсить. Я говорю - как? Он говорит - да я сказал курсору, что надо распарсить, и он написал код. Смотрю в него - там 400 строк отборнейшего AI-слопа. Чел №2 добавляет - я в душе не знаю, как он работает, я посмотрел на нескольких образцах, результат выглядит валидно.
Я попытался вчитаться - парсер забирает какой-то markdown страницы (что это вообще?), берёт все ссылки и применяет кучу фильтров на текст рядом с этими ссылками. В результате остаются только нужные. Я бы сам такое решение не соорудил за адекватное время.
Меня это задело. Я почувствовал, что мой век уходит. Я - дряхлый старик, застрявший в предыдущей эре, и работающий гораздо медленнее тех, кто освоил новые технологии. Ну и хуй с вами, делайте дальше сами - подумал я - и пошёл поесть.
Вернушись, я застал сеанс парного вайб-кодинга. Чел №1 ест, а чел №2 что-то усиленно пишет курсору. Он мне говорит - "чё-то слишком дохуя edge-кейсов, оказалось, что в половине случаев ничё не работает. Я скидываю курсору неправильные кейсы и она фиксит код". Через ещё несколько минут ко мне подошли - может, по-братски всё же свой парсер доделаешь?
Замотивированный на успех, я ещё раз вчитался в 30% "неправильных html" и до меня дошло - эти страницы сдампали до того, как они полностью загрузились. Когда я открывал страницы вручную, замечал, что нужная мне карусель загружается не сразу. Я попросил чела №1 перескачать страницы, выставив большее время перед загрузкой, и после этого почти все 50к страниц стали парсится очень короткой функцией. Мне сказали, что я Wizard.
В этой истории никто из нас не действовал оптимально. Я, скорее всего, сделал бы работу быстрее, если бы обратился к LLM-ке для генерации гипотез, и скорее всего она бы мне подсказала про частично загруженные страницы. Но моя крайность, наверное, лучше другой, в которой работа не была сделана вообще, потому что дебажить 400 строк сломанного AI-слопа человек не в состоянии.
А вы что думаете про всё это? Расскажите свои истории на тему.
@knowledge_accumulator
1👍67😁30❤14🔥4🤡4
Теперь я коллекционер
Почти в конце года в моём списке текущих развлечений появился объект жанра сбора коллекции. Раньше я никогда не фанател от такого, но, как оказалось, у меня просто нормальной идеи не было.
Итак, я собираю микромузей истории видеоигр.
Как инженеру, мне интересно изучать, когда шаг за шагом развиваются идеи и технологии. Игры - отличный пример, где это происходило одновременно на нескольких фронтах с невероятной скоростью.
В конце 1970-х была релизнута Atari 2600 - консоль второго поколения. Любители RL в свое время наигрались в симулятор Atari в процессе обучения алгоритмов. Именно под Atari 2600 и были сделаны те самые игры на рубеже 70-х и 80-х. С недавних пор, благодаря моей супруге, я счастливый владелец оригинала! Играть в Space Invaders на 4к телеке очень даже вайбово.
В середине 1980-х была релизнутаDendi NES, игры с которой были уже совсем на другом уровне. Например, полноценная RPG - первая часть The Legend of Zelda. Технологический прорыв - теперь можно сохраняться между сессиями!
На рубеже 80-х и 90-х вышла Sega Genesis - приставка, китайская копия которой стала подарком на моё 4-х летие (хотя на дворе уже был 2001-й). Как же я раздавал в Road Rash 2, Desert Strike и, конечно, Сонике. Эту приставку я уже тоже получил в подарок от друзей, таким образом, экспоната уже 2.
Я считаю, что возраст игре не такая большая помеха. Более того, тест на время - отличный способ понять качество культурного продукта, и это касается не только игр. У Super Mario Bros (1985) и классического Тетриса (1989) есть живое сообщество, по последнему вон оффлайн-чемпионаты проводятся каждый год.
Моя любимая супруга, помимо самой Atari, ничего не подозревая, подарила картридж с Pac-man. Сама игра выглядела значительно проще и хуже, чем то, что я помню, как оригинал, и я подумал, что это какая-то ещё более старая версия.
Почитав, оказалось, что у меня в руках оказалась один из артефактов пузыря видеоигр, лопнувшего в 1983 году (и такое было!). Atari, которой вскружило голову от успехов, решила портировать уже вышедшую (в виде Arcade) на тот момент Pac-man на игровую консоль.
Консоль была значительно слабее аркады, и разработчику пришлось многое упрощать, чтобы в неё влезть. Получилось в итоге не особо удачно, слабо похоже на оригинал, и игроки были разочарованы.
Куча копий игры не была распродана, причём не только Pac-man, и в Atari придумали гениальный план - закопать миллионы картриджей в землю в New Mexico. Долгое время это были скорее слухи, а в 2014 захоронение взяли, да раскопали, и нашли там те самые игры.
Жалко, что мы никогда не узнаем, возможно ли было сделать хороший порт Pac-man в тех условиях… Или узнаем?
Нашёлся сумасшедший умник, который написал свой Pac-man под Atari 2600, и у него получилось гораздо ближе к оригиналу! Так что, получается, официальный порт явно вайбкодили.
Как видите, вокруг игр существует большой лор, социальная драма и так далее. Но, в отличие от какого-нибудь просмотра формулы-1, даже без лора игры представляют интерес. Посмотрим, что из всей этой задумки у меня выйдет.
Есть тут такие же любители? Буду рад рекомендациям чего-либо на тему.
@knowledge_accumulator
Почти в конце года в моём списке текущих развлечений появился объект жанра сбора коллекции. Раньше я никогда не фанател от такого, но, как оказалось, у меня просто нормальной идеи не было.
Итак, я собираю микромузей истории видеоигр.
Как инженеру, мне интересно изучать, когда шаг за шагом развиваются идеи и технологии. Игры - отличный пример, где это происходило одновременно на нескольких фронтах с невероятной скоростью.
В конце 1970-х была релизнута Atari 2600 - консоль второго поколения. Любители RL в свое время наигрались в симулятор Atari в процессе обучения алгоритмов. Именно под Atari 2600 и были сделаны те самые игры на рубеже 70-х и 80-х. С недавних пор, благодаря моей супруге, я счастливый владелец оригинала! Играть в Space Invaders на 4к телеке очень даже вайбово.
В середине 1980-х была релизнута
На рубеже 80-х и 90-х вышла Sega Genesis - приставка, китайская копия которой стала подарком на моё 4-х летие (хотя на дворе уже был 2001-й). Как же я раздавал в Road Rash 2, Desert Strike и, конечно, Сонике. Эту приставку я уже тоже получил в подарок от друзей, таким образом, экспоната уже 2.
Я считаю, что возраст игре не такая большая помеха. Более того, тест на время - отличный способ понять качество культурного продукта, и это касается не только игр. У Super Mario Bros (1985) и классического Тетриса (1989) есть живое сообщество, по последнему вон оффлайн-чемпионаты проводятся каждый год.
Моя любимая супруга, помимо самой Atari, ничего не подозревая, подарила картридж с Pac-man. Сама игра выглядела значительно проще и хуже, чем то, что я помню, как оригинал, и я подумал, что это какая-то ещё более старая версия.
Почитав, оказалось, что у меня в руках оказалась один из артефактов пузыря видеоигр, лопнувшего в 1983 году (и такое было!). Atari, которой вскружило голову от успехов, решила портировать уже вышедшую (в виде Arcade) на тот момент Pac-man на игровую консоль.
Консоль была значительно слабее аркады, и разработчику пришлось многое упрощать, чтобы в неё влезть. Получилось в итоге не особо удачно, слабо похоже на оригинал, и игроки были разочарованы.
Куча копий игры не была распродана, причём не только Pac-man, и в Atari придумали гениальный план - закопать миллионы картриджей в землю в New Mexico. Долгое время это были скорее слухи, а в 2014 захоронение взяли, да раскопали, и нашли там те самые игры.
Жалко, что мы никогда не узнаем, возможно ли было сделать хороший порт Pac-man в тех условиях… Или узнаем?
Нашёлся сумасшедший умник, который написал свой Pac-man под Atari 2600, и у него получилось гораздо ближе к оригиналу! Так что, получается, официальный порт явно вайбкодили.
Как видите, вокруг игр существует большой лор, социальная драма и так далее. Но, в отличие от какого-нибудь просмотра формулы-1, даже без лора игры представляют интерес. Посмотрим, что из всей этой задумки у меня выйдет.
Есть тут такие же любители? Буду рад рекомендациям чего-либо на тему.
@knowledge_accumulator
1👍16❤5💩4🔥3
2025: итоги
Кажется, что субъективное восприятие времени зависит от того, насколько рутинной и однообразной является жизнь. Так вот, этот год был у меня безумно долгим.
Работу весь год невероятно трясло. По мотивам произошедшего можно было бы снять драму, хоррор и множество других жанров. 🫡 всем павшим жертвами. Я благодарен лично каждому, с кем работал в Лондоне, с вами было круто.
В моём случае всё закончилось хорошо - повезло с обстоятельствами и возможностями, которые предоставила ситуация. Воспользоваться ими мне помогли 2 фактора.
Первое - это наглость. В этом году был побит рекорд по услышанным отказам. но все положительные сдвиги стали результатом того, что я не постеснялся что-то спросить. Это своего рода искусство - надо уметь не задолбать людей и выбирать правильные моменты и формулировки.
Второе - это то, что я не люблю свою работу. Дело в том, что если бы я её любил, то тогда бы с печалью и разочарованием смотрел на то, чем в итоге приходилось заниматься. Но мне было по барабану. Поднимать дата-процессор на скале? Делать rebase и резолвить конфликты в коде, который вижу в первый раз? Вкусно! А можно добавки? Готовность за это браться помогла заработать положительную репутацию у коллег в HQ.
Сам переезд в США прошёл отлично. Мы живём в отличной квартире в удобной локации, купили теслу и почти получили местные права, компания начинает делать мне гринкарту, но это займёт пару лет.
С целями вне работы, которые ставил в тот раз, справился на троечку. Пока что не получилось съездить в Японию/Китай, а также засетапить кардио-тренировки. Первое я твёрдо и чётко собираюсь сделать весной, с кардио-тренировками думаю тоже разберусь в начале года.
Добавлю пару задач к тем, что остались:
- Научиться писать на Rust
В моей окрестности на работе на Rust активно переезжают, да и в целом вокруг языка есть какой-то хайп, как будто бы не на пустом месте. К сожалению, выучить язык, вайбкодя на нём на работе, едва ли получится, так что, я решил взять дело в свои руки и в свободное время написать на нём несколько проектов, читая параллельно каноничную книжку. Вообще-то, я люблю программировать, так что заставлять себя особо не придётся.
- Купить телескоп (и воспользоваться им хотя бы несколько раз)
Я уже писал про любительскую астрономию. Теперь обстоятельства позволяют ещё раз подступиться к этому увлечению. Хоть у меня и меньше свободного времени, зато теперь есть машина, недалеко ехать до незасвеченного места, и, самое главное, финансы теперь не жмут и можно покупать максимально дружелюбные девайсы, может даже несколько разных, и понять. что мне наиболее интересно.
Желаю вам удачного 2026-го года. Самое главное - пережить его, а после него, наконец-то, наступит простой, 2027 год, и тогда жизнь точно наладится.
🌲🌲🌲
@knowledge_accumulator
Кажется, что субъективное восприятие времени зависит от того, насколько рутинной и однообразной является жизнь. Так вот, этот год был у меня безумно долгим.
Работу весь год невероятно трясло. По мотивам произошедшего можно было бы снять драму, хоррор и множество других жанров. 🫡 всем павшим жертвами. Я благодарен лично каждому, с кем работал в Лондоне, с вами было круто.
В моём случае всё закончилось хорошо - повезло с обстоятельствами и возможностями, которые предоставила ситуация. Воспользоваться ими мне помогли 2 фактора.
Первое - это наглость. В этом году был побит рекорд по услышанным отказам. но все положительные сдвиги стали результатом того, что я не постеснялся что-то спросить. Это своего рода искусство - надо уметь не задолбать людей и выбирать правильные моменты и формулировки.
Второе - это то, что я не люблю свою работу. Дело в том, что если бы я её любил, то тогда бы с печалью и разочарованием смотрел на то, чем в итоге приходилось заниматься. Но мне было по барабану. Поднимать дата-процессор на скале? Делать rebase и резолвить конфликты в коде, который вижу в первый раз? Вкусно! А можно добавки? Готовность за это браться помогла заработать положительную репутацию у коллег в HQ.
Сам переезд в США прошёл отлично. Мы живём в отличной квартире в удобной локации, купили теслу и почти получили местные права, компания начинает делать мне гринкарту, но это займёт пару лет.
С целями вне работы, которые ставил в тот раз, справился на троечку. Пока что не получилось съездить в Японию/Китай, а также засетапить кардио-тренировки. Первое я твёрдо и чётко собираюсь сделать весной, с кардио-тренировками думаю тоже разберусь в начале года.
Добавлю пару задач к тем, что остались:
- Научиться писать на Rust
В моей окрестности на работе на Rust активно переезжают, да и в целом вокруг языка есть какой-то хайп, как будто бы не на пустом месте. К сожалению, выучить язык, вайбкодя на нём на работе, едва ли получится, так что, я решил взять дело в свои руки и в свободное время написать на нём несколько проектов, читая параллельно каноничную книжку. Вообще-то, я люблю программировать, так что заставлять себя особо не придётся.
- Купить телескоп (и воспользоваться им хотя бы несколько раз)
Я уже писал про любительскую астрономию. Теперь обстоятельства позволяют ещё раз подступиться к этому увлечению. Хоть у меня и меньше свободного времени, зато теперь есть машина, недалеко ехать до незасвеченного места, и, самое главное, финансы теперь не жмут и можно покупать максимально дружелюбные девайсы, может даже несколько разных, и понять. что мне наиболее интересно.
Желаю вам удачного 2026-го года. Самое главное - пережить его, а после него, наконец-то, наступит простой, 2027 год, и тогда жизнь точно наладится.
🌲🌲🌲
@knowledge_accumulator
2👍35🍾18🎄6❤2😐2
DiscoRL - out-of-distribution RL наконец-то решён?
Когда я увидел название статьи "Discovering state-of-the-art reinforcement learning algorithms" с David Silver в авторах, я прищурился. Заметив "meta-learning", "Atari", "outperforms manually designed" в абстракте, мой пульс подскочил в полтора раза. "Неужели это оно?" - думал я, открывая статью трясущимися руками.
Итак, в 2020 году вышла статья "Discovering reinforcement learning algorithms" - от того же автора. На заре существования канала я даже делал на неё обзор. Общий принцип работы с тех пор не изменился, просто всё допилено до лучшего состояния. На сайте у первого автора (junhyuk.com), кстати, написано "The majority of the work was finished in 2022.", так что, предположу, что он больше не развивает это направление, и его припахали к Gemini.
Так, обычно в RL-постановке у нас есть нейросеть-агент, которую мы обучаем, к примеру, с помощью Policy Gradient. То есть, определяющим в Policy Gradient является именно алгоритм, который считает таргеты. Подход LPG заключается в том, что мы начинаем генерировать таргеты для обучения отдельной нейросетью, которая и является объектом мета-обучения.
Основной агент выдаёт помимо стандартных policy и q-value ещё 2 вектора - y(s) и z(s, a), которые не имеют заранее определённой семантики.
Ключевой кусок алгоритма - мета-сеть - это LSTM, которая получает на вход траекторию из последних policy, y, z и Q и выдаёт таргеты для обучения - policy*, y* и z*, а основной агент просто обучается их приближать, и дополнительно учит свою Q-функцию также, как и в алгоритме Retrace - какой-то Prior Knowledge тут всё-таки зашит.
Обучают мета-агента, как и в оригинальной статье, с помощью дифференцирования по параметрам мета-сети чем-то на подобие Policy Gradient. С прошлой работой есть много различий в деталях, с которыми мало смысла разбираться. Приятные сюрпризы начинаются в районе результатов.
Что касается общей производительности алгоритма, есть улучшение в качестве относительно бейзлайна, но не прям какое-то экспоненциальное. Самое интересное начинается при тестировании на Out of Distribution Generalization.
Авторы обучили Disco57 на атари и затем гоняли его на других средах. На ProcGen качество получилось выше, чем у бейзлайнов! Ну и на других средах тоже работает нормально. Другая вариация - Disco103, которую обучили ещё на 2 наборах сред, показывает себя ещё лучше на hold-out средах из наборов 4-6, чем Disco57. Так что, какая-то степень генерализации точно присутствует! Авторы справедливо отмечают, что такой результат это что-то новенькое.
Безумно рад видеть прогресс в задаче OOD-RL. Несмотря на прогресс, на мой взгляд, нужно стремиться к результату другого уровня.
Во-первых, уверен, что можно на порядки сокращать количество шагов в среде, которые нужны, чтобы достичь уровней бейзлайнов, или даже набирать теоретический максимум во всех этих играх. Во-вторых, нужно учить алгоритмы в режиме Continual Learning, когда они умеют в ходе своей жизни накапливать знания и переносить скилл из одних игр в другие.
Можно ли достичь этого подобным подходом? Не знаю, для этого надо пушить это направление. Надеюсь, автор когда-нибудь вернётся к этой работе.
@knowledge_accumulator
Когда я увидел название статьи "Discovering state-of-the-art reinforcement learning algorithms" с David Silver в авторах, я прищурился. Заметив "meta-learning", "Atari", "outperforms manually designed" в абстракте, мой пульс подскочил в полтора раза. "Неужели это оно?" - думал я, открывая статью трясущимися руками.
Итак, в 2020 году вышла статья "Discovering reinforcement learning algorithms" - от того же автора. На заре существования канала я даже делал на неё обзор. Общий принцип работы с тех пор не изменился, просто всё допилено до лучшего состояния. На сайте у первого автора (junhyuk.com), кстати, написано "The majority of the work was finished in 2022.", так что, предположу, что он больше не развивает это направление, и его припахали к Gemini.
Так, обычно в RL-постановке у нас есть нейросеть-агент, которую мы обучаем, к примеру, с помощью Policy Gradient. То есть, определяющим в Policy Gradient является именно алгоритм, который считает таргеты. Подход LPG заключается в том, что мы начинаем генерировать таргеты для обучения отдельной нейросетью, которая и является объектом мета-обучения.
Основной агент выдаёт помимо стандартных policy и q-value ещё 2 вектора - y(s) и z(s, a), которые не имеют заранее определённой семантики.
Ключевой кусок алгоритма - мета-сеть - это LSTM, которая получает на вход траекторию из последних policy, y, z и Q и выдаёт таргеты для обучения - policy*, y* и z*, а основной агент просто обучается их приближать, и дополнительно учит свою Q-функцию также, как и в алгоритме Retrace - какой-то Prior Knowledge тут всё-таки зашит.
Обучают мета-агента, как и в оригинальной статье, с помощью дифференцирования по параметрам мета-сети чем-то на подобие Policy Gradient. С прошлой работой есть много различий в деталях, с которыми мало смысла разбираться. Приятные сюрпризы начинаются в районе результатов.
Что касается общей производительности алгоритма, есть улучшение в качестве относительно бейзлайна, но не прям какое-то экспоненциальное. Самое интересное начинается при тестировании на Out of Distribution Generalization.
Авторы обучили Disco57 на атари и затем гоняли его на других средах. На ProcGen качество получилось выше, чем у бейзлайнов! Ну и на других средах тоже работает нормально. Другая вариация - Disco103, которую обучили ещё на 2 наборах сред, показывает себя ещё лучше на hold-out средах из наборов 4-6, чем Disco57. Так что, какая-то степень генерализации точно присутствует! Авторы справедливо отмечают, что такой результат это что-то новенькое.
Безумно рад видеть прогресс в задаче OOD-RL. Несмотря на прогресс, на мой взгляд, нужно стремиться к результату другого уровня.
Во-первых, уверен, что можно на порядки сокращать количество шагов в среде, которые нужны, чтобы достичь уровней бейзлайнов, или даже набирать теоретический максимум во всех этих играх. Во-вторых, нужно учить алгоритмы в режиме Continual Learning, когда они умеют в ходе своей жизни накапливать знания и переносить скилл из одних игр в другие.
Можно ли достичь этого подобным подходом? Не знаю, для этого надо пушить это направление. Надеюсь, автор когда-нибудь вернётся к этой работе.
@knowledge_accumulator
1❤15🔥8👍5
Спустя 10 лет работы программистом я решил научиться печатать
Меня никто не учил правильным практикам в детстве, и поэтому кнопки на клавиатуре всю жизнь нажимал по классике - как получится. Примерно 4-мя пальцами. Я ещё и мышкой немало пользуюсь, когда программирую, в общем - быдло. Но не так давно я захотел стать из обезьяны человеком.
Основная метрика скорости печатания - Words Per Minute. Источники расходятся в том, чему равна средняя скорость по больнице. По всей видимости, это около 40 WPM. Прогнал себя в тесте https://monkeytype.com/ - получается около 60 WPM. Ничего особенного для моей работы, но выше среднего. Скорее всего, этот тест завышает реальную скорость на практике.
И вот задумался - а как я вообще печатаю? Моя "методика" уже давно живёт в мышечной памяти и ответ не так просто отрефлексировать. Печатая какой-то текст и следя за собой, понял, что никакой магии - в процессе печатания происходит планирование нескольких следующих нажатий, и на ходу выбираются пальцы, которыми это быстрее всего можно сделать. Конечно, присутствует элемент кэширования паттернов из прошлого.
К сожалению, когда одновременно с печатанием нужно ещё и думать, скорость может сильно упасть, потому что на решение оптимизационной задачи на графе для каждого слова уходит ментальный ресурс.
В общем, я решил дать шанс самой православной методе - touch typing. Все символы на клавиатуре строго разделяются между 8 пальцами, сама кисть практически не двигается, и пальцы вслепую находят нужную букву. Происходит это не без помощи неровностей на буквах f и j, которые являются "домашней" позицией двух указательных пальцев. В интернете говорят, что при использовании touch typing мозг срастается с клавиатурой и ментальное трение при набирании слов падает практически до нуля. Кроме того, вырастает точность.
Но как же этому научиться? Ведь это слишком непривычно. Ответ, как и во всех сферах жизни - постепенно и консистентно. Люди в интернете советуют https://www.typingclub.com/, и я прислушался.
Не требуется никаких подвигов. Кладёте пальцы на f и j и печатаете тренировочный текст из 2 букв 2 пальцами. Вроде же ничего сложного? Через 3 мини-урока добавляем ещё 2 буквы - d и k, печатая уже 4 пальцами. Скорости никто не требует - 1 символ в секунду это более, чем достаточно. 23 мини-урока уходят на то, чтобы научиться печатать 10 букв на среднем ряду. Ещё 28 на буквы верхнего ряда и ещё 37 на нижний ряд и закрепление. Цель - всё ещё хотя бы 1 символ в секунду.
Я занимаюсь на этом сайте уже примерно 2 недели по утрам, могу выдавать чуть больше 20 слов в минуту - медленно, но на моём 140-м уроке больше и не просят. Всего тут 685 уроков, и они доходят до 75 слов в минуту, но это уже требует длительной практики.
Тут главное - добраться до приемлемой скорости, которая позволит начать пользоваться touch typing в реальной жизни. После этого постоянная практика должна сильно забустить скорость. Из приятного - пока я на неё не пересел, у меня не было никаких проблем с тем, чтобы утром в тренажёре печатать правильно, а в остальное время по-быдляцки - прогресс от этого не сбрасывался.
Когда я попробовал печатать правильно на рабочем макбуке, то удивился, насколько у него отвратительная клавиатура. По таким низким клавишам гораздо сложнее не глядя перемещаться пальцами, так что, не советую, лучше делать всё это на обычной клавиатуре. Сам вчера распаковал свою первую split-клавиатуру, посмотрим, как оно.
Мне очень интересно узнать про опыт других людей на эту тему, расскажите в комментариях, в каких вы отношениях со своей клавиатурой.
@knowledge_accumulator
Меня никто не учил правильным практикам в детстве, и поэтому кнопки на клавиатуре всю жизнь нажимал по классике - как получится. Примерно 4-мя пальцами. Я ещё и мышкой немало пользуюсь, когда программирую, в общем - быдло. Но не так давно я захотел стать из обезьяны человеком.
Основная метрика скорости печатания - Words Per Minute. Источники расходятся в том, чему равна средняя скорость по больнице. По всей видимости, это около 40 WPM. Прогнал себя в тесте https://monkeytype.com/ - получается около 60 WPM. Ничего особенного для моей работы, но выше среднего. Скорее всего, этот тест завышает реальную скорость на практике.
И вот задумался - а как я вообще печатаю? Моя "методика" уже давно живёт в мышечной памяти и ответ не так просто отрефлексировать. Печатая какой-то текст и следя за собой, понял, что никакой магии - в процессе печатания происходит планирование нескольких следующих нажатий, и на ходу выбираются пальцы, которыми это быстрее всего можно сделать. Конечно, присутствует элемент кэширования паттернов из прошлого.
К сожалению, когда одновременно с печатанием нужно ещё и думать, скорость может сильно упасть, потому что на решение оптимизационной задачи на графе для каждого слова уходит ментальный ресурс.
В общем, я решил дать шанс самой православной методе - touch typing. Все символы на клавиатуре строго разделяются между 8 пальцами, сама кисть практически не двигается, и пальцы вслепую находят нужную букву. Происходит это не без помощи неровностей на буквах f и j, которые являются "домашней" позицией двух указательных пальцев. В интернете говорят, что при использовании touch typing мозг срастается с клавиатурой и ментальное трение при набирании слов падает практически до нуля. Кроме того, вырастает точность.
Но как же этому научиться? Ведь это слишком непривычно. Ответ, как и во всех сферах жизни - постепенно и консистентно. Люди в интернете советуют https://www.typingclub.com/, и я прислушался.
Не требуется никаких подвигов. Кладёте пальцы на f и j и печатаете тренировочный текст из 2 букв 2 пальцами. Вроде же ничего сложного? Через 3 мини-урока добавляем ещё 2 буквы - d и k, печатая уже 4 пальцами. Скорости никто не требует - 1 символ в секунду это более, чем достаточно. 23 мини-урока уходят на то, чтобы научиться печатать 10 букв на среднем ряду. Ещё 28 на буквы верхнего ряда и ещё 37 на нижний ряд и закрепление. Цель - всё ещё хотя бы 1 символ в секунду.
Я занимаюсь на этом сайте уже примерно 2 недели по утрам, могу выдавать чуть больше 20 слов в минуту - медленно, но на моём 140-м уроке больше и не просят. Всего тут 685 уроков, и они доходят до 75 слов в минуту, но это уже требует длительной практики.
Тут главное - добраться до приемлемой скорости, которая позволит начать пользоваться touch typing в реальной жизни. После этого постоянная практика должна сильно забустить скорость. Из приятного - пока я на неё не пересел, у меня не было никаких проблем с тем, чтобы утром в тренажёре печатать правильно, а в остальное время по-быдляцки - прогресс от этого не сбрасывался.
Когда я попробовал печатать правильно на рабочем макбуке, то удивился, насколько у него отвратительная клавиатура. По таким низким клавишам гораздо сложнее не глядя перемещаться пальцами, так что, не советую, лучше делать всё это на обычной клавиатуре. Сам вчера распаковал свою первую split-клавиатуру, посмотрим, как оно.
Мне очень интересно узнать про опыт других людей на эту тему, расскажите в комментариях, в каких вы отношениях со своей клавиатурой.
@knowledge_accumulator
1👍20😁13🤯3❤2
Так пузырь всё-таки или сингулярность?
В последние месяцы многие из нас заметили, как кодинговые модели, в частности, Opus, неплохо скакнули в качестве. Ещё не так давно я писал о том, что без особого надзора модельки не понимают, что творят. Но то были машины потупее, а вот у нового Opus же уровень common sense сильно лучше. Хотелось бы, конечно, знать, засчёт чего был достигнут последний результат. Но это вряд ли.
Бросается в глаза способность модели заниматься главной программисткой деятельностью - дебажить говнокод. Может быть, для Opus соорудили RL-симулятор с большим набором систем, сломанных самыми разными способами, и у модели есть цель их починить, и такая задача заставила её выучить зачатки разума.
На данный момент я уже довольно мало пишу руками. Скорость разработки действительно очень выросла, чувствую, что наконец стал 10х инженером. Часто даже в сложных ML-вопросах получаю хороший ответ и имплементацию.
Приведёт ли всё это к какому-то коллапсу в скором времени? К уничтожению рабочих мест?
Свидетели массовой безработицы любят забывать про несколько факторов:
- С падением стоимости разработки, спрос на неё вырастет и софта станет больше. Если вы мне не верите, то время для коротенькой истории:
Когда я заселялся в свой жилой комплекс в Долине, как вы думаете, сколько приложений мне нужно было установить на телефон? 1? 2? Как насчёт ЧЕТЫРЁХ? Одно отвечает за двери в подъезды, одно за посылки, одно за все остальные двери, и ещё одно для оплаты, сервисов и т.д.
- Боттлнеком является не только разработка. Теперь это будет заблокированная инфра и другие внешние обстоятельства. Теперь, вместо инженеров, все мы будем скорее решателями вопросиков, менеджерами, если хотите, для своего кодингового агента.
- Самое главное и самое смешное - большинству компаний по-ху-ю на эффективность. Да, в x.ai может и надо за неделю шипать большие куски рекомендательной системы, и теперь это может делать не 7 человек, а двое. Но это не является массовой потребностью.
В x.ai несколько сотен инженеров. Знаете, сколько инженеров делают приложение доставки еды DoorDash? Где-то 2.5 тысячи. Столько же делают Spotify. До 2022 в Твиттере работало 300 только ML-щиков! И ни один не додумался начать применять трансформеры.
Сам я в тру бигтехе не работал - бог уберёг - но думаю все мы слышали достаточное количество историй о том, как 100к инженеров только и занимаются тем, что договариваются друг с другом на встречах и пишут документацию.
Мой бывший коллега, работающий в Амазоне, рассказывал, что вместо того, чтобы зашипать новую модель, его заставляют писать огромный отчёт о том, почему прошлая команда не зашипала её к прошлому дедлайну. Из-за этого он не успеет зашипать её к уже к текущему дедлайну. Даже Сизиф бы охуел от этой истории.
На самом деле, массовая безработица и базовый доход уже наступили. Стоимость жизни упала настолько низко, что вместо реальной работы в большинстве мест люди занимаются чем угодно, кроме неё. Бигтех-компании это не команды инженеров, а закрытые клубы раздачи денег, и чтобы в них попасть, нужно умело пройти странный обряд инициации в виде 8 собеседований, не имеющих отношения к реальной работе, и лишь проверяющих способность врать и притворяться.
И это я говорю только про IT и про недавно (пару десятков лет назад) появившиеся компании. Представляете, какая дремучая отсталость царит в остальных сферах? В зарегулированных экономиках, где куча больших компаний, зарабатывающих сверхприбыли, где-то там внутри спрятаны сотни миллионов людей, которые получают зарплату и просто пересылают емэйлы туда-сюда и выполняющие какие-то элементарные действия вручную. Какой им AI adoption? Там бы начать с computer adoption.
Так, что-то я отвлёкся. Так пузырь всё-таки или сингулярность? Скорее всего, как и всегда, ничего не произойдёт, и окажется, что текущий скачок в продуктивности был всего лишь обязательным требованием к тому, чтобы расти на те же самые 3% в год, как и в предыдущие десятилетия.
@knowledge_accumulator
В последние месяцы многие из нас заметили, как кодинговые модели, в частности, Opus, неплохо скакнули в качестве. Ещё не так давно я писал о том, что без особого надзора модельки не понимают, что творят. Но то были машины потупее, а вот у нового Opus же уровень common sense сильно лучше. Хотелось бы, конечно, знать, засчёт чего был достигнут последний результат. Но это вряд ли.
Бросается в глаза способность модели заниматься главной программисткой деятельностью - дебажить говнокод. Может быть, для Opus соорудили RL-симулятор с большим набором систем, сломанных самыми разными способами, и у модели есть цель их починить, и такая задача заставила её выучить зачатки разума.
На данный момент я уже довольно мало пишу руками. Скорость разработки действительно очень выросла, чувствую, что наконец стал 10х инженером. Часто даже в сложных ML-вопросах получаю хороший ответ и имплементацию.
Приведёт ли всё это к какому-то коллапсу в скором времени? К уничтожению рабочих мест?
Свидетели массовой безработицы любят забывать про несколько факторов:
- С падением стоимости разработки, спрос на неё вырастет и софта станет больше. Если вы мне не верите, то время для коротенькой истории:
Когда я заселялся в свой жилой комплекс в Долине, как вы думаете, сколько приложений мне нужно было установить на телефон? 1? 2? Как насчёт ЧЕТЫРЁХ? Одно отвечает за двери в подъезды, одно за посылки, одно за все остальные двери, и ещё одно для оплаты, сервисов и т.д.
- Боттлнеком является не только разработка. Теперь это будет заблокированная инфра и другие внешние обстоятельства. Теперь, вместо инженеров, все мы будем скорее решателями вопросиков, менеджерами, если хотите, для своего кодингового агента.
- Самое главное и самое смешное - большинству компаний по-ху-ю на эффективность. Да, в x.ai может и надо за неделю шипать большие куски рекомендательной системы, и теперь это может делать не 7 человек, а двое. Но это не является массовой потребностью.
В x.ai несколько сотен инженеров. Знаете, сколько инженеров делают приложение доставки еды DoorDash? Где-то 2.5 тысячи. Столько же делают Spotify. До 2022 в Твиттере работало 300 только ML-щиков! И ни один не додумался начать применять трансформеры.
Сам я в тру бигтехе не работал - бог уберёг - но думаю все мы слышали достаточное количество историй о том, как 100к инженеров только и занимаются тем, что договариваются друг с другом на встречах и пишут документацию.
Мой бывший коллега, работающий в Амазоне, рассказывал, что вместо того, чтобы зашипать новую модель, его заставляют писать огромный отчёт о том, почему прошлая команда не зашипала её к прошлому дедлайну. Из-за этого он не успеет зашипать её к уже к текущему дедлайну. Даже Сизиф бы охуел от этой истории.
На самом деле, массовая безработица и базовый доход уже наступили. Стоимость жизни упала настолько низко, что вместо реальной работы в большинстве мест люди занимаются чем угодно, кроме неё. Бигтех-компании это не команды инженеров, а закрытые клубы раздачи денег, и чтобы в них попасть, нужно умело пройти странный обряд инициации в виде 8 собеседований, не имеющих отношения к реальной работе, и лишь проверяющих способность врать и притворяться.
И это я говорю только про IT и про недавно (пару десятков лет назад) появившиеся компании. Представляете, какая дремучая отсталость царит в остальных сферах? В зарегулированных экономиках, где куча больших компаний, зарабатывающих сверхприбыли, где-то там внутри спрятаны сотни миллионов людей, которые получают зарплату и просто пересылают емэйлы туда-сюда и выполняющие какие-то элементарные действия вручную. Какой им AI adoption? Там бы начать с computer adoption.
Так, что-то я отвлёкся. Так пузырь всё-таки или сингулярность? Скорее всего, как и всегда, ничего не произойдёт, и окажется, что текущий скачок в продуктивности был всего лишь обязательным требованием к тому, чтобы расти на те же самые 3% в год, как и в предыдущие десятилетия.
@knowledge_accumulator
1👍47❤14🤔7🥴6👏3🤡2💯1
Безбилетный проезд по пространству состояний
Когда разработчик сооружает компьютерную игру, в его планы обычно входит реализация некоторого POMDP - марковского процесса принятия решений, пусть даже с частичной наблюдаемостью.
Но на наше счастье, реализацией этого POMDP занималась всего лишь большая команда обезьян, а не сверхинтеллект, и поэтому она не идеальна, а значит, можно попасть в состояния игры, которые заранее не были задуманы.
В качестве примера посмотрим на мою любимую GTA: San Andreas. В ней совпало 2 фактора - она очень большая и разнообразная, но при этом в начале нулевых, когда её создавали, игровые движки ещё не были настолько продвинутые и безопасные.
Состояние игры - это просто большой массив байтов. Если всё идёт по плану, то у каждого байта есть конкретное назначение, скрипты читают и пишут только то, что им положено, и только тогда, когда положено. Короче, всё держится на честном слове. Если перемещаться по заранее заданным маршрутам, состояние игры будет оставаться "корректным".
Но... зачем себя ограничивать? Зачем оставаться в клетке, когда есть целых 2^N состояний, открытых для исследования, а не жалкие крохи, предусмотренные разрабами?
Рассмотрим на примере, как происходит открытие портала в ад. Есть такая глобальная переменная $ON_MISSION - бинарный флаг, Если она равна 0, то герой находится вне миссии, и ему можно начать миссию. Если она равна 1, то он на миссии, и новую начинать нельзя. Что может пойти не так?
В игре есть мобильный телефон. Когда вам звонят, $ON_MISSION переключается на 1, а когда звонок заканчивается, она переключается на 0 - звонок считается чем-то вроде миссии. Но эта логика реализована не совсем безопасно. Если вам в один и тот же кадр поступает звонок и вы начинаете дополнительную миссию, то происходят параллельные манипуляции с этой переменной двумя разными скриптами.
В случае определённых действий игрока, можно добиться, чтобы этот звонок определённым образом застрял в памяти, а после выхода из дополнительной миссии в $ON_MISSION будет снова записан 0. Получается, что звонок в памяти есть тогда, когда его быть не должно.
Теперь, если вы начнёте какую-нибудь миссию, переменная $ON_MISSION станет равна 1, а затем активируете тот самый отложенный звонок, то в момент завершения он перепишет $ON_MISSION обратно в 0, хотя вообще-то миссия активирована.
Корректность состояния мира - вещь крайне хрупкая. Разбив её, перемещение по этому пространству состояний перестаёт поддаваться человеческой логике. Возможность перемещаться по миру с $ON_MISSION = 0, будучи на миссии, открывает портал в параллельные вселенные. Буквально.
Продолжая ломать состояние всё дальше и дальше, можно триггернуть так называемую команду "Goto 0", которая начнёт новую игру внутри уже существующей игры. Прям начиная с первой заставки. Игра начнёт перезаписывать уже текущее состояние поверх существующего, но не сбросит его полностью. В игре начинает существовать 2 разных главных героя, которыми мы управляем одновременно. Вновь появляется возможность пройти первую миссию, хотя можно зайти и открытую в "прошлой" игре.
Как можно предположить, игра в этот момент уходит в полный разнос. Как насчёт нового языка программирования CJ++?
Игроки научились исполнять произвольный игровой скрипт, записанный в локации в памяти, в которую записывается ваша последняя ставка в определённом казино на определённом колесе фортуны.
Теперь скоростное прохождение игры за ~40 минут заключается не в проскакивании всех сюжетных миссий, а в сетапе этого глюка с последующей записью команды "прыгни в конец игры" с помощью программирования в казино, и затем запуска исполнения этого самого кода. Если кому интересно, вот есть видео с более подробным объяснением.
Есть в этих блужданиях по POMDP какая-то необъяснимая романтика...
@knowledge_accumulator
Когда разработчик сооружает компьютерную игру, в его планы обычно входит реализация некоторого POMDP - марковского процесса принятия решений, пусть даже с частичной наблюдаемостью.
Но на наше счастье, реализацией этого POMDP занималась всего лишь большая команда обезьян, а не сверхинтеллект, и поэтому она не идеальна, а значит, можно попасть в состояния игры, которые заранее не были задуманы.
В качестве примера посмотрим на мою любимую GTA: San Andreas. В ней совпало 2 фактора - она очень большая и разнообразная, но при этом в начале нулевых, когда её создавали, игровые движки ещё не были настолько продвинутые и безопасные.
Состояние игры - это просто большой массив байтов. Если всё идёт по плану, то у каждого байта есть конкретное назначение, скрипты читают и пишут только то, что им положено, и только тогда, когда положено. Короче, всё держится на честном слове. Если перемещаться по заранее заданным маршрутам, состояние игры будет оставаться "корректным".
Но... зачем себя ограничивать? Зачем оставаться в клетке, когда есть целых 2^N состояний, открытых для исследования, а не жалкие крохи, предусмотренные разрабами?
Рассмотрим на примере, как происходит открытие портала в ад. Есть такая глобальная переменная $ON_MISSION - бинарный флаг, Если она равна 0, то герой находится вне миссии, и ему можно начать миссию. Если она равна 1, то он на миссии, и новую начинать нельзя. Что может пойти не так?
В игре есть мобильный телефон. Когда вам звонят, $ON_MISSION переключается на 1, а когда звонок заканчивается, она переключается на 0 - звонок считается чем-то вроде миссии. Но эта логика реализована не совсем безопасно. Если вам в один и тот же кадр поступает звонок и вы начинаете дополнительную миссию, то происходят параллельные манипуляции с этой переменной двумя разными скриптами.
В случае определённых действий игрока, можно добиться, чтобы этот звонок определённым образом застрял в памяти, а после выхода из дополнительной миссии в $ON_MISSION будет снова записан 0. Получается, что звонок в памяти есть тогда, когда его быть не должно.
Теперь, если вы начнёте какую-нибудь миссию, переменная $ON_MISSION станет равна 1, а затем активируете тот самый отложенный звонок, то в момент завершения он перепишет $ON_MISSION обратно в 0, хотя вообще-то миссия активирована.
Корректность состояния мира - вещь крайне хрупкая. Разбив её, перемещение по этому пространству состояний перестаёт поддаваться человеческой логике. Возможность перемещаться по миру с $ON_MISSION = 0, будучи на миссии, открывает портал в параллельные вселенные. Буквально.
Продолжая ломать состояние всё дальше и дальше, можно триггернуть так называемую команду "Goto 0", которая начнёт новую игру внутри уже существующей игры. Прям начиная с первой заставки. Игра начнёт перезаписывать уже текущее состояние поверх существующего, но не сбросит его полностью. В игре начинает существовать 2 разных главных героя, которыми мы управляем одновременно. Вновь появляется возможность пройти первую миссию, хотя можно зайти и открытую в "прошлой" игре.
Как можно предположить, игра в этот момент уходит в полный разнос. Как насчёт нового языка программирования CJ++?
Игроки научились исполнять произвольный игровой скрипт, записанный в локации в памяти, в которую записывается ваша последняя ставка в определённом казино на определённом колесе фортуны.
Теперь скоростное прохождение игры за ~40 минут заключается не в проскакивании всех сюжетных миссий, а в сетапе этого глюка с последующей записью команды "прыгни в конец игры" с помощью программирования в казино, и затем запуска исполнения этого самого кода. Если кому интересно, вот есть видео с более подробным объяснением.
Есть в этих блужданиях по POMDP какая-то необъяснимая романтика...
@knowledge_accumulator
1❤23🔥12👍6🤯3