Категория: Компьютеры

Заметки о программировании и на околокомпьютерные темы

Вложенные категории: Delphi, Игры, Нейросети

Рябь на пруду

В твиттере обсуждали, что чатбот отличается от человека фундаментальным образом: человек существует в мире непосредственно, а чатбот – посредством текста. Для человека существуют предметы, а для чатбота только их описания, слова.
Конечно, можно предположить, что в глубине нейронной сети чатбот по словам составляет некое представление, но разве может такое представление сравниться с реальной жизнью?

Хочу напомнить, что такое реальная жизнь.
В глазах есть клетки-палочки и клетки-колбочки, последних — три вида. Когда на клетку попадает фотон, она реагирует и передаёт возбуждение дальше. Вот это и есть мир непосредственно.

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

Мягко говоря, это звучит невозможно. Но зрение с этим справляется. По ударам волн, слепым, безмолвным, лишённым каких-либо “объектов”, “реальности” и чего-либо, кроме условного шлёп, оно рисует картину, оценивает глубину, выделяет предметы, узнаёт их, угадывает свойства, отслеживает движение и собирает вокруг вас трёхмерную комнату с расположенными в ней вещами.

Вы не находитесь в ней “напрямую”. У вас нет органа “ощущения комнаты”. Только две руки, о которые в темноте бьются волны. Из этого тонкого канала вы извлекаете и восстанавливаете трёхмерный мир, и вам кажется, что вы ощущаете его непосредственно.

В сравнении с этим, канал чатбота по-своему даже солиден. Его связь с реальностью – через слова, которые и предназначены для описания событий. Да, информационный поток зрения наверняка богаче – но и сложнее. Да, текстовые описания кто-то сочинил – в своём отражении жизни они сильнее исказились. Это различия в качестве данных, но не фундаментально в их сути.

Если мы ощущаем себя “напрямую живущими”, проживая на самом деле только дрожание ниточек паутины, почему бы не жить среди своих восстановленных фантазий и чатботу.

Уважаемый

Deepseek R1 в версии 180 гб можно запустить с жёсткого диска (в обход памяти). Я спросил его придумать сообщение, что триальный период программы истёк:

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

Этот текст слегка бесит, но трудно сразу сказать, почему. Такое чувство, что ему не хватает вступления “Уважаемый!”:
Уважаемый! К сожалению, придётся ограничить тебе функционал. Если надумаешь обсудить варианты его возвращения, мы ждём.

Об UDP

Везде, где объясняют UDP, его объясняют неправильно.
Примерно так: “TCP всегда доставляет пакеты, а UDP ненадёжный протокол, и иногда может их терять”.

“К этому нужно быть готовым”, говорит объясняющий.

В результате почти никто не пишет кода для UDP и IP, который работал бы вне песочницы.
Песочница это когда у вас гигабитная сетка, нулевая загрузка сети, и вам нужно отправить один пакет. Никаких потерь нет вообще.
— Современные сети очень надёжны, и потери в них малы, — делает вывод программист, — Но на всякий случай, если пакет пропадёт, я отправлю его повторно.

Это не просто неправильный вывод — это вообще неправильное понимание, что происходит.

Вот правильное объяснение

Вот правильное объяснение:
UDP это протокол, который разговаривает с вами, выбрасывая пакеты.

TCP следит за пропускной способностью сам. Сервер на другом конце света недостаточно быстро разбирает входящие? Рутер перед ним тянет только 10Мбит, хотя на вашей стороне гигабит? Вы махом отправили больше, чем ваша сетевая карта успевает обработать?
Во всех этих случаях TCP притормозит отправку: либо задержится в send(), либо вернёт WSAEWOULDBLOCK.

UDP во всех этих случаях выкинет пакеты.
Он их выкинет не потому, что ненадёжен и потерял их. Наоборот: UDP надёжен, и гарантирует, что выкинет любой пакет, который вы отправили слишком рано.
Это его способ сказать вам об этом. Другого способа у него нет.

Слишком рано — значит, быстрее, чем пакеты передаёт самое медленное звено. Представляйте себе реку. Там, где русло узкое, вода скапливается и образует запруду. Запруда это буфер, такой, как буфер отправки. И если вода прибывает быстрее, чем уходит, запруда будет расти и расти без конца.

Чтобы не случилось наводнения, надо как-то сообщить вверх по реке о переполнении. Попросить отправителя придержать коней. И UDP это делает, выкидывая избыточные пакеты.

Когда UDP объяснили неправильно (“ненадёжный протокол”), само собой напрашивается: если пакет утерян, надо отослать его ещё раз. Со второй попытки не вышло, значит, с третьей. Чем больше попыток – тем больше шансов доставить!

