В первый раз, когда наш конвейер синтеза вышел из строя, причина была не в модели. Это был экземпляр Redis объемом 14 ГБ, поддерживающий состояние блокировки восприятия для 200 000 совпадений цветов в реальном времени. Мы выдрали его и пересобрали все это дело на Postgres. Это я...
Очередь PostgreSQL с нулевым холостым объемом ОЗУ для перцепционных блокировок CIEDE2000: внутри конвейера синтеза Shadow в реальном времени
В первый раз, когда наш конвейер синтеза вышел из строя, причина была не в модели. Это был экземпляр Redis объемом 14 ГБ, поддерживающий состояние блокировки восприятия для 200 000 совпадений цветов в реальном времени. Мы выдрали его и пересобрали все это дело на Postgres.
Это история о том, как мы это сделали, почему дистанционные проверки CIEDE2000 заставили нас по-другому спроектировать очередь и как полученный шаблон теневого работника выглядит в производстве.
Почему перцептивные блокировки вообще существуют
Наш конвейер генерирует отдельные кадры для композитора, которые должны быть идеальными для сотен вариантов стилей. Два запроса, нацеленные на одну и ту же палитру восприятия, могут выполняться на разных графических процессорах в разных регионах.
Если оба запроса обрабатываются независимо, вы получаете дрейф. Цвет куртки субъекта варьируется на ΔE = 3,4 между рендерами, которые должны быть идентичными. Зрители замечают. Композиторы размывают. Рецензенты отвергают.
Поэтому мы применяем блокировку: любой запрос, нацеленный на перцепционную корзину, вычисленную с помощью CIEDE2000, должен ждать получения канонического эталонного рендеринга. Затем последующие потребители повторно используют эту ссылку.
СИЕДЕ2000 (ΔE2000
