В настоящее время ключевых игроков в области ИИ можно разделить на две основные группы: сторонники ИИ с открытым исходным кодом и сторонники закрытого ИИ.
Интересно, что одним из крупнейших сторонников закрытого ИИ является сама OpenAI, которая не публикует исходный код своих моделей, а лишь предоставляет к ним доступ. Обычно они утверждают, что публиковать эти модели слишком опасно, поэтому необходим централизованный контроль, как и в случае с атомной энергетикой. Очевидно, что у этого аргумента есть основания, но нетрудно увидеть деловые интересы, стоящие за этим решением. Если бы исходный код ChatGPT был доступен каждому, кто бы платил за услугу?!
Напротив, сторонники ИИ с открытым исходным кодом, такие как Meta (Facebook), считают, что закрытый ИИ препятствует прогрессу и что ИИ с открытым исходным кодом — это правильное направление. Конечно, здесь стоит увидеть и бизнес-аспекты. Для Meta модель ИИ не является основным продуктом. Для них ИИ — это всего лишь инструмент, и совместное использование модели не наносит ущерба бизнесу. Напротив, это дает бизнес-преимущество, поскольку Meta впоследствии сможет использовать разработки сообщества. Однако у этой модели есть и небольшая проблема. Это не совсем открытый исходный код.
Модель ИИ — это, по сути, огромное математическое уравнение с настраиваемыми параметрами. Эти параметры задаются в процессе обучения. Всякий раз, когда компания говорит об ИИ с открытым исходным кодом, это означает, что эти параметры находятся в свободном доступе, чтобы каждый мог запустить модель на своей машине. Но это не полностью открытый исходный код!
В случае с ИИ обучение аналогично построению традиционных программ. Исходя из этого, параметры модели представляют собой двоичный файл. Поэтому, когда Meta, X (Twitter) или другие компании открывают исходный код своей модели, они на самом деле просто выдают результат.
Итак, мы получаем фиксированную параметризацию архитектуры. Если мы захотим что-либо изменить или улучшить в архитектуре, например, использовать архитектуру Mamba вместо архитектуры Transformer, нам потребуется переобучить модель, чего без обучающей выборки не сделать. Поэтому эти модели можно только дорабатывать, но не развивать дальше.
Так называемые модели с открытым исходным кодом не являются действительно открытыми, поскольку их архитектура фиксирована. Эти модели можно только точно настроить, но не развивать дальше, поскольку для этого также потребуется обучающий набор. Настоящий ИИ с открытым исходным кодом состоит как из модели, так и из обучающего набора!
Модели ИИ с «открытым исходным кодом» обычно являются продуктами крупных компаний. Это и понятно, ведь обучение большой модели требует огромных вычислительных мощностей и, как следствие, больших денег. Такие ресурсы есть только у крупных компаний, поэтому разработка ИИ централизована.
Подобно тому, как технология блокчейна в форме Биткойна создала возможность децентрализации денег, она также позволяет нам создавать ИИ с действительно открытым исходным кодом, который принадлежит сообществу, а не компании.
Эта статья представляет собой концепцию того, как такой ИИ с действительно открытым исходным кодом, управляемый сообществом, может быть разработан с использованием технологии блокчейна.
Как я упоминал ранее, основой ИИ с по-настоящему открытым исходным кодом является открытый набор данных. Набор данных на самом деле является самым ценным ресурсом. Например, в случае ChatGPT языковая модель обучалась на общедоступных базах данных (например, Common Crawl), а затем на последующем этапе настраивалась с помощью человека (RLHF). Такая тонкая настройка является чрезвычайно дорогостоящей из-за задействованного человеческого труда, но именно она придает ChatGPT силу. Сама архитектура (предположительно) представляет собой общий преобразователь или его модифицированную версию «Смесь экспертов», что означает несколько параллельных преобразователей. Ключевым моментом является то, что архитектура не является чем-то особенным. Что делает ChatGPT (и любую другую модель) уникальным, так это хороший набор данных. Именно это придает модели ее мощь.
Размер набора данных для обучения ИИ обычно составляет несколько терабайт, и то, что можно или нельзя включать в такой набор данных, может варьироваться в зависимости от группы и культуры. Выбор данных очень важен, поскольку он будет определять, например, «индивидуальность» большой языковой модели. Разразилось несколько крупных скандалов из-за того, что модели искусственного интеллекта от крупных компаний (Google, Microsoft и т. д.) вели себя расистски. Это связано с неправильным выбором набора данных. Поскольку требования к набору данных могут различаться в зависимости от культуры, может потребоваться несколько вилок. Децентрализованные решения для хранения данных с адресацией по контенту, такие как IPFS или Ethereum Swarm, идеально подходят для хранения таких больших наборов данных с несколькими версиями и ветвями. Эти решения для хранения данных работают аналогично системе контроля версий GIT, где к отдельным файлам можно обращаться с помощью хеша, сгенерированного на основе содержимого. В таких системах форки можно создавать дешево, поскольку необходимо хранить только изменения, а общая часть двух наборов данных хранится в одном экземпляре.
Как только у нас будут соответствующие наборы данных, мы сможем приступить к обучению модели.
Как упоминалось во введении, модель ИИ по сути представляет собой гигантское математическое уравнение с множеством свободных параметров. В целом верно, что чем больше свободных параметров имеет модель, тем она «умнее», поэтому количество параметров часто указывается в названии модели. Например, модель llma-2-7b означает, что архитектура модели — llma-2 и имеет 7 миллиардов параметров. Во время обучения эти параметры задаются с использованием набора данных, чтобы модель обеспечивала указанный результат для заданных входных данных. Для обучения используется метод обратного распространения ошибки, который находит наиболее подходящие параметры с помощью частных производных.
Во время обучения набор данных делится на пакеты. На каждом этапе данный пакет предоставляет входные и выходные параметры, а обратное распространение ошибки используется для расчета того, как необходимо изменить параметры модели, чтобы точно вычислить заданные выходные данные на основе заданных входных данных. Этот процесс необходимо повторить несколько раз для данного набора данных, пока модель не достигнет желаемой точности. Точность можно проверить с помощью набора тестовых данных.
Крупные компании проводят обучение на массивных кластерах графических процессоров, поскольку обучение требует огромных вычислительных мощностей. В децентрализованной системе дополнительная проблема заключается в том, что отдельные узлы ненадежны, а за ненадежность всегда приходится платить! Именно из-за этой ненадежности Биткойн потребляет энергию, как небольшая страна. Биткойн использует консенсус Proof of Work, где вычислительная мощность заменяет надежность. Вместо того, чтобы доверять отдельным узлам, мы полагаем, что узлы с благими намерениями обладают большей вычислительной мощностью, чем злонамеренные узлы в сети. К счастью, существуют и другие механизмы консенсуса, такие как Proof of Stake, используемый Ethereum, где поставленные деньги гарантируют нашу надежность, а не вычислительную мощность. В этом случае нет необходимости в больших вычислительных мощностях, что приводит к значительному снижению энергопотребления и воздействия на окружающую среду.
При децентрализованном обучении необходим некоторый механизм для замены доверия между обучающим узлом и запрашивающей стороной. Одним из возможных решений является то, что обучающий узел создает журнал всего процесса обучения, а третья сторона, узел валидатора, случайным образом проверяет журнал в определенных точках. Если узел валидатора находит обучение удовлетворительным, он получает предложенную оплату. Валидатор не может проверить весь журнал, так как это означало бы повторное выполнение всех вычислений, а вычислительные требования проверки были бы такими же, как и при обучении.
Другой вариант — оптимистическое решение, при котором мы предполагаем, что узел выполнил вычисления правильно, и предоставляем период проверки, в течение которого каждый может доказать обратное. В этом случае узел, выполняющий вычисления, ставит большую сумму (штраф), а узел, запрашивающий вычисления, также ставит сумму (вознаграждение). Узел выполняет вычисления, а затем публикует результат. Далее следует период вызова (например, 1 день). Если кто-то обнаружит ошибку в вычислениях с помощью случайных проверок в течение этого периода и опубликует ее, он получит штраф, назначенный вычислительным узлом, а запрашивающая сторона получит свое вознаграждение обратно. Если никто не сможет доказать, что вычисление неверно в течение периода проверки, вычислительный узел получает вознаграждение.
Существует вариант доказательства с нулевым разглашением, называемый zkSNARK, который также подходит для проверки того, что кто-то выполнил вычисление. Основное преимущество этого метода заключается в том, что проверка может быть выполнена дешево, но создание доказательства представляет собой трудоемкую вычислительную задачу. Поскольку этот метод очень затратен даже для более простых вычислений, он потребует значительно больше вычислительных ресурсов для обучения ИИ, чем само обучение, поэтому мы, вероятно, не можем использовать его для этой цели в настоящее время. Тем не менее, zkML является активной областью исследований, и вполне возможно, что в будущем третья сторона может быть заменена смарт-контрактом, который проверяет SNARK.
Из вышесказанного понятно, что существует несколько решений проверки вычислений. На основе этого давайте посмотрим, как будет построена наша децентрализованная система поддержки обучения на основе блокчейна.
В этой системе наборы данных принадлежат сообществу через DAO. DAO решает, какие данные могут быть включены в набор данных. Если группа участников не согласна с решением, они могут выйти из DAO и сформировать новую DAO, где они разделят существующий набор данных и продолжат создавать его независимо. Таким образом, DAO разветвляется вместе с набором данных. Поскольку набор данных хранится в децентрализованном хранилище с адресацией по контенту (например, Ethereum Swarm), форк не требует больших затрат. Хранение набора данных финансируется сообществом.
Процесс обучения также контролируется DAO. Через DAO могут зарегистрироваться обучающие узлы, желающие продать свои свободные вычислительные мощности. Чтобы подать заявку, они должны сделать ставку в смарт-контракте. Если узел попытается обмануть во время вычислений, он потеряет эту ставку.
Запрашивающий выбирает набор данных и модель, которую хочет обучить, а затем предлагает вознаграждение. Предложение является публичным, поэтому любой обучающий узел может подать заявку на выполнение задачи. Узел обучения создает полный журнал процесса обучения, где каждая запись соответствует обучению пакета. Запись включает в себя входные данные, выходные данные, матрицу весов и все соответствующие параметры (например, случайное начальное число, используемое слоем исключения для выбора данных, которые будут удалены). Таким образом, все вычисления могут быть воспроизведены на основе журнала.
Как упоминалось ранее, для проверки вычислений можно использовать несколько методов. Самый простой – оптимистический подход. В этом случае запрашивающая сторона помещает вознаграждение в смарт-контракт, а обучающий узел публикует журнал обучения. После публикации для проверки вычислений доступен указанный период времени (например, 1 день). Если в течение этого времени запрашивающая сторона или кто-либо другой предоставит доказательство того, что конкретный шаг неверен, обучающий узел теряет свою ставку, а запрашивающая сторона получает вознаграждение обратно. В этом случае узел, представивший правильное доказательство, получает ставку, стимулируя всех проверять вычисления. Если никто не предоставит такое доказательство, обучающий узел получит вознаграждение по истечении времени.
В двух словах, вот как работает система. Конечно, возникает несколько вопросов.
Бизнес-модель системы такая же, как и у большинства бесплатных решений с открытым исходным кодом, таких как бизнес-модель Linux. Если компании нужна модель и у нее нет проблем с тем, чтобы она была бесплатной и с открытым исходным кодом, гораздо выгоднее инвестировать в нее, чем обучать собственную модель. Представьте, что 10 компаниям нужна одна и та же языковая модель. Если они не возражают против того, чтобы модель была открытой, для каждого гораздо выгоднее заплатить 1/10 стоимости обучения, чем каждый платить всю сумму. То же самое относится и к наборам данных, которые составляют основу обучения. Для обучения моделей можно даже создавать кампании краудфандинга, где будущие пользователи модели могут внести свой вклад в ее развитие.
Поскольку цены в такой системе регулируются рынком, на этот вопрос сложно дать однозначный ответ. Это зависит от того, сколько свободных вычислительных мощностей доступно пользователям. Мы уже видели силу сообщества Биткойна. Вычислительная мощность сети Биткойн превосходит мощность любого суперкомпьютера. Поставщикам облачных услуг необходимо получать прибыль, тогда как в такой децентрализованной системе пользователи предлагают свои свободные вычислительные мощности. Например, тот, у кого есть мощный игровой компьютер, может предложить свою свободную мощность, когда он не играет. В этом случае, если услуга генерирует чуть больше энергии, чем затрачено, для пользователя это уже выгодно. Кроме того, в мире существует много отходов энергии, которые невозможно использовать традиционными способами. Примером этого является тепловая энергия, вырабатываемая вулканами. В этих местах обычно нет налаженной электрической сети, что делает их непригодными для производства полезной электроэнергии. Уже есть стартапы, использующие эту энергию для добычи биткойнов. Почему бы не использовать его для «разведывательной добычи»? Поскольку энергия в этом случае практически бесплатна, необходимо покрыть только стоимость оборудования. Таким образом, очевидно, что существует множество факторов, которые могут сделать обучение в такой децентрализованной системе намного дешевле, чем в облаке.
В случае использования моделей ИИ конфиденциальность является очень важным вопросом. Крупные поставщики услуг, естественно, гарантируют конфиденциальность обработки наших данных, но можем ли мы быть уверены, что никто не подслушивает наши разговоры с ChatGPT? Существуют методы (например, гомоморфное шифрование), которые позволяют серверам выполнять вычисления над зашифрованными данными, но они требуют больших затрат. Наиболее безопасное решение — запускать модели локально. К счастью, аппаратное обеспечение становится все сильнее, и уже существуют специализированные аппаратные решения для работы ИИ. Сами модели также значительно улучшаются. Исследования показывают, что во многих случаях производительность не сильно снижается даже после квантования, даже в крайних случаях, когда для представления весов используются только 1,5 бита. Последнее решение особенно перспективно, поскольку оно исключает умножение, которое является самой дорогостоящей операцией. Таким образом, в будущем, благодаря развитию моделей и аппаратного обеспечения, мы, вероятно, будем запускать модели, превосходящие человеческий уровень на местном уровне. Более того, мы можем настроить эти модели по своему вкусу с помощью таких решений, как LoRA.
Еще одно очень перспективное направление — генерация с расширенным поиском (RAG). Это означает, что «лексические знания» хранятся в векторной базе данных, и наша языковая модель собирает из этой базы данных соответствующий контекст для данного вопроса. Это очень похоже на то, как мы, люди, действуем. Понятно, что никто не запоминает весь словарный запас. Задавая вопрос, достаточно знать, где найти необходимые знания. Прочитав и интерпретируя соответствующие записи, мы можем дать последовательный ответ. Это решение имеет множество преимуществ. С одной стороны, достаточно модели меньшего размера, которую легче запускать локально, а с другой стороны, можно свести к минимуму галлюцинации — основную проблему языковых моделей. Кроме того, знания модели можно легко расширить без переобучения, просто добавив новые знания в векторную базу данных. Ethereum Swarm — идеальное решение для создания такой векторной базы данных, поскольку это не только децентрализованный механизм хранения, но и коммуникационное решение. Например, групповой обмен сообщениями можно реализовать через Swarm, что позволит создать простую распределенную базу данных векторов. Узел публикует поисковый запрос, а другие узлы отвечают, возвращая соответствующие знания.
Идея LLM OS принадлежит Андрею Карпати, которую он опубликовал в Твиттере. LLM OS — это гипотетическая операционная система, основанная на большой языковой модели. В нашей распределенной системе на основе блокчейна мы можем рассматривать это как агент, работающий на узле пользователя. Этот агент может взаимодействовать с другими агентами и традиционными инструментами Software 1.0. Они могут включать калькулятор, интерпретатор Python или даже управлять физическим роботом, автомобилем или умным домом. В нашей системе файловая система представлена Swarm и векторной базой данных, созданной поверх Swarm, где доступны общие знания. Всю систему (коллектив агентов) можно рассматривать как форму коллективного разума.
Я верю, что в будущем искусственный интеллект станет частью нашей повседневной жизни, гораздо более неотъемлемой, чем сейчас. ИИ станет частью нас! Вместо мобильных телефонов мы будем носить умные очки с камерами, которые все записывают, и микрофонами, которые все слышат. У нас будет постоянный диалог с нашими локально работающими языковыми моделями и другими агентами, которые со временем будут адаптироваться к нашим потребностям посредством тонкой настройки. Но эти агенты будут общаться не только с нами, но и друг с другом, постоянно используя коллективные знания, производимые всем сообществом. Эта система организует человечество в некую форму коллективного разума, что очень важно. Недопустимо, чтобы этот коллективный разум стал собственностью одной компании или организации. Вот почему нам нужны системы, изложенные выше, или подобные!