Это мои необработанные заметки из чата Gonzo_ML_chat (Telegram: Contact @gonzo_ML – чат при канале “gonzo-обзоры ML статей”), прояснял свои взгляды на то, как обсуждать функциональные архитектуры интеллектуальных систем. И даже нарисовал там по ходу дела картинку с системными уровнями текущего “мейнстрима” AI. Дал, как всегда, множество ссылок на первоисточники.
Началось всё с того, что я предложил как-то фокусироваться на основной тематике чата: архитектуре текущего поколения всяких нейросеток для моделей мира (скажем, JEPA, или SSM, KAN) и следующим за ним уровнем – program of thoughts. И понеслось:
[Да, архитектуры типа JEPA надо разобирать. Но всё-таки важен “полный стек” – и про OpenAI, и про алайнмент с алармистами, и финансовые и политические уровни модели OSI)))]
Конечно, надо эту серию разобрать. Мне кажется, что прорывы будут именно в робототехнике — там и embodied intelligence, и связь с физическим миром, и парадокс Моравека, и реальное время, и энергоэффективность, и все остальные проблемы. Я как-то столкнулся с тем, что смог нанимать программистов только из игроделов: ибо у них там сохранилось уважение к программам реального времени, моделированию физического мира и прочему такому, и без теории нельзя было обойтись. Поэтому они сохранили инженерный-с-наукой способ обсуждения того, что они делают в своих кодах. А программисты корпоративного софта превратились в ПТУ в мышлении, “как поменять прокладку унитаза, текст прокладки и текст унитаза — вот тут, в промышленном каталоге, доступ через маркетплейс” ))) Поэтому JEPA интересна уж тем, что там явный акцент на робототехнику.
А “полный стек” — стек, извиняюсь, чего именно? ))) Методов мышления, методов работы AI-агентов? При этом OpenAI это же не стек, а что-то в графе создания, и там тоже известно как думать: методы разработки сначала, а потом — команда, которая умеет в такие методы, но есть ещё и команда, которая делает эту команду (граф же создания). То есть надо просто нарисовать какую-то общую системную схемку, как это обсуждать. Скажем, диаграммку из раздела “отношения создания” (и там не стек!) Aisystant
Вот, кстати, пример стека методов (методы там названы по синониму: практики) — на базе общих телесных практик капоэйры.
А вот адаптация к картингу ровно того же самого — Картинговый пост #2. Пост-тренировочный
Это делали разные люди, есть ещё такое для танцев и для плавания (тоже низ тот же самый, а верх — крайне разный).
Может, имелся ввиду вот такой стек методов/практик? Там ещё интересно, что “изучение предмета” какими-то новыми людьми разбивается по таким табличкам на четыре разных типа проектов, каждый из этих типов проектов может повторяться для разных объектов.
Финансовые протоколы и политические протоколы коммуникации агентов (OSI это ж про транспорт сообщений)?
Это, кстати, праксиология — общая теория деятельности для правоведов, экономистов, социологов (скажем, праксиология Мизеса), она же методология для более общего случая. И туда надо ещё вписать распределённые представления (world models в нейронных сетях или чём-нибудь подобном, полученные через обучение представлениям, а не прямым программированием). Вот я тут текст как раз пишу, что без этого нельзя, ставлю распределённые представления world models рядом с классическими в старом GOFAI онтологическими локальными представлениями:
Методология в интеллект-стеке: ailev — LiveJournal
В курсе после этого фрагмента дальше как раз про праксиологию:
Безмасштабная неантропоцентричная методология готова обсуждать и то, каким образом создателями могут выступать сообщества, общества и человечество (в них нет «поручений работ», но разделение труда вроде как есть), но это пока проработано крайне слабо — уже понятно, что для продуктивного создания комфортной/малорисковой среды обитания подходит рыночная экономика и нужно вводить понятия собственности (включая собственность на собственное тело, но и на рабочие продукты) и свободы обмена результатами труда, выходить на праксиологию. Дальше надо описывать то, каким образом происходит разделение труда — каким образом люди узнают, мастерства в каких методах работы не хватает, какие работы будут в дефиците. Это тесно связано с рыночными ценами: они передают информацию в подобных распределённых системах о том, где востребован какой-то вид труда (метод работы), и туда начинается «межотраслевой перелив капитала», то есть в дефицитный труд идут инвестиции. Это и есть содержание методологии в варианте праксиологии, лежащей в основе экономических учений.
Вот, например, праксиология в варианте Murray Rothbard от 1951 года (и нельзя сказать, чтобы человечество сильно продвинулось в построении этой праксиологии):
- Теория изолированного агента (экономика Робинзона Крузо)
- Теория добровольного межличностного обмена (каталлактика, или рыночная экономика)
2.1. Бартер
2.2. Со средствами для обмена
2.2.1. Свободный рынок
2.2.2. Эффекты насильственного вмешательства в рынок
2.2.3. Эффекты насильственного запрета рынка (социализм) - Теория войны — враждебная деятельность
- Теория игр (например, работы von Neumann and Morgenstern)
- Неизвестное
Как при этом должны быть устроены сообщества, общества и человечество в целом политически и как там должно быть устроено право, основанное на праксиологии как общей теории деятельности — это большой вопрос. Наш курс методологии не будет касаться в текущей версии практик/деятельности/труда сообществ, обществ и человечества, равно как будет мало говорить о «методе работы станка» или «методе работы робота», хотя в этом случае всё будет проще и понятней, разве что станок и робот не могут принимать решений о методе своей работы, это за них делают люди и организации людей, в состав которых входят и станки, и роботы. Но сейчас с развитием машинного интеллекта возможен и другой вариант рассмотрения: какой-нибудь отдел может быть представлен как компьютер, в состав которого входят люди — и по мере развития постепенно люди замещаются компьютерами, это и есть тренд «автоматизация всего», концепция киборга (cybernetic organism) как образа агента будущего заменяется концепцией гиброта (hybrot — hybrid robot ).
Это уже опубликовано в составе курса, Aisystant
Так что нельзя сказать, что обсуждение таких вопросов у нас идёт с полного нуля, “как будто мы пришли с улицы, помыли руки и занялись диванной аналитикой в этих ваших интернетах”. Нет, сразу встаём на плечи гигантов )))
Если и говорить про какой-то платформенный стек или функциональный стек, то я тут много раз писал один из начальных вариантов, при этом там не совсем даже “стек”, а некоторая такая иерархия функционального синтеза (и можно смотреть как там идёт модульный/конструктивный синтез — какая там может быть концепция системы, если брать классику).
Вот я даже красиво картинкой дал (но, конечно, аутлайн тут проще в сопровождении. Я делал картинку сам через аутлайн, но гнездование тут плохо будет форматироваться в чате. Это очень, очень грубо — просто для общего представления. И там плохо отражено “или” в архитектурных решениях или “часть-целое” (не хотелось городить полную гамбургер-диаграмму, как это предлагает делать Gielingh, например, в GARM-paper.pdf — Яндекс Диск, недаром его подход пошёл в PLM “в принципе”, но без его нотаций, там есть нюансы). Но для начала обсуждений сойдёт. Это всё-таки про концепцию использования и концепцию системы (дальше можно обсуждать, о какой паре уровней мы тут будем говорить).
И там я не коснулся аппаратуры, ибо это ж всё hardware aware должно быть.
Я тут показал не столько разнообразие архитектур, сколько просто наметил какие-то уровни функциональной декомпозиции/синтеза (разные традиции именования: в программах это “синтез программ” или “синтез логики”, в железной инженерии и архитектуре — функциональная декомпозиция, “разузловка”).
Так что “альтернативные реализации” делаются через гамбургер-диаграмму, например, из работ Gielingh (ссылку дал, поглядите там — в описании вариантов решений по нескольку веток, а потом при описании реализации — выбран один из вариантов. Скажем, функции активации бывают разные — но при описании какой-то конкретной функции активации придётся её указать).
Так что все этим АльфаЗеро и прочие альтернативные архитектуры — ну, там появляется ещё и симулятор мира, например, и генератор seeds для выработки реально случайного значения, а если это эволюционные алгоритмы типа EnhancedPOET, то и память решений. У меня всё это сейчас ушло в Program of Thoughts, решения, обвязывающие какую-нибудь модель мира из одной или нескольких экспертов с роутером (то есть считаем, что какая-нибудь MLLM в варианте MOE).
Ещё тут не отражен подход Software 2.0, когда “учим основную сетку, потом морозим веса и учим один слой” — функционально-то они разые получаются. Но там вроде я слои отдельно написал.
Я хотел вот этот язык описания архитектур отдельных сеток выколупать как раз из Gonzo-обзоров, они идеальны для этого. Скажем, “Если полученные новые варианты вставить в residual blocks (с pre-LayerNorm), то получаются xLSTM блоки, которые можно стыковать. Есть два варианта xLSTM блока: с post up-projection и pre up-projection. Первый (post, как в трансформерах) делает нелинейную суммаризацию прошлого в своём оригинальном пространстве, затем линейно преобразует его в пространство более высокой размерности, применяет там нелинейную функцию активации и переводит обратно в пространство поменьше. Второй (pre, как в SSM) сначала переводит в пространство размерности побольше, там делает суммаризацию, и переводит обратно. См. картинки. Для первого обычно используется sLSTM, для второго mLSTM (в высокоразмерном пространстве матричная память лучше работает)” — и тут понимаешь, что есть “блоки”, один из типов их — residual blocks. Есть объект “прошлое”, есть “пространства”, есть “преобразователь” (например, “линейный преобразователь”), есть “функция активации”, есть “суммаризация”, есть “матричная память”. Вот на мелком уровне это и есть единички функциональной декомпозиции.
[А почему не взять тогда просто какой-то агентский фреймворк от каких-то авторов? Как думать про устройство агентов, у которых есть функция обучения]
Ну, агентских фреймворков до чёртиков самых разных, это всё отголоски когнитивных архитектур из прошлого, тысячи их — Cognitive architecture - Wikipedia (на этой странице только чуть-чуть древних, а так их каждый день десяток предлагается).
Повторюсь, что тут важно выделить какие-то уровни рассмотрения, а уж внутри уровня может быть дикое количество альтернативных решений.
Всё-таки смотрите или курс системного мышления про системные уровни, или работу Gielingh, с его гамбургер-диаграммами альтернативных выборов, чтобы понять идею этой альтернативности.
Ну вот есть разные варианты этого “обучения агента” — с учителем, без учителя, на примерах из виртуального мира и переносом результатов в реальный мир, а также путём настройки вообще чего-то не слишком обучаемого (я обучаю будильник звонить в восемь утра, но приносить кофе обучить не могу, человека обучаю словами, кошку обучаю дрессировкой без слов — а Levin говорит о такой характеристике агента, как вменяемость. Если могу речью изменить поведение, то есть обучить, это высокая вменяемость. Если дрессировкой — пониже, если только перестроить конструкцию — совсем низкая.
Ну, и можно закладываться на самый общий случай (сверху вниз), а можно — от достигнутого, обобщая снизу вверх. В текущей ситуации или надо найти какой-то хорошо проработанный фреймворк (скажем, у Friston такое есть, там active inference до самого низа и до самого верха, иерархия самых разных агентов, включая агента, воплощающего функцию активации), или всё таки снизу вверх. Например, обсуждая реальное, от потребностей, устройство фреймворков program of thoughts и реальные прикрутки болтами графов знаний к нейросеткам (там сразу несколько вариантов, замечу — в жизни представлены все).
Вообще, для агентов я бы предпочёл безмасштабное многоуровневое описание. Это можно сделать, если принять идею панпсихизма в версии минимального физикализма — “агенты из агентов из агентов из агентов”. Варианты тут могут быть разные.
Вот несколько:
— Ванчурин со товарищи, агентом там IPU (information processing unit), статья про это — https://www.pnas.org/doi/full/10.1073/pnas.2120037119
— Levin, echnological Approach to Mind Everywhere: An Experimentally-Grounded Framework for Understanding Diverse Bodies and Minds, https://www.frontiersin.org/articles/10.3389/fnsys.2022.768201/full
— Фристон, Филдс и прочие из active inference, это идеи, на которых делается VERSES, — Designing Ecosystems of Intelligence from First Principles, [2212.01354] Designing Ecosystems of Intelligence from First Principles
— вот пример Fields, который пишет прямо о том, что системы бьются на части (Ванчурин об этом пишет наоборот — части объединяются в системы более высокого уровня), там в статье одно из “ключевых слов” Multiscale competency architecture (ах, “многомасштабная архитектура мастерства”), https://chrisfieldsresearch.com/FEP-compart-pre.pdf
То есть это не “сделал обучаемого робота”, Software 2.0, это всё-таки учёт иерархии, там всегда должен быть уровень выше уровня автономного агента — агент определяется через его окружение, в котором обычно тоже агенты. Поэтому нужны системные безмасштабные описания.
Ничего, прорвёмся.
Я бы начал тут с того, что всё-таки понял, на каком языке функционального синтеза пишутся gonzo обзоры по архитектурам типа трансформера или мамбы — но это надо делать, когда понятно, что эти сетки вставляются сегодня не в чаты, а в program of thoughts. Вот так, приземлённо.
Сам же Фристон со товарищи, Ванчурин и прочие — они говорят, что это всё тупичок, и они идут другим путём ))) И даже пишут какие-то коды, все они.
Вопрос сложный, меня больше интересует язык, на котором можно обсуждать все эти подходы — меня интересует сама методология. Ибо нужны какие-то обученные люди, которые не растеряются, когда им придётся прыгать от одного фреймворка в другой фреймворк, ибо при этом прыжке у них сохранится хоть какое-то знание о предметной области, язык разговора про все эти архитектуры (если это, конечно, будет называться старым словом архитектуры — у слова сегодня два разных значения).
Если нужно всё-таки ввести эпистемологию как подхакивание модели мира, то у того же Фристона и Филдса называется “коммуникация beliefs”, и там ещё и язык для этой коммуникации должен эволюционно появиться. Это обсуждается подробно у того же Fields, Так что я бы не выдумывал тут свою какую-то онтику, а брал эту онтику у квантового физика, уже согласованную с active inference (принципом наименьшего действия из физики) — вот тут этого много: https://chrisfieldsresearch.com/ (и дальше там можно ещё на работы соавторов смотреть, прежде всего на Friston, который как раз топит на тему отсутствия beliefs у современных LLM и тем самым отсутствия коммуникации по поводу beliefs и тем самым отсутствие собственно агентности, автономности).
Фишка в том, что есть две идеи:
— безмасштабные описания, то есть описание каких-то агентов в общем безмасштабном языке (это ход по большому счёту на физику и физическое моделирование)
— эмерджентность, что заставляет для каждого системного уровня формулировать свою предметную область (инженер кирпичей из силиката — это не инженер строитель зданий, инженер-строитель зданий — это не девелопер городской застройки, они все говорят на разных языках. Ну, или разработчик чипов и разработчик компьютеров на основе этих чипов — они говорят на разных языках).
Чтобы обсуждать второй пункт, надо разобраться с первым — иначе эти уровни выделить нельзя, для которых свой язык заводить надо.
Эх, всё это у меня в курсах прописано, но я понимаю, что для конкретной предметной области это надо всё, конечно, аккуратно использовать — но по факту это означает, что я вот прямо сейчас должен всё бросить, и провести аккуратно эту работу, “показать как надо”. Но я всё-таки надеюсь, что курс “Методология искусственного интеллекта” (каждое слово тут можно критиковать и менять, но хоть с чего-то начать) всё-таки писать буду не я, а человек, который разобрал по косточкам множество таких архитектур (сначала ANN, а сейчас он потихоньку переключается, как я понимаю, на уровень выше — program of thoughts), я имею ввиду @che_shr_cat ))) А я для этого методологию создания методологий буду подтаскивать )))
[а это всё Software 2.0, 3.0, 4.0? Что там с программированием через промпты?]
Не очень понял вопроса (так, про номер Software — это ж классификация, то есть вопрос о терминах. Но вы ж, вроде, не про это. Вот тут про поколения софта в курсе “Интеллект-стек”, и там ссылки на литературу, там всего три поколения (нет четвёртого): Aisystant
Когда мы пишем промпты, то это в общем виде уровень выше LLM (там ещё ведь и промпты может писать и переписывать та же самая или другая сетка, потом пихать их себе же на вход, запоминая где-то в локальной памяти), то есть уровень program-of-thoughts. За это топит сейчас John Sowa, “нейросетка должна быть под контролем классической компьютерной программы, иначе ей верить нельзя”.
Дальше там должен быть уровень про beliefs, но если program of thoughts может запускать обучение или хотя бы файнтьюн, то вроде и это можно сделать.
[program of thoughts имеются в виду эти [2211.12588] Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks или LLM programs? [2305.05364] Large Language Model Programs]
Я понимаю это как комбинацию обоих этих подходов. Грубо говоря, “что если задействовать фреймворк вроде langchain с LLM типа toolformer на манер MoE” ([2302.04761] Toolformer: Language Models Can Teach Themselves to Use Tools).
Вот тут я писал полгода назад обзорчик, но это “аж полгода назад”, многабукофф про эволюционные стратегии/практики/алгоритмы и проблему универсальности стратегии/практики/алгоритма:
— Многообразие якобы универсальных алгоритмов: бесплатных обедов не бывает, универсальности нет
— Современные нейросетевые архитектуры могут решить только часть задач, которые могут решить люди
— Какие архитектуры AI-агентов сейчас на слуху?
— Эволюционная стратегия/алгоритм как продолжение практики/культуры/стиля/метода работы.
— Итого: универсальность вроде как бывает, но не слишком на неё полагайтесь. Имейте разные решения для разных частей ниши, специализируйте эти части на своих нишах. Внутри ниши выбирайте те новинки, которые способны как-то круто меняться.
Текст абсолютно непопса, но если хотите разобраться — все ссылки на первоисточники к вашим услугам. О чем там “паровозик” синонимов стратегии/практики/стили/методы/алгоритмы — в курсе “Системное мышление”.
За полгода я многое бы там поменял. Сейчас я переписываю курс по методологии, там будет сотня страниц про стратегирование — вот это там отражу на каком-то общем уровне (ибо рассказанное применимо и для агентов на базе LLM++, и на базе живых людей, которые натаскивают себе инструментов в том числе вроде агентов на базе LLM++, и для корпораций, которые натаскивают себе людей-спецов с их инструментами).
[Но если рассматривать агентов самих по себе, то это ж бесперспективно. Надо всегда с их сообщества начинать!]
Это обычный системный взгляд: ни один уровень не рассматривается вне других уровней, но всё-таки на каждом уровне появляется свой язык рассмотрения. Так сказать, редукционизм и холизм в одном флаконе. То есть когда рассматриваете функционирование печени, то только в контексте функционирования всего организма в целом и только в контексте функционирования клеток печени. Поэтому схему надо смотреть как “ничего нельзя рассматривать вне контекста агентечества (ибо уже ж не человечество), смотрим на весь контекст в целом” и как “давайте поглядим на вот этого агента, как он устроен” и даже дальше “давайте поглядим на эту функцию активации, как она устроена, какие там проблемы с ней” — кушаем этого слона не сразу, а по кусочку за раз (в нарезке на рассмотрение объектов разных системных уровней и в нарезке на каждом уровне на рассмотрение объектов разными дисцплинами, это способ борьбы со сложностью).
Ещё тут интересны результаты Ванчурина-Кацнельсона-Вульфа-Кунина, они примерно такие же: в эволюции невозможно отследить развитие какого-то одного вида. Нужно всегда рассматривать развитие только всех видов вместе, иначе не получится. И дальше поднимается проблема биологического индивида — а что считать эволюционирующим индивидом? Геном, который очевидно эволюционирует? Или таки организм с его феномом? Популяцию (ибо даже самец и самка — это популяция, больше одного организма)?
И вот дополнительное свидетельство, что неправильно рассматривать “голую LLM” без уровня программирования над ней: работа с показом ограничений SSM и трансформеров — они плохи для длинных рассуждений (complex reasoning), то есть не могут совладать с функциональной композицией, что требует недюжинного ума. a theoretical framework based on complexity theory to explain SSMs’ limitations. Moreover, we present extensive empirical evidence demonstrating how these limitations impair function composition and algorithmic task performance. Our experiments reveal significant performance drops as task complexity increases, even with Chain-of-Thought (CoT) prompting. Models frequently resort to shortcuts, leading to errors in multi-step reasoning – [2405.16674] Limits of Deep Learning: Sequence Modeling through the Lens of Complexity Theory, хайлайты в треде у автора: x.com.
Мои три копейки: так люди с ручкой-бумажкой только тянут длинные выводы, а совсем уж длинные выводы тянут коллективным мышлением — пишут выводы, критикуют их, находят ошибки, исправляют, и всё это иногда тянется годами. Поэтому сама постановка задачи “один винтик не держит всего корпуса” представляется неверной — ну, поставьте три винтика и необязательно в одном только месте (CoT замените на что-то покруче в этом месте, в том числе дайте выход на инструменты типа toolformer).