Как установить на компьютер искусственный интеллект

0
15

HOWTO: как установить и настроить собственный ИИ на игровом ПК

⇡#Предварительные замечания

Безусловно, аргумент этот чисто количественный. Законы природы не запрещают применять для эмуляции нейронной сети исключительно центральный процессор с его 4, 8 или 16 ядрами и оперативную память DRAM. Но поскольку вычисления непосредственно в памяти в рамках классической x86-архитектуры не реализуются, потери времени при переносе небольших (обработанных считаными единицами, максимум первыми десятками ядер) пакетов данных между ЦП и ОЗУ оказываются попросту несуразными. И это проблема любых подобных вычислений: к примеру, Stable Diffusion — нейросетевая модель с открытым исходным кодом для создания изображений по текстовым описаниям — при запуске на ПК без дискретного графического адаптера генерирует простейшие картинки за многие десятки минут, тогда как на компьютере даже с не самой современной видеокартой — за пару-тройку минут максимум, а с какой-нибудь NVIDIA RTX 4080 — и вовсе за секунды.

Иными словами, с —lowvram система заработает практически на любом ПК, более или менее заслуживающем называться «игровым», почти гарантированно. Но едва первые изображения получены, есть смысл поменять в конфигурационном файле этот параметр на —medvram и, перезапустив Stable Diffusion, произвести генерацию заново; и если всё получится — оставить всё именно в таком виде. Например, для используемой в настоящем киберпрактикуме системы с GTX 1070 базовая генерация с параметром —lowvram занимает 28-35% от доступных 8 Гбайт видеопамяти, тогда как с —medvram — уже 68-75%, причём выигрыш во времени, что уходит на создание одной картинки, не превышает 25-30%. Счастливым же обладателям видеокарт с VRAM 12 Гбайт и более ни один из этой пары оптимизационных параметров не пригодится.

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

LLM ещё более требовательны как к доступному числу физических вычислителей, способных автономно и параллельно производить взвешенные суммирования (для чего почти идеально подходят ядра CUDA), так и к объёму напрямую связанной с ними памяти (при использовании дискретного графического адаптера) — видеопамяти. Для запуска и эксплуатации больших языковых моделей активно применяются специализированные видеокарты — с гигантскими объёмами VRAM в десятки гигабайт на каждой, объединённые сверхскоростными мостами (NVLink, если речь идёт о продуктах NVIDIA) в кластеры из 4 или 8 единиц.

А можно ли генерировать изображения со Stable Diffusion вообще в отсутствие подходящего ПК под рукой? Да, разумеется! Онлайн совершенно бесплатно (а порой, хотя бы в ограниченных пределах, и анонимно, т. е. без требования непременной предварительной регистрации) доступен целый ряд действующих инсталляций: Stable Diffusion Playground, mage.space, Stable Diffusion Online, Dezgo и ещё множество, обнаружить которые через любой поисковик не составит труда (едва ли не единственная отечественная разработка среди них — модель Kandinsky 2.1). Понятно, что на пользователя, в особенности не имеющего возможности заплатить за визуализацию своих текстовых описаний, такие сайты накладывают немало ограничений: это и скудость выбора параметров генерации, и невозможность совершенствовать полученную базовую картинку, и кое-где даже принудительное наложение метки сайта (watermark) на готовое изображение. Кроме того, очереди на бесплатную генерацию на популярных сайтах могут быть довольно длинными. Но если очень-очень надо получить хоть какой-то визуальный образ на основе возникшего в голове сочетания слов, доступные онлайн модели — неплохое начало.

Интерфейс установлен, пользователь перед компьютером есть, — самое время загрузить собственно Stable Diffusion, т. е. модель на основе машинного обучения для преобразования текста в графический образ (text-to-image model), написанную на языке Python. К ней впервые предоставил свободный доступ 22 августа 2022 г. сам же её разработчик — компания Stability.ai, специализирующаяся на развитии генеративных ИИ с открытым кодом.

Чтобы загрузить эту модель, следует перейти на вкладку Files в веб-интерфейсе её странички на репозитории, чуть прокрутить вниз — и нажать на не самую приметную стрелочку с подчёркиванием, стоящую справа от букв «LFS» в строке, что начинается с «v-1-5-pruned-emaonly.safetensor». Как только при наведении на стрелочку всплывёт окошко с мелкой надписью «Download file» — можно нажимать и запасаться терпением: файл занимает несколько гигабайтов.

Ещё один момент: в окне «Configuring the terminal emulator to use with Git Bash» из предлагаемых опций лучше выбрать MiniTTY. Это не принципиальный вопрос, и консольное окно Windows по умолчанию тут вполне сгодится, — но из соображений лучшей совместимости (с Unicode-шрифтами прежде всего) MiniTTY всё-таки предпочтительнее.

