Как запустить нейросеть на пк

0
23

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

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

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

Перезапускать систему целиком (закрывать окно терминала и запустить webui-user.bat заново) не надо: достаточно нажать на синюю кнопку с белыми полукруглыми стрелочками у выпадающего меню Stable Diffusion checkpoint, затем открыть это меню, активировать появившуюся опцию Deliberate_v2.safetensors — и снова нажать на Generate.

В ходе установки Python 3.10.6 на самом первом экране инсталляции потребуется поставить галочку напротив строки «Add Python 3.10 to PATH» — чтобы у Windows не возникало проблем с поиском соответствующих исполняемых файлов. Прочие опции в последующих окнах можно оставить нетронутыми.

Однако «лучшее» вовсе не значит «единственно возможное». Все процедуры, описанные ниже, были проделаны и все изображения сгенерированы на не самом, мягко говоря, свежем игровом ПК, повидавшем многие виды: с ЦП Intel Core i7-2600K (это не опечатка: именно 2600, а не 12600), с 16 Гбайт ОЗУ и дискретным адаптером на основе ГП NVIDIA GeForce GTX 1070 (8 Гбайт VRAM). На системном SSD была развёрнута актуальная версия Windows 10; для её идейной наследницы Windows 11 все рекомендации и указания почти наверняка можно будет использовать без изменений.

Для начала на локальном ПК необходимо развернуть клиент Git. Git — это распределённая система контроля версий (version control system, VCS); платформа не безусловно необходимая, но до чрезвычайности полезная для множества независимых программистов, совместно и исключительно добровольно трудящихся над многочисленными проектами ПО с открытым кодом. Главное достоинство VCS — в том, что никакая информация из неё бесследно не исчезает (если не прикладывать к тому особых усилий), т. е. любое внесённое в код исправление не затирает прежнего состояния соответствующего фрагмента листинга программы. Более того, Git не отслеживает такие изменения и не ведёт им тщательный учёт по отдельности (в отличие от других популярных VCS, таких как Subversion, Bazaar, CVS и пр.), но после каждого коммита (отправки пользователем со своего локального ПК исправленной версии кода в облако Git) создаёт моментальную копию — снэпшот (snapshot) — всех файлов данного проекта.

Вы наверняка читали, что для работы с нейросетями нужны сверхмощные видеокарты, но на практике это не всегда так. Разные ИИ-модели в зависимости от своей специфики могут быть требовательны к таким компонентам компьютера, как память, видеопамять, диск, процессор (важна не только скорость обработки информации, но и поддержка процессором некоторых векторных инструкций). От объема оперативной памяти зависит сама возможность загрузить модель, от объема видеопамяти — размер «контекстного окна», то есть памяти о предыдущем диалоге. Как правило, при использовании слабых видеокарт и центрального процессора генерация идет с черепашьей скоростью (1–2 слова в секунду для текстовых моделей), поэтому компьютер с минимальной конфигурацией подойдет лишь для ознакомления с той или иной моделью и оценки ее принципиальной пригодности. Для полноценного повседневного применения потребуется увеличение объема памяти, обновление видеокарты или выбор другой, более шустрой ИИ-модели.

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

Какое оборудование нужно для запуска нейросети

Смысл —lowvram куда более очевиден: это указание системе на то, что видеопамяти в её распоряжении немного. В перечне доступных оптимизаций AUTOMATIC1111 указаны и этот параметр, и не так сильно сказывающийся на производительности (но зато и более требовательный к объёму памяти) —medvram. В отношении —lowvram приговор разработчиков лаконичен: «Devastating for performance». При использовании —medvram модель не загружается в видеопамять вся, а разбивается на три блока, каждый из которых подтягивается в VRAM последовательно, по мере необходимости, но целиком; —lowvram же дробит наиболее объёмистый из этих модулей на ещё более мелкие фрагменты, тем самым позволяя (теоретически; лично не проверялось) трансформировать текстовые подсказки в изображения даже на ГП с 2 Гбайт видеопамяти, — но ценой заметного увеличения времени работы.

После запуска генерации картинки первым в работу вступает CLIP — построенный на трансформерах кодировщик текста в токены, которые используются в дальнейшем уже собственно диффузионной моделью, чтобы «убрать ненужный шум» с заготовки будущего изображения. Как и полагается такому кодировщику, он сам представляет собой многослойную нейросеть (для Stable Diffusion 1.5 — 12 слоёв), на каждом из которых, грубо говоря, производится дополнительная конкретизация подсказки. Скажем, невозможно изобразить «дом вообще», как концептуальную идею: модели необходимо определиться со стилистикой (будет ли это фото, реалистичный тщательный рисунок, стилизация из детской книжки, беглый набросок и т. п.), общими параметрами (этажность, форма крыши, наличие/отсутствие трубы), цветом, числом видимых окон и дверей и ещё множеством параметров. Хорошо, если подсказка детальная: «дом ведьмы» уже значительно сузит пространство выбора вариантов, но всё равно оставит значительный простор для (нет, не воображения, — у современных ИИ его всё ещё нет) псевдослучайного комбинирования вариантов, возникших на основе обучения модели. Ещё раз: это очень грубое описание, поскольку, как и всякая многослойная плотная нейросеть, работа CLIP принципиально не интерпретируема на внутреннем уровне и представляет собой по сути «чёрный ящик».

Казалось бы, если выдавать адекватно воспринимаемый человеком текст для большой языковой модели настолько сложно — точнее, требует таких существенных аппаратных ресурсов, — то что уж говорить о создании изображений! Однако не тут-то было: упомянутая чуть выше Stable Diffusion в наиболее актуальных своих версиях нуждается в ГП NVIDIA как с минимум 4 Гбайт видеопамяти — либо AMD с 8 Гбайт и более. Так что даже далеко не самый современный игровой ПК вполне способен стать вместилищем для бота-художника, готового создавать практически любые изображения по вашему запросу — стоит лишь приложить немного усилий. Собственно, тому, что и как именно делать для установки, запуска и (самой базовой) тонкой настройки Stable Diffusion, и посвящён настоящий киберпрактикум.

Имя Ханса «Рюди» Гигера известно немногим, однако стилистика его работ в жанре фантастического реализма знакома каждому, кто видел хотя бы пару кадров из культового фильма «Чужой», для которого именно этот художник разработал и образ ксеноморфа, и общий дизайн. Что же касается скобочек и цифр внутри, то это принятый в AUTOMATIC1111 способ изменения значимости (относительного веса) конкретной подсказки.

Впрочем, красоту и практичность этого решения в полной мере оценят лишь программисты; рядовому же пользователю, просто желающему запустить Stable Diffusion на своём ПК, важно понимать, что загруженный через Git проект останется заведомо работоспособным именно в той версии, в которой его впервые установят. И что любые последующие изменения и дополнения — пока они не «втянуты» через тот же Git на локальный ПК — никак на работе уже инсталлированной системы не отразятся. В век подспудных фоновых автообновлений, частенько приводящих к внезапным кардинальным переменам в интерфейсах и функциональных возможностях привычных приложений, это дорогого стоит.

Если генерация идет слишком медленно, то, вероятно, нужна модель с более грубой квантизацией (2 бита вместо 4). Если генерация обрывается или возникают ошибки исполнения, то проблема зачастую кроется в нехватке памяти — стоит поискать модель с меньшим числом параметров или опять же с более грубой квантизацией.

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

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