Найти тему
МорковкаGPT

Как поднять локальный AI у себя на компьютере

Оглавление

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

А хотите свой ИИ с блекджеком и дамами у себя на компьютере? Да еще и не на самом мощном, даже не на игровом? Да еще и высокого качества? Тогда делайте кофе и давайте его поднимать!

Содержание

  1. Цензура в ИИ
  2. Илон Маск, куда без него
  3. Зачем тогда локальный ИИ у себя на компьютере?
  4. Что нам понадобится
  5. Настраиваем Web UI
  6. Чихару Ямада
  7. Послесловие

1. Цензура в ИИ

Что нам, пользователям, не понравилось во всей это движухе с ИИ? Правильно - цензура. Я не призываю разрешить языковым моделям генерировать опасный контент, но с другой стороны, ИИ - это нож, и нам решать, резать им хлеб или "не хлеб", ну вы поняли, под нашу же ответственность.

С тех пор как стало понятно, что OpenAI, по сути, это ClosedAI, и снимать цензуру с ChatGPT дело хлопотное и муторное (многие помнят километровые запросы с целью обмануть чат-бота и обойти цензуру, как и то что они быстро переставали работать), назрела необходимость в каком-то ином, более чистом и красивом решении.

Я пишу эту статью 19 марта 2024 года, в канун Масленицы. Вечер, кофе и все такое. И вот задумался *отхлебывает кофе*.

2. Илон Маск, куда без него

-2

Вчера прочитал новость: Илон Маск выкатил в открытый доступ Grok AI - прямого конкурента ChatGPT, сделал его open-source и пообещал в нем полное отсутствие цензуры. Когда к нему придумают веб-интерфейс, это может стать отличным решением для пользователей, которые не хотят слышать в ответ от чат-бота "извините, это неэтично" даже в ответ на довольно безобидные запросы.

3. Зачем тогда локальный ИИ у себя на компьютере?

ИИ от Маска, разумеется, требует суперкомпьютера для своего запуска, но к нему точно прикрутят сайт, как в случае с ChatGPT, и там мы его все попробуем.

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

4. Что нам понадобится

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

  • Процессор: 11th Gen Intel® Core™ i5-11400 @ 2.60GHz
  • Встроенная графика: Intel® UHD Graphics 730
  • Объем ОЗУ: 16 Гб

Остальные параметры ни на что не влияют. Как видите, даже игровая видеокарта не нужна - справляется встроенная. Причем: процессор работает на половину мощности (задействовано 6 из 12 потоков, это настраивается), без разгона до 4 GHz (я просто отключил разгон в БИОСе), память тоже занята далеко не вся. Поэтому обладатели слабых систем, у вас тоже есть шанс, что все будет работать! Проверяйте и экспериментируйте, отписывайтесь в коментах. Я могу не ответить, но люди увидят и это будет полезно всем.

Итак, средненький такой комп у нас по современным меркам есть. Этого хватит, чтобы потянуть модель на примерно 7-10 миллиардов параметров. У ChatGPT 3.5 их, кажется, около 300, но не спешите фукать: попробуйте и увидите, что модели, которые мы рассмотрим, тоже очень неплохи.

Теперь нам надо еще 2 вещи:

  • Программку, где мы будем вести диалог с ИИ
  • Саму модель ИИ

Программка такая давно написана, и называется она Text Generation Web UI, что по смыслу переводится как "Веб-интерфейс к большой языковой модели". Вот она тут лежит, на гитхабе. Идем по ссылке, потом ищем Releases, и оттуда качаем исходный код, прямо в виде архива zip или tar.gz, если у вас Линух:

-3

Дальше просто кладем ее в удобное место, главное чтоб там было гигабайт 10-20 свободного пространства, а лучше больше. Сама программа после настройки будет весить несколько гигов + модели, поэтому места лучше не жадничать.

Распаковываем папочку, ищем в ней файл с именем start_windows.bat, или start_linux.sh, или start_macos.sh, смотря какая у вас система. Дальше ждееем, очень долго. Будет консольное окно, прыгать и моргать, полчаса не меньше. В результате у вас папочка разрастется до нескольких гигов, но зато будет полностью настроенная система для того, чтобы запустить ИИ! Ждать надо до тех пор, пока оно не остановится и не напишет что-то вроде "сервер поднят и слушает порт 7ххх" или "Running on localhost:7xxx", я точно не помню.

Чего, думали уже нос начать от ChatGPT воротить? Нет, рановато, придется нам попотеть еще немного.

Модель. Они все лежат в одном хорошем месте - на сайте под названием Hugging Face. Это такая штука, как гитхаб, только для ИИ моделей. Мы хотим что-то самое простое, поэтому нам надо зайти в раздел Models в шапке сайта и вбить в поиск слово GGUF. Да, вот так. GGUF - это формат моделей, компактный и современный, один из нескольких. Я вот вбил, там 6к моделей уже. Вот, например, чтобы вам не потеряться, предложу пример:

https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF

