August 23, 2022

Интересное время

На протяжении своего развития, человечество ставило себе всё более сложные и амбициозные цели — построить:

  • самую высокую пирамиду
  • корабль, который пересечёт океан
  • машину, которая поднимет человека в воздух
  • устройство, которое будет считать за человека в миллионы раз быстрее
  • алгоритм, который будет принимать решения за человека быстрее, и нередко, и точнее

И каждая ступень справедливо воспринимается современниками чуть ли не как чудо. И время между такими рывками с каждым разом всё сильнее сокращается. Человечество сломя голову несется в, прости господи, технологическую сингулярность: когда рутинные задачи решаются всё быстрее и дешевле, общество перестраивается под новые реалии и так далее.

И вот, случается очередной виток прогресса. Лучшие умы человечества взмывают в воздух, успешно преодолевая новые препятствия. Они делятся своими новыми знаниями, показывая дорогу всем остальным — но в этот момент откуда-то из оврага доносится звуки возни, ругани, пьяных криков и смачных ударов.

Прервавшие благоговейную тишину смотрят на полет, чешут голову дубинами и в голове возникает всего одна мысль: "А с помощью этой хреновины получится ёбнуть моего соседа по-сильнее? Нет? Ну и хули вы тут дурью маетесь? Да куда только мир катится: в соседнем овраге нам вот-вот болото осушат, а эти со своими игрушками носятся. Никакого уважения к исторической справедливости. А ведь это болото исторически принадле..."

Так вот, о чём я.

Человечество всю историю достигало всё новых высот (иногда откатываясь назад, но тем не менее), и вот вчера случилась, как мне кажется, очередная веха: в открытый доступ выложили нейронную сеть для генерации изображений по текстовому описанию — Stable Diffusion.

Да, я уже слышу эти голоса и вижу закатывающиеся глаза: "Опять ты со своими айтишными штучками, поовсюду уже эти нейронные сети, черт бы их побрал. Сходи лучше в парк погуляй, на природу съезди, голову проверти". Но не всё так просто. (И не так сложно, в общем)

Человечество всегда стремилось автоматизировать и ускорить рутину: мельница, печатная машинка, швейная машинка, компьютер, домашний принтер и так далее. Благодаря новым инструментам качество нашей жизни улучшалось, потому что человек был способен освободить свои ресурсы на решение более важных задач, чем вырисовывание букв или сложение в столбик.

С появлением нейронных сетей начался бум различных алгоритмов для разнообразнейших задач. Где-то более успешно, где-то менее, а где-то пугающе хорошо. Сначала нейронные сети научились работать с изображениями: распознавать, какая буква написана (видео 1993 года с демонстрацией первой такой сети), потом с текстом, но там было сильно сложнее.

Пример: для обучения нейронных сетей используется приём с незначительным изменением входных данных для улучшения обощающих способностей модели. Чтобы она распознавала собачку, которая смотрит не только слева, но и справа. И если картинку можно повернуть, отразить, приблизить, сделать темнее, светлее и так далее, то что можно сделать с текстом, чтобы изменить вход, но сохранить смысл? (Если вдруг стало интересно, вот хороший обзор того, что удалось придумать)

Надеюсь, хотя бы на таком простом примере удалось показать, что работать с текстом несколько сложнее, чем с изображениями. И это я ещё молчу о языковых особенностях, всяких "казнить нельзя помиловать", то что "часы могут идти, когда лежат, и стоять, когда висят" и прочие кошмары.

Относительно давно люди всё-таки научились обучать модели на парах картинка-текст, чтобы нейронная сеть описывала словами то, что изображено на картинке. Когда я прочитал впервые об этой новости, ничего не понимал тогда ещё в этом и подумал: "Фантастика, будущее уже наступило".

В 2019 году вышла чисто модель языковая GPT-2, которая навела шуму. А в 2020 вышла GPT-3, которая взяла новую высоту. Они могли связано отвечать на вопросы, продолжать заданный текст, сочинять стихи и так далее. (С русской версией можно поиграться здесь, но она какая-то глупенькая, лучше позапускать тут английскую версию). Да, зачастую надо перебирать несколько вариантов, чтобы получить хороший ответ, но:

  • это бесплатные версии, которые могут быть также урезанными и соптимизированными
  • как и с любым инструментом, надо набить руку и научиться обращаться
  • вспомните про сложность работы с языковыми моделями вообще