ЧИТАТЬ ТАКЖЕ:  Нейросеть которая делает каверы на песни

Как сделать свой ИИ самостоятельно: пошаговый план

Проведя много таких операций обучения — желательно десятки и даже сотни тысяч для каждого текстового термина, — нейросеть с обратным распространением ошибок формирует на входах своих перцептронов такие веса, что позволяют «разархивировать» картинки из шума по ключевым словам, проходя весь путь в обратном порядке. А именно: взяв прямоугольник, заполненный «белым шумом», и известный системе текстовый термин, слой за слоем удалять с картинки случайные пикселы в определённом порядке — и получать запрашиваемое изображение. Почти как ваятель удаляет лишние, на его взгляд, фрагменты мрамора с глыбы, открывая в итоге таившуюся там скульптуру. Аналогия эта вполне адекватна: как из двух идентичных каменных блоков можно изваять совершенно разные статуи, так и две затравочных картинки с «белым шумом», сгенерированным на основе одного и того же seed, в ответ на различные текстовые подсказки породят совершенно несхожие между собой изображения.

А вот то, каким именно образом модель решает, сколько шума и на каких именно участках надо оставить на картинке на каждом этапе, и определяется методом сэмплинга; говоря математическим языком — тем или иным методом градиентного спуска. Наиболее простой и быстрый (но и дающий менее выразительные с художественной точки зрения результаты) — это уже использованный нами Euler (см. схема Эйлера). Другие сэмплеры могут давать более интересные и/или более сложные результаты с бóльшим или меньшим учётом различных фрагментов подсказки — здесь нет ни единого рецепта, ни общего правила, что считать более предпочтительным. Однако, поменяв Euler на более «продвинутый», хотя и требующий большего времени на исполнение сэмплер DPM++ SDE Karras (Каррас — фамилия одного из авторов оригинальной статьи, где описан целый ряд таких методов), мы ровно с теми же самыми позитивной и негативной подсказками и с той же затравкой (seed) получим в целом более живописные изображения.

По умолчанию любая из них имеет условный вес 1; если просто заключить подсказку в круглые скобки, это будет соответствовать приданию ей веса 1,1 (т. е. она станет более значимой для генерации данного изображения, чем соседние), а если нужно установить какой-то иной вес, его указывают явно после двоеточия. Обычно стоит избегать весов менее 0,5 (по причине пренебрежимо малого влияния таких подсказок на итоговую картинку) и более 1,5 (результат может оказаться графически непредсказуемым), но в любом случае это ещё одна степень свободы опосредованного искусственным интеллектом творчества — которой энтузиасты охотно пользуются. Выставив для стилей обоих этих художников невысокие веса, мы избежим чрезмерного влияния их на итоговую картинку (роботизированный Чужой в сарафане уж точно не появится здесь), но живости и индивидуальности ей, безусловно, прибавим.

Чего ради стоит возиться с чекпойнтами, мы покажем на примере одной из наиболее популярных сегодня доработок Stable Diffusion 1.5 под названием Deliberate v.2. Загрузить этот файл в формате .safetensors логичнее всего со страницы данного проекта на уже знакомом нам репозитории Hugging Face, после чего надо поместить дотренированную модель в ту же папку, где уже находится базовая, — model.safetensors. На сей раз переименовывать ничего не требуется.

Учитывая, что на мировом рынке дискретной графики NVIDIA доминирует с долей 88% (данные JPR за III кв. 2022 г.), разработчиков трудно упрекнуть здесь в безосновательной избирательности. Впрочем, по слухам, сама Microsoft (ныне фактически владеющая половиной OpenAI, создательницы ChatGPT) сегодня активно сотрудничает с AMD по вопросу оптимизации графических продуктов последней — как раз для решения связанных с ИИ задач. Вполне вероятно поэтому, что следующее поколение дискретной графики AMD будет лучше подходить для преобразования текста в картинки (и в видео, кстати, но это уже и вовсе особая история).

Как сообщает официальная документация, «модуль pickle имплементирует двоичные протоколы для сериализации и десериализации структуры объектов Python», т. е. устанавливает связи между различными объектами. В частности — позволяет при определённых условиях запускать сторонний код, написанный на Python, в том числе содержащий инструкции прямого исполнения — вроде eval или exec. Вот почему в среде энтузиастов машинного обучения в применении к моделям с открытым кодом всё большее распространение получает простейший формат сериализации .safetensors — безопасный, обеспечивающий ускоренную загрузку весов модели в память и более быстрое получение результата на системах с несколькими графическими процессорами.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь