Компьютер должен быть личным снова
Часть 1 из Распределённых вычислений
Некоторое время «персональный компьютер» был категорией оборудования. Машина была персональной, потому что вы владели ею. Потом много серьёзной работы переместилось на компьютеры, которые управляют другие люди, и это часто было правильным обменом. Общие платформы сделали крупномасштабные вычисления доступными без частного дата-центра. Я рад, что они существуют. Реальная часть моей рабочей жизни прошла на них, в Amazon Web Services и в Databricks: доставка данных туда, где система могла их использовать, и поддержание надёжности этой системы в обычный день.
Что-то сдвигается назад, неравномерно. Некоторые модели теперь достаточно маленькие, чтобы работать рядом с человеком, который их использует. Не каждая модель, и не каждая задача. Полезная доля вывода не требует общего суперкомпьютера. Ей нужна достаточно быстрая модель, правильный контекст и машина, которую человек действительно контролирует.
Я заботлюсь об этом сдвиге по обычным причинам.
Приватность становится архитектурой вместо обещания. Если документ никогда не покидает комнату, вам не нужно полагаться на абзац в политике. Вам по-прежнему нужно доверять программному обеспечению на машине. Это более старая проблема и более ясная. Приватный контекст — это актив. То, куда ему позволено путешествовать, определяется дизайном.
Инструмент остаётся рядом пока вы думаете. Что-то, к чему вы обращаетесь посередине предложения, должно казаться ближе к карандашу, чем к очереди. Круговые обращения меняют, как часто вы спрашиваете, и меняют то, что вы готовы спросить. Задержка в этом контексте — не оценочный показатель. Это вопрос о том, остаётся ли машина в разговоре.
Система может быть специализированной. Модель, находящаяся в работе одного человека, с его файлами, его словарём и незаконченным аргументом, может быть уже, чем модель, которая должна быть приемлема для всех. Персональный не означает чатбот с вашим именем в подсказке. Это означает, что система может быть конкретной, потому что контекст никогда не нужно было обобщать для толпы.
Локальный вывод — это операционная работа. Веса, память, обновления и тихие сбои при смене модели — это реальные затраты. Общая инфраструктура не исчезает. Она переходит на задачи, которые действительно тяжёлые. Интересные проблемы — это те, которые не являются ни секретом, который должен остаться, ни работой, которая должна уйти.
Двух размещений недостаточно. Работа может остаться на машине, которой владеет человек. Она может переместиться на что-то рядом: компьютер в той же комнате, ящик, который они управляют, оборудование, которому они могут доверять больше, чем регионе по умолчанию. Или она может пойти в общее облако, потому что вычисление тяжёлое или инструмент не существует нигде в другом месте. Близость — это категория доверия и задержки. Это не продукт, который я создаю, и не сеть, которую я предлагаю. Это отсутствующая середина в бинарной системе, которая заставляет каждый запрос быть либо интимным, либо удалённым.
Маршрутизация — это решение в этой середине, и оно первого класса. Не резервный вариант на случай, если локальная модель не загружается. Для каждого запроса политика должна указать, где может работать задача, какой контекст может с ней идти, как долго вы готовы ждать и кому позволено менять ответ. Чувствительный контекст должен остаться. Тяжёлые вычисления часто должны уйти. Удивительно много обычного мышления — ни то, ни другое, и смещение, которое я хочу, — в сторону машины, которой управляет человек. Сам маршрут должен быть видимым. Если вы не можете сказать, где запрос выполнялся и что было позволено с ним идти, вы не можете сказать, кто несёт ответственность за ответ.
type Place = "local" | "nearby" | "remote";
// A sketch of the policy, not a system I ship.
// "Nearby" is a trust and latency category, not a product.
function route(request: {
sensitive: boolean;
heavy: boolean;
staysClose: boolean;
}): Place {
if (request.sensitive) return "local";
if (request.heavy && request.staysClose) return "nearby";
if (request.heavy) return "remote";
return "local";
}
Расположение, которое я считаю вероятным, гибридно по назначению. Небольшой набор моделей и инструментов, некоторые локальные, некоторые рядом, некоторые нет, выбранные политикой, которую человек может проверить. Облако остаётся правильным местом для тяжёлой работы. Это плохое место по умолчанию для контекста человека. Владение в этом смысле — это не наклейка на оборудование. Это право решать, что остаётся, что уходит и под какое правило.