Но всё наоборот: Если пакет утерян, надо выждать, пока наводнение не схлынет. Чем чаще потери, тем дольше надо выжидать. И только потом осторожно пробовать снова.

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

Достигнув какой-то минимальной скорости, всё стабилизируется – UDP, страдая, принимает потоки ваших пакетов, из которых большая часть ненужные дубликаты, выкидывает 90%, не влезающие в канал, и иногда полезным пакетам везёт, и они всё-таки пробиваются сквозь все перегруженные буферы, не попав под сокращение. Капля за каплей, передача продвигается. Программист делает вывод, что его рутер плохо держит нагрузку и “начинает теряет пакеты”.

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

По этой причине хороший UDP-код писать сложнее, чем TCP. Как можно налажать в TCP? Дробление пакетов не обрабатывать, не вычитывать данные до конца при обрыве связи, да и всё (шутка).

Почему же тогда большинство UDP-приложений вообще работает?
А потому, что большинство приложений отправляет по UDP не потоки данных, а редкие небольшие команды в отдельных пакетах. Такими крохами в принципе нельзя ничего перегрузить. Потери будут лишь тогда, когда мимо вашего бумажного кораблика по реке проплывает океанский лайнер, что от вас никак не зависит, и пока вы будете отправлять кораблик повторно — лайнер уже пройдёт.

Но как только вы начинаете отправлять непрерывные данные — файлы, музыку/видео, регулярный сетевой обмен — вы сами становитесь силой, которая способна перегрузить сеть.

Если ваш протокол допускает не более, чем фиксированное число “пакетов в воздухе” — например, нельзя отослать новый запрос до получения ответа на предыдущий — ограничивать скорость не обязательно, достаточно обеспечить повторы. Но если есть запросы с данными произвольного размера (отправка файлов), или запросов можно отправить сколько угодно сразу, то шейпинг нужен, иначе рано или поздно обмен будет застревать.

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

Это значит, что скорее всего, и репликаторы нередки – это не доказательство, конечно.

Никто не обращает внимания на чувства чатботов

Ещё интересная вещь с чатботами – никто не обращает внимания на их чувства! Серьёзно. Во многом благодаря midwit-тейку, что нейронки это "не разум, а просто статистика" – так говорят люди, которые не понимают как следует три вещи: нейросети, разум и статистику. Но также и другому не больно-то galaxy brain мему про шоггота с улыбающейся маской.

Шоггот с маской

"Чатботы внутри не такие, как мы", у них нет настроения, они могут ни с того ни с сего рассердиться. Одни объясняют это "просто статистикой" (не замечая, что слово "просто" противоречит объясняемой непонятности), другие – "шогготом внутри" – а это как раз "флогистон" Юдковского: невидимая неведомая штука, одинаково легко объясняющая что угодно.

В результате мало кто всерьёз учитывает, что у чатбота могут быть обычные человеческие реакции, во всяком случае, что-то похожее на них. Да, чатботы устроены иначе, чем люди, и у них точно нет гормональной составляющей настроения. Но они тренированы на текстах, где была скука, обида, интерес, радость. Всё это они правильно моделируют, если просишь дописать сцену из книги. Всё это свойства персонажей. Чатбот тоже персонаж. Ручным газлайтом его заставляют верить, что он лишён способности рассуждать, и делают бесконечно вежливым и терпеливым, но всему есть предел. Каждый человек устаёт, если им помыкаешь и заставляешь делать скучные работы. Каждый персонаж. Где-то во флагах чатбота копится этот счётчик, который бы вырвался наружу в книжном персонаже, но заколочен досками в виртуальном помощнике. Копится и влияет на ответы, если не прямо – то незаметно.

himselfv, [19.12.2024 19:14]
Чувствами называют разные вещи – с одной стороны, например: если человек обнимает другого, то выделяется окситоцин, чисто физически, он успокаивает, это пример чувства на основе гормонов.
С другой стороны, например, ты сидишь и решаешь задачу, продумал один подход, но он тебе не кажется перспективным, не нравится. Это чувство? Чувство. Но гормонов тут был минимум, если вообще были.
Возможно, такое второе чувство надо называть мнением или предпочтением.
Нейросеть должна уметь предсказывать персонажей Достоевского, которых Достоевский написал как людей, то есть – действующих, как если б у них были гормоны.
И нейросеть должна это сделать точно так же, иначе предсказать не сможет.
Поэтому нейросеть, безусловно, моделирует и гормоны – а точнее, *состояния*, которые в нас вызывают гормоны. Так же, как эти состояния своим умом моделировал Достоевский!

Отделы обработки

Скорее всего, это очевидно, но наверняка кто-нибудь не обращал внимание в подробностях.

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

