Где должна жить вторая память?
Про вторую память я уже писал дважды. Сначала пытался объяснить, зачем вообще выносить часть накопленного контекста из головы. Потом рассказал, как с июля начал всё это собирать и почему обычное «сохрани, а потом найди» довольно быстро превратилось в отдельную стройку.
В предыдущей статье я остановился на простой мысли: вторая память должна хотя бы честно запомнить одну обычную фразу и вернуть её тогда, когда она понадобится. Без фантазии, потерь и уверенных рассказов о том, чего никогда не происходило.
Сначала я вообще не задавался вопросом, где всё это должно жить. Был компьютер, было хранилище, туда и складывались записи, документы и результаты обработки. Для первых экспериментов этого вполне хватало.
Но постепенно задач становилось больше. Вторая память уже должна была не просто сохранить запись, а понять её смысл, связать с прошлым, отличить план от сделанного и потом найти всё это по нормальному человеческому запросу. Добавились голос, изображения, документы, дневники и несколько процессов, которые хотелось запускать одновременно.
В какой-то момент одной системе стало плоховато.
Пока она занимается чем-то одним, всё нормально. Но если параллельно попросить разобрать документы, поискать старый контекст и продолжить другую задачу, GPU довольно быстро предлагает определиться, что именно мне сейчас нужнее.
Самый понятный выход — купить компьютер мощнее. Следующий по очевидности — вынести тяжёлые вычисления в облако. Оба варианта существуют, работают и не требуют изобретать новую физику.
Я уже начал смотреть в эту сторону, но поймал себя на другом вопросе: почему я вообще решил, что вторая память должна находиться в одном компьютере?
Она ведь задумывалась не как ещё одна папка с файлами. Мне хотелось, чтобы накопленный контекст был рядом в нужный момент: во время разговора, работы, тренировки, поездки или внезапной мысли, которую обычно откладываешь на потом и благополучно забываешь.
Привязать такую память к одной коробке довольно странно. Особенно сейчас, когда сама жизнь уже давно разъехалась по разным устройствам.
Презентацию можно собрать с телефона по дороге на встречу. Там же поправить документ, нарисовать картинку, провести видеозвонок и отправить результат. При этом рабочие файлы могут лежать на другом устройстве, фотографии — на третьем, а часть обработки вообще выполняться в облаке.
Человеку уже не особенно важно, где именно в этот момент считается презентация. Он начал работу в одном месте, продолжил в другом и получил результат там, где ему удобно.
Со второй памятью пока всё наоборот. Чтобы она видела полную картину, данные обычно предлагают сначала собрать в одном центре. Туда же отправляются запросы, там же выполняется основная работа. Чем больше контекста и задач, тем мощнее должен становиться этот центр.
И тут у меня возникла немного странная ассоциация с блокчейном.
Сам блокчейн мне здесь не нужен. Не будет монет, майнинга и попытки ещё раз объяснить человечеству, почему обычные деньги вот-вот закончатся. Мне интересен только общий принцип децентрализации: система может работать по единым правилам, хотя её данные и возможности не собраны в одной точке.
Грубо говоря, хочется сделать блокчейн, только не блокчейн.
У человека уже есть несколько устройств. Они разные по мощности, находятся рядом с разными данными и большую часть времени не используют все свои возможности. Почему бы не разрешить человеку объединить их в одну группу, внутри которой сможет работать его вторая память?
Не складывать видеокарты и не пытаться получить из нескольких компьютеров один волшебный суперкомпьютер. Скорее дать системе возможность выбирать подходящее место для каждой задачи.
Одно устройство может искать по документам, которые уже лежат на нём. Другое возьмёт тяжёлую обработку. Третье останется интерфейсом, через который человек задаёт вопросы и получает ответы. Если локальной мощности не хватает, подключается облако.
Для человека всё это по-прежнему одна вторая память. Ему не нужно разбираться, где именно нашлась запись или какое устройство сейчас готовит ответ.
Допустим, я спрашиваю, почему за последний месяц изменилось моё восстановление. Записи о питании могут находиться в одном месте, тренировки — в другом, показатели сна — в третьем.
Можно каждый раз копировать всё в общую базу. А можно отправить вопрос туда, где уже лежат нужные данные. Один участник группы найдёт изменения в питании, другой посмотрит нагрузку, третий проверит сон. После этого вторая память соберёт общий ответ из найденных фактов.
Между устройствами при этом не нужно постоянно перегонять весь дневник. Достаточно передать сам вопрос, нужные фрагменты и результат обработки.
Похожим образом можно работать и с другими частями контекста. Если документы уже находятся на конкретном устройстве, проще построить поиск рядом с ними, чем каждый раз копировать весь архив в центральное хранилище. Файлы остаются у владельца, а вторая память получает доступ только к тому, что требуется для текущего запроса.
Конечно, группа не должна автоматически превращаться в общую свалку данных. Человек сам определяет, какие устройства в неё входят, что они могут делать и какой контекст им разрешён.
Семейная группа не делает рабочие документы семейными. Подключение нового устройства не означает, что оно получает всю историю человека. Ему можно разрешить отдельную задачу, конкретную папку или определённый вид данных.
Центр у такой системы всё равно, скорее всего, останется. Кто-то должен помнить состояние задач, проверять права и понимать, где сейчас есть свободные возможности. Но ему необязательно хранить у себя все исходные данные и лично выполнять каждую работу.
В этом смысле централизация и децентрализация для меня не противники. Это два подхода, которые можно использовать одновременно. Вторая память остаётся одной для человека, хотя физически её данные и вычисления находятся в разных местах.
Облака в этой картине тоже никуда не исчезают. Если нужна большая мощность, их можно подключить к конкретной задаче. Только наружу уходит не вся накопленная память, а подготовленный кусок контекста, без которого эту задачу действительно не выполнить.
Мне нравится, что такой подход позволяет начинать с того, что у человека уже есть. Добавление нового устройства может дать второй памяти больше мощности, новый источник данных или возможность выполнять часть работы рядом с владельцем. Несколько разрешённых устройств можно объединить в семейную или проектную группу, не свозя весь общий контекст в одно место.
Пока это только гипотеза. Я не знаю, окажется ли такая схема проще покупки одного мощного компьютера. Возможно, время и ресурсы будут уходить уже на управление самой группой. Устройства начнут выключаться, терять сеть и выдавать разный результат. Права доступа могут оказаться настолько сложными, что обычному человеку вся эта конструкция будет просто не нужна.
Есть задачи, которые всё равно потребуют одной большой GPU. Возможно, облако справится с ними дешевле и быстрее. А центр, управляющий распределённой системой, вполне может сам стать новым узким местом.
Именно поэтому мне хочется обсудить эту идею до того, как она превратится в очередную большую стройку.
Если вы работали с распределёнными системами, локальными вычислениями или обработкой данных непосредственно на устройствах, напишите в комментариях: что здесь может не получиться?
Можно ли собрать одну вторую память из нескольких устройств, почти не перемещая между ними исходные данные? Где такая система сломается первой? И в какой момент окажется, что купить один мощный компьютер всё-таки было разумнее?
Вариант «купи нормальное железо и не выдумывай» тоже принимается. Но желательно с аргументами и цифрами.