Параллельно с этим, естественно, продолжали развиваться модели, работающие с изображениями, они учились генерировать фантастические вещи:

  • неуклюжие ещё картины, которые продавались за сотни тысяч долларов (октябрь 2018)
  • людей, которых практически не отличить от реальных (декабрь 2018)
  • фотореалистичные пейзажи, которые можно рисовать набросками (март 2019)
  • deep-fake и замена лиц
  • и много чего ещё

Но с генеративной точки зрения изображения и текст всё ещё были далеки друга, пока в начале 2021 года OpenAI не выпустила DALL-E, а весной 2022 DALL-E 2. Они придумали и обучили модель так, чтобы она по тексту генерировала изображение. В зависимости от запроса это могло быть стилизацией под какого-нибудь художника или технику, фотореалистичным изображением того, что никогда не существовало (ну или по крайне мере, не было в обучающей выборке, символом DALL-E стало кресло-авокадо) - чем угодно, что выучилась связывать с текстом нейронная сеть.

Задача, которая ещё несколько лет назад казалась неподъемной, вдруг оказалась решенной. Создатели DALL-E описали архитектуру и используемый подход, но для воспроизведения этого мало: для обучения своей модели нужны колоссальные вычислительные мощности. И, пока создатели давали ограниченный доступ к генерациям только единичным блогерам и журналистам, энтузиасты пытались как-то воспроизвести результаты доступными средствами, развивая и улучшая идеи DALL-E. Результатом стали:

  • Craion -- очень скромная, но порой веселая далли-образная поделка
  • DiscoDiffusion, который по тексту умеет генерировать видео. Выглядит интересно, но далеко до реализма
  • MidJourney, которая стала заслуженным конкурентом DALL-E. Но ни подробностей архитектуры, ни кода создатели не раскрывают -- только платный доступ, зато для всех желающих.

И вот недавно появилась ещё одна модель -- Stable Diffusion. Уровень и качество генераций можно посмотреть здесь или здесь. Меня впечатляет. Особенно с учетом того, что в отличие от конкурентов, создатели SD заявляли несколько важных вещей:

  1. То что они выложат модель в открытый доступ со всем необходимым для запуска
  2. В отличие от аналогов сопоставимого качества, она не потребует для работы дорогого оборудования, подойдет любой игровой компьютер (главное требование к видеокарте)

И вот вчера это случилось. И это примечательно даже не тем, что "теперь есть нейронная сеть, которая умеет рисовать картины". Я вижу в этом другое.

Это иллюстрация того, к чему может привести обмен знаниями и опытом, сотрудничество, упорство, вера в людей и целеустремленность. И в этой затянувшейся заметке я постарался передать то, какой огромный путь пришлось пройти нашему миру, чтобы а) добиться решения такой невозможной еще совсем недавно задачи б) безвозмездно отдать решение людям.

И самое поразительное, что значительную текстово-визуальную информацию о мире, которой оперирует нейронная сеть для генерации, создателям удалось вместить в какие-то жалкие 6 гигабайт. Как 2-3 фильма в хорошем качестве.

Просто невероятно и не укладывается в голове, на что способны люди.

Как и то, что параллельно со всем этим, где-то взрываются бомбы, разрушаются жизни и, можно сказать, цивилизации. Люди умирают за какие-то геополитические фантомы, вбитые им головы идеи, которые не стоят ни одной отданной за них жизни. Жизни людей, которые вместо того, сидеть в окопе с автоматом, могли бы приносить пользу человечеству, получив достойное образование и расширяя границы возможного.

И вот этим ощущением невыносимого диссонанса между устремляющимся в будущее прогрессом и разворачивающейся средневековой бойней, которую поддерживает немалая часть населения моей цивилизованной, как будто бы, страны, я и хотел поделиться.

А желающих потрогать будущее, приглашаю позапускать StableDiffusion здесь. При регистрации дают 200 кредитов. В настройках можно указать количество и настройки изображений, от этого будет зависеть количество потраченных кредитов. Когда кредиты закончатся, придется как-то докупать. (Ну и пока что не прикрыли возможность зарегистрировать несколько почтовых ящиков)