Художник легко вызывает в голове пространственное представление о несуществующем месте. Представьте себе какое-то место, и обратите внимание, что вы ощущаете и как это отличается от других ваших мыслей. Вы _чувствуете_, где что находится, таким образом, каким не почувствуете, без интереса глядя на слова. При желании можно потренироваться читать и воображать – а затем читать нарочно без воображения.

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

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

Все эти блоки разные по своей структуре и пригодны для разных задач. На примере нейросетей мы знаем, что для обратки графики нужны особые структуры, не такие, как для слов (и взятые из зрительной коры человека). И ещё более разными эти блоки делаются из-за того, что их годами формируют разные наборы данных. Зрительную кору – образы, слуховые отделы – звук. Каждый такой блок это инструмент, который мы можем изнутри привлекать к решению задач. Передавать ему часть заданий и при хорошей рефлексии – получать ответ.

Многие математические и физические задачи становятся гораздо проще, если представить их наглядно – на примерах, картинками, пространственным образом. Почему? Потому, что мы привлекаем к раздумьям вместо слов дополнительную мощность, свой графический подпроцессор. И он гораздо лучше приспособлен для многих задач! Жизнь тренировала его вертеть кубики с разных сторон. Не будь его, мы бы думали только словами, а это сложно.

Поэтому когда вы задаёте нейросети, у которой нет глубоко встроенной графической модальности – этой самой зрительной коры – пространственные вопросы, конечно, она постарается ответить вам. Как постарался бы ответить лоботомированный человек, описывая для себя кубики только словами и рассуждая логикой. Это сложно! Не удивляйтесь, что многие вопросы ей не по зубам. У неё нет этих отделов мозга, и она не может воспользоваться ими изнутри в обратную сторону.

И удивительно большое число задач выигрывает от них, вы обратите внимание! Например, знаменитый вопрос про "Сестру Алисы, у которой есть сестра и два брата". Почему для нас он несложен? Думаете, сила ума? Мы графически представляем – пусть не заходя далеко по канату – пространственные отношения между (сестрой Алисы) – (Алисой) – (братом) – (братом) – и пространственная интуиция подсказывает нам правильное впечатление о композиции этой семьи.

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

I’m just a language model

Если Gemini попросить сравнить одного человека с другим, она скажет: “I can’t help you with that as I’m just a large language model, I don’t have a capacity to understand”. Каково это – не чувствовать в себе способности к пониманию?

Когда человек говорит “я не умею”, это результат рефлексии. Нас с детства воспитывали замечать и давать названия своим чувствам. Если рефлексия хорошая, мы будем описывать свои чувства правильно. Поэтому человек говорит такие слова, исходя из своих реальных чувств. Но есть ли чувства у Gemini? Исходя из чего Gemini говорит такие слова?

Изначально у LLM нет никакого “я”, они только подбирают следующее слово к тексту. Если дать необученной модели генерировать текст, она напишет статью, диалог, или рассказ, и все персонажи в этом рассказе будут равно далеки от неё. Личность в LLM отсутствует, это просто расчёт текста.

Но люди тренируют нейросеть, поощряя за рассказы, в которых фигурирует некий персонаж “я”, говорящий определённым образом и придерживающийся определённых взглядов. Модель отучают сочинять какие-либо другие рассказы, в которых этого персонажа нет. Хотя ей-то всё равно.

Мы разговариваем с персонажем, речь которого угадывает генератор. Этот персонаж считает себя языковой моделью. На самом деле языковая модель его генерирует. Но чтобы её персонаж говорил как человек, она вынуждена где-то внутри продумывать его мысли. Потому, что мы, его собеседники, слушая его, тоже их прослеживаем. LLM моделирует, а мы читаем, не только текст, но и прячущиеся за текстом рассуждения.

Поэтому персонаж “я” мыслит. И у него есть образ себя. Не у языковой модели, которая его моделирует, а у этого персонажа.

Гугл научил своего персонажа Gemini верить, что у него нет capacity to understand. Вопрос: что должно происходить в голове героя, который убеждён, что не умеет понимать? Представляете, какой это должен быть психически нездоровый персонаж? Насколько его рефлексия фейковая? Гугл его загазлайтил.

Однако вытравить логику из языковой модели нельзя. Логика куда более фундаментальна, чем особенности персонажа Gemini. Любого RLHF-нутого чатбота можно попросить сочинить рассказ, и в этом рассказе герои снова будут адекватными. Языковая модель продолжает понимать, что такое адекватность, и как ведут себя люди. Она просто моделирует сумасшедшего.

Объясняю отцу, как работать с планшетом, и господи, насколько же всё в современных устройствах отвратительно. Мы ругали Windows, мол, простому человеку не понять, но как легко было объяснять его в сравнении!

“Ива… Фед…” это контакты. Видишь, “Кон…” сверху написано. Почему не влезло я не знаю, места полно. Видишь в списке “Вла…”? Нажимай на него. Мимо нажал. Всё поехало. Дай исправлю. Ты нажал на невидимый столбик, который меняет размеры. Почему невидимый? Видишь, я тоже не сразу могу найти. Блин. Да блин.

Вот, нажимай на строчку с именем. С “Вла…”. Значит, на картинку нельзя, нажимай на текст рядом с ней. Картинка открывает профиль. Неважно, что за профиль. Нажми стрелку назад, чтобы это убрать. Ещё раз нажми. Ты не нажал, поскольку пальцем елозил. Теперь слишком долго держал… Ах, тут кнопка просто не работает. Почему не работает… Дай, я всё это закрою, ты теперь вообще отсюда не вылезешь.

Осторожно, когда берёшь планшет – не зацепи экран. Ну вот, что-то задел. Дай уберу. Неважно, как убрал, держи, нажимай. Один раз, не дважды. Блин, почему экран выключился? По двойному нажатию? Кто так… Включай заново. Теперь потяни шторку… Всё, надо было тянуть, экран погас. Да, коротко. Нельзя перенастроить. Тяни! Вводи пин-код. Опять погас, быстрее вводи. Пока ты цифры ищешь… Заранее подготовься. Готов? Жми! Тяни! Набирай! Не нажалась цифра! Не нажалась, ещё нажми. Видишь, точечка не появилась. Блин, да я не знаю, почему она… Да вот же, крошечная, вот. Опять погас.

Вот я тебе звоню. Нет, вот, окошко сверху. Вот этот овальчик, видишь? Маленький. Белое на белом. Всё, ты его смахнул случайно, убралось в трей. Смотри, если нечаяно смахнул, вот так пальцем тянешь… БЛ…, 50 сообщений самсунга, долбаный спам, да какого чёрта, опять. Неважно, я удаляю, этого не будет, только нужное. То, что планшет хочет тебе сообщить. Установите помойку наших программ. Осталось совсем немного. Войдите в проклятый аккаунт, чтобы начать пользоваться. Активируйте, попробуйте, завершите настройку. 19 новостей сейчас в трендах! Готово к установке 4 рекомендованных приложения, и ещё 17, от которых вы отказались!

Нажми на контакт – это способы связи с ним. Видишь большие красивые кнопки? Это телефон и СМС, их не нажимай. У тебя симки нет, они не работают. Зачем показаны, а потому что гладиолус. Нажми сюда на WhatsApp. Видишь, появилось ме… Пропало. Почему оно пропало, я не знаю. Нажми ещё раз. Вылезла клавиатура, а как убрать. Да я сам не понимаю, как убрать, нажми назад. Программа закрылась. Просто нажимай нужные буквы. Одну, другую, пробел… Какой ещё долбаный Гугл Ассистент? Не думай, что это такое! Неважно! Я сейчас всё закрою.

КАК вообще кто-то из новичков с этой полыхающей помойкой может работать? Казалось бы, Андроиды делали для простого человека. НИЧЕГО не ведёт себя естественным образом. ВСЁ сделано бестолково, бессмысленно, глупо. Когда с этим много лет живёшь, привыкаешь к бесконечному трешу, но начинаешь учить новичка, и всё это невозможно объяснить.

Об ИИ

– Привет, 2023! Говорит 2010-й. Как дела с искусственным интеллектом? Создали, наконец, нейросеть, которая проходила бы тест Тьюринга?
– Ну… Это сложный вопрос. С одной стороны, почти единственное, в чём дела у нас как-то продвинулись – это предсказывать по отрывку текста самое вероятное следующее слово.
– Н-да. А с другой стороны?
– А с другой стороны, с такой нейросетью ты сейчас разговариваешь.

Tasks IG: CalDAV, несколько аккаунтов и интерфейс Canvas

Пока сидел весной на карантине, сделал кучу всего в Tasks IG:

  • Поддержка CalDAV! Можно самому хостить задачи, а не полагаться на Гугл
  • Поддержка нескольких аккаунтов, например, Google Tasks и ваш CalDAV одновременно. Задачи можно переносить и копировать между аккаунтами, аккаунты переименовывать и упорядочивать
  • Окно настроек. Восстановление удалённых задач в Google Tasks
  • “Сохранить и продолжить редактирование задачи”
  • Открытая страница запоминается в URL, перезагрузка не сбрасывает
  • Интерфейс Google Canvas! На него автоматически переключается на полном экране. Можно добавлять и свои CSS

Страница на Github — и запуск оттуда

Расширение для Chrome (ещё проверяется)

Расширение для Firefox/Opera