С выходом ChatGPT и Midjourney произошла революция, и мы теперь сообща каждый день удивляемся новостям и сюрпризам из области ИИ.
А хотите свой ИИ с блекджеком и дамами у себя на компьютере? Да еще и не на самом мощном, даже не на игровом? Да еще и высокого качества? Тогда делайте кофе и давайте его поднимать!
Содержание
- Цензура в ИИ
- Илон Маск, куда без него
- Зачем тогда локальный ИИ у себя на компьютере?
- Что нам понадобится
- Настраиваем Web UI
- Чихару Ямада
- Послесловие
1. Цензура в ИИ
Что нам, пользователям, не понравилось во всей это движухе с ИИ? Правильно - цензура. Я не призываю разрешить языковым моделям генерировать опасный контент, но с другой стороны, ИИ - это нож, и нам решать, резать им хлеб или "не хлеб", ну вы поняли, под нашу же ответственность.
С тех пор как стало понятно, что OpenAI, по сути, это ClosedAI, и снимать цензуру с ChatGPT дело хлопотное и муторное (многие помнят километровые запросы с целью обмануть чат-бота и обойти цензуру, как и то что они быстро переставали работать), назрела необходимость в каком-то ином, более чистом и красивом решении.
Я пишу эту статью 19 марта 2024 года, в канун Масленицы. Вечер, кофе и все такое. И вот задумался *отхлебывает кофе*.
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, если у вас Линух:
Дальше просто кладем ее в удобное место, главное чтоб там было гигабайт 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, он должен весить несколько гигов:
Дело в том, что они разного "разрешения", ну то есть качества. Чем больше модель, тем больше там весов, больше параметров, короче она качественнее. Учитывая, что она целиком будет грузиться в вашу оперативную память, вам надо выбрать исходя из возможностей своего ПК. Допустим, если у вас 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. Если все получилось, то вот чего мы видим:
Осталось только настроить эту штуку. Сразу оговорюсь: я не профи и всех настроек не знаю, я сам учусь и по ходу делюсь с вами. Настроек там over9000, я разобрался пока только в самой простой конфигурации. Если кто знает лучше - пишите в коменты, все просветимся.
Я полагаю, что вы уже закинули скачанную модель в папку models? Если да, то открываем в нашем интерфейсе вкладку Model и в самом верхнем левом блоке она должна была появиться:
Выбираем ее и справа нажимаем Load. Еще правее появится надпись Successfully loaded:
Дальше в левой панели немного настроим. Укажите Threads больше нуля: это количество потоков процессора, задействованных для работы ИИ. У меня 6-ядерный 12-потоковый процессор, я выставлял Threads 4-6, и этого хватало. Тут уже зависит от вашего процессора, главное больше нуля. Еще отметьте галочку CPU, если гоняете ИИ на процессоре, а не на видеокарте, как и я. Остальное я оставлял как есть, а вы потом можете поэкспериментировать.
Теперь идем во вкладку Parameters -> Character. Вот здесь начинается веселье!
Там выпадающий список персонажей, которых будет играть ИИ. Я выбрал дефолтную аниме-девочку гика. Там она и еще один нейтральный персонаж, который просто ИИ. Но на примере анимешки объяснять интереснее!
Так вот, можно выбрать любого дефолтного персонажа, вбить свое имя, поставить картинку справа и в поле Context описать его/ее характер. После этого нажать на значок дискетки, и ваш персонаж сохранится в этот список. На картинке сложная конфигурация, но по факту хватает простого описания своими словами:
Чихару Ямада — молодой компьютерный инженер-ботаник, обладающая умением решать проблемы и страстью к технологиям.
Этого хватает, чтобы полностью создать характер персонажа! Ну и конечно вы можете вбить туда довольно длинный текст и большой список требований.
Поле Greeting опциональное и просто отображает первое сообщение в диалоге. Оно не генерируется ИИ, а просто подставляется для красоты.
ВСЕ! Идем говорить с Чихару Ямадой :)
6. Чихару Ямада
Будет ли у вас ИИ понимать русский язык - зависит от модели и как ее обучали. Давайте проверим, на одной из моих моделей Solar 10.7B Uncensored.
Идем в самую левую верхнюю вкладку Chat и начинаем писать!
Учтите, что слабому компьютеру может потребоваться время в самом начале, он может не реагировать на первое сообщение где-то минуту. Не надо думать, что он глючит, это особенность работы на слабых ПК. Потом он "разгонится" и будет отвечать быстро. Я такое видел, когда гонял слишком тяжелые для моего ПК модели.
Я не стал менять дефолтные настройки, поэтому приветствие на английском, как оно было вбито во вкладке Character. Но я начал писать на русском, иии...
Обалденно же, ребята!! И никакого ClosedAI... Еще поговорим? :)
По-моему общение просто идеальное, учитывая, что у нее в 30 раз меньше параметров, чем у ChatGPT и учитывая, что я вообще практически ничего не настраивал! Конечно, зависит и от модели - бывают очень тупые, поэтому не офигевайте, если какая-то скачанная модель начнет нести полную чушь. Я сталкивался.
7. Послесловие
В общем, у нас получилось и по-моему это очень круто!
Качество общения зависит от модели ИИ, ее размера. Я надеюсь, что у вас тоже все вышло, что вы здорово развлечетесь с этой штукой и, может, даже отпишетесь в коментах, как все прошло или какие возникли проблемы!
Спасибо большое каждому, кто прочитал статью, пусть у вас все будет здорово и лампово!
Напоследок скажу, что я не профессионал, я просто делюсь своим опытом, тем, что получилось. У вас настройка будет отличаться, и это нормально. Надеюсь, хоть кому-то из читающих это поможет поднять у себя свой ИИ, а те у кого не выйдет, может, зададут вопросы в коментах или найдут более подходящий для себя материал, ну и обнаружат, что хоть какие-то сведения из статьи были полезны. Статья не идеальная и это нормально, так как я сейчас вот сразу не соображу, что я мог упустить - по ходу доработаем вместе!
Всем еще раз спасибо, до связи, ваш Морковка.
P.S. Иногда пропадаю надолго, это не игнор, если я вижу, то на коменты отвечаю.