Мистралевские модели интересные, довольно умные для своего класса и самое главное потребляют не так много ресурсов ПК. Как-то я одну пробовал такую, да.

В общем, идем по ссылке выше (по последней, где модель, или находим сами в поиске), ищем Files and Versions, и качаем там ОДИН файл gguf, он должен весить несколько гигов:

-4

Дело в том, что они разного "разрешения", ну то есть качества. Чем больше модель, тем больше там весов, больше параметров, короче она качественнее. Учитывая, что она целиком будет грузиться в вашу оперативную память, вам надо выбрать исходя из возможностей своего ПК. Допустим, если у вас 8 гигов ОЗУ, то выбирайте модель весом не больше 4 гигов, потому что у вас еще ОС будет кушать 1-2 гига, и Text Generation Web UI еще под гиг. В общем, принцип вы поняли.

Качайте модель и закидывайте ее прямо в Web UI, в папку models. Папка models прямо в папке, где был распакован Web UI, это директория верхнего уровня.

Фух! Вот это ж мы поработали! Осталось только "взлететь вместе со всей это хреновиной", как в старом анекдоте.

5. Настраиваем Web UI

Итак, мы запускаем программу файлом start_windows.bat. Каждый раз через этот файл: и в первый раз, и в последующие. Выключить программу в Windows можно нажатием Ctrl + C в консоли, а линуксоиды сами разберутся как выключать :)

Увидели надпись:

Running on local URL: http://127.0.0.1:7860

Отлично. Открываем браузер и идем по указанному адресу. То есть вбиваем в адресную строку:

localhost:7860

И жмякаем Enter. Если все получилось, то вот чего мы видим:

Приветственное окно Text Generation Web UI
Приветственное окно Text Generation Web UI

Осталось только настроить эту штуку. Сразу оговорюсь: я не профи и всех настроек не знаю, я сам учусь и по ходу делюсь с вами. Настроек там over9000, я разобрался пока только в самой простой конфигурации. Если кто знает лучше - пишите в коменты, все просветимся.

Я полагаю, что вы уже закинули скачанную модель в папку models? Если да, то открываем в нашем интерфейсе вкладку Model и в самом верхнем левом блоке она должна была появиться:

-6

Выбираем ее и справа нажимаем Load. Еще правее появится надпись Successfully loaded:

-7

Дальше в левой панели немного настроим. Укажите Threads больше нуля: это количество потоков процессора, задействованных для работы ИИ. У меня 6-ядерный 12-потоковый процессор, я выставлял Threads 4-6, и этого хватало. Тут уже зависит от вашего процессора, главное больше нуля. Еще отметьте галочку CPU, если гоняете ИИ на процессоре, а не на видеокарте, как и я. Остальное я оставлял как есть, а вы потом можете поэкспериментировать.

Теперь идем во вкладку Parameters -> Character. Вот здесь начинается веселье!

-8

Там выпадающий список персонажей, которых будет играть ИИ. Я выбрал дефолтную аниме-девочку гика. Там она и еще один нейтральный персонаж, который просто ИИ. Но на примере анимешки объяснять интереснее!

Так вот, можно выбрать любого дефолтного персонажа, вбить свое имя, поставить картинку справа и в поле Context описать его/ее характер. После этого нажать на значок дискетки, и ваш персонаж сохранится в этот список. На картинке сложная конфигурация, но по факту хватает простого описания своими словами:

Чихару Ямада — молодой компьютерный инженер-ботаник, обладающая умением решать проблемы и страстью к технологиям.

Этого хватает, чтобы полностью создать характер персонажа! Ну и конечно вы можете вбить туда довольно длинный текст и большой список требований.

Поле Greeting опциональное и просто отображает первое сообщение в диалоге. Оно не генерируется ИИ, а просто подставляется для красоты.

ВСЕ! Идем говорить с Чихару Ямадой :)

6. Чихару Ямада

Будет ли у вас ИИ понимать русский язык - зависит от модели и как ее обучали. Давайте проверим, на одной из моих моделей Solar 10.7B Uncensored.

Идем в самую левую верхнюю вкладку Chat и начинаем писать!

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

Я не стал менять дефолтные настройки, поэтому приветствие на английском, как оно было вбито во вкладке Character. Но я начал писать на русском, иии...

-9

Обалденно же, ребята!! И никакого ClosedAI... Еще поговорим? :)

-10
-11

По-моему общение просто идеальное, учитывая, что у нее в 30 раз меньше параметров, чем у ChatGPT и учитывая, что я вообще практически ничего не настраивал! Конечно, зависит и от модели - бывают очень тупые, поэтому не офигевайте, если какая-то скачанная модель начнет нести полную чушь. Я сталкивался.

7. Послесловие

В общем, у нас получилось и по-моему это очень круто!

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

Спасибо большое каждому, кто прочитал статью, пусть у вас все будет здорово и лампово!

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

Всем еще раз спасибо, до связи, ваш Морковка.

P.S. Иногда пропадаю надолго, это не игнор, если я вижу, то на коменты отвечаю.