- PVSM.RU - https://www.pvsm.ru -
Приветствую в рассказе о запуске моделей в слегка изолированном окружении, без ИИ-картинок, нейрослопа, ботов и прочего телеграма.
Локальный запуск ИИ-моделей (LLM) прост, а их работа на CPU вполне работоспособна. Но без должного опыта, приходится повозиться и понабивать шишек. Заодно предлагаю познакомиться с Linux.
Целевая аудитория - все желающие аккуратно попробовать свой локальный ИИ, но почему-то пока не сделавшие это. Посвящается преодолевающим свой внутренний барьер ИИ-ортодоксам. Уверенным пользователям Linux она будет мало интересна. (Да, я в курсе, что это элементарно. Заметка носит исключительно мотивирующий характер. Спасибо.)
Задача: начать использовать ИИ-модели с пользой, как дополнительный инструмент. (Личная цель - перевод текстов.)
Независимость. Работа без передачи своих запросов в интернет, пусть даже на свой в облаке.
Безопасность. Модель не должна* иметь доступ к моим данным. Да, я параноик. Звёздочка потому, что в итоге и с RAG хочется поиграть, но это на будущее.
Минимальные усилия и знания.
В наличии были:
"основной" рабочий компьютер (ноутбук) с Windows,
"свободный" настольный компьютер, достаточно мощный, без видеокарты, но со свободным SSD и запасом оперативной памяти,
много немного времени.
Так получилось, что основная работа у меня на Windows, а в бэкграунде есть годы программирования, но не промышленного, а прикладного и эпизодического. Не чураюсь командной строки и python, но разобраться с тем же Docker-ом, например, руки не дошли. Так что могу смело называть себя "типичным почитателем Хабра".
Идея банальна: запускать модели на свободном компьютере и использовать их с основного. Классический клиент-сервер на разных устройствах. Конечно, всё получилось, и относительно не сложно. Почему бы и нет, скажете вы? Но это только на бумаге гладко. При этом и с линуксом поближе познакомился, да и на основном компьютере всё же пришлось кое-что установить.
Для тех, кто разбирается, поле возможностей работы локального LLM намного шире. Под "разбирается" я имею в виду не просто запуск скриптов, а понимание процессов под капотом, и, в частности, вопросы безопасности. Особенно умиляет "однострочная" установка программ вида "curl -fsSL https://ollama.com/install.sh | ...". С появлением агентов с разной степенью самостоятельности этот вопрос будет стоять ещё жёстче. Ладно, не отвлекаемся. Варианты:
Запустить LLM-модель в виртуальной машине (HyperV, Virtualbox, Docker).
Не подошло, т.к. надо разбираться в среде виртуализации, доступностью модели внутри контейнеров, передача данных из/в контейнера и, главное, из-за слабого основного компьютера. Напомню, там Windows.
Для любителей Docker есть готовые рецепты https://habr.com/ru/articles/839392/ [2] и https://habr.com/ru/articles/933908/ [3] например.
Использовать
Не подошло, т.к. надо аккуратно разбираться в подключении, и встаёт вопрос безопасности. Да и иметь этот сервер надо, в конце концов. Для серьёзной настройки LLM и виртуальных
Поскольку "свободный" компьютер тоже периодически использовался, то вначале была попытка запустить на нём LMStudio в виртуалке. Не взлетело по указанным выше причинам, в первую очередь из-за особенностей подключения по сети. Да и накладные расходы (Windows -> контейнер -> LLM) смущали.
Решил сделать dual-boot Windows/Linux на отдельном SSD на свободном компьютере.
Был выбран Linux Mint (основан на Debian) за простоту. Немного сомневался, но оказалось, что этот Linux и вправду удобный и простой. На него установлен LMStudio, загружены модели и настроен сервер.
На основном компьютере установил open-webui и подключил к серверу. Постфактум оказалось, что логично было бы установить его на тот же компьютер, что и LMStudio, но на тот момент я даже не предполагал, что поиск простого клиента для LLM под Windows окажется проблемой. Кроме того, контролировать установленный python-сервис в Linux оказалось бы отдельной задачей, а гарантированно контролировать - скорее всего неподъёмной.
Скачан iso-образ Linux Mint (2.8Гб), https://linuxmint.com/ [5] . Из предложенных вариантов выбран образ с оконным менеджером [6] xfce, его хвалили за минимализм. Подтверждаю: выглядит лаконично, похож на Windows, понравился.
Создана загрузочная флешка с помощью Ventoy. Последние версии Ventoy форматируют флешку USB в два раздела: один скрытый загрузочный, а второй пустой. На появившийся пустой диск надо просто скопировать образ iso.
При загрузке с флешки загрузчик Ventoy предложит загрузку с этого образа. С USB 2.0 загружается минут 5-10, но успешно.
После запуска Linux Mint на рабочем столе будет единственный ярлык "Install Linux Mint", запустить его и следовать инструкции.
Рекомендую сразу выставить русский язык.
Если надо сохранить какие-то из разделов диска, на этапе “Installation type” выбирайте второй пункт (“Something else”).
КРИТИЧЕСКИ ВАЖНО: внимательно выбирайте диск для установки!
В Linux-е диски именуются как /sda.., /sdb.., /sdc.. (см. букву перед первой цифрой), а его разделы как sdb1, sdb2, и т.д. (см. первую цифру). Хорошо, что пишется размер, мне это очень помогло сориентироваться.
Кроме того, идентификации способствует тот факт, что системный диск с Windows (10, 11) обычно содержит скрытые специальные разделы для загрузки (~100 мегабайт) и восстановления (~500 мегабайт). На скриншоте ниже пример такого диска (/sdb). Не трогайте этот диск и его разделы, если хотите сохранить Windows. И с данными будьте осторожны, если есть шанс их затереть.
Да просто тупо скопировать данные на внешний диск или флешку тоже сойдёт. Вот правда. НИКТО НЕ ПОЖАЛЕЛ, ЧТО БЭКАП ЕСТЬ! Но помните правила личной гигиены: не давайте свой личный бэкап в руки незнакомым людям в форме. Всё, проехали. На Хабре есть целый хаб [7], а начать можно с
Возможно, потребуется удалять другие разделы и создать новый. Разделы удаляются и создаются по кнопкам "+" и "-". Для смелых: можно менять размер разделов. Я делал всё по умолчанию: создал один раздел на отдельном SSD-диске. Тип файловой системы - ext4.
Далее надо обязательно поставить галочку, где должна быть корневая папка "/" - на свежесозданный раздел. А в выпадающем списке выберите этот раздел для размещения первичного загрузчика (Device for boot loader installation).
Одна из фишек Linux в том, что потом с этим загрузчиком можно безболезненно выбирать Linux или имеющийся на этом компьютере Windows. Для этого надо сделать паузу в загрузчике на несколько секунд, и при необходимости выбирать загружаемую систему, см. подробности в конце статьи [8].
Далее пришлось немного допилить напильником настроить. Повторюсь, что интерфейс xfce очень похож на интерфейс Windows, всё работает интуитивно понятно, включая правую кнопку мыши.
Загрузиться в Linux (можно сразу изменить настройки BIOS для загрузки по умолчанию).
Здесь меня ждал первый сюрприз. "Из коробки" переключение между русской и английской раскладками не работало. Перебрал все знакомые комбинации - ничего. (Позже выяснил, что это не баг, а так и задумано, точнее, зависит от оконного менеджера. Говорят, что в xfce по умолчанию левый Shift + CapsLock).
Как починить: запустить Настройки системы либо напрямую из меню Пуск (первый скриншот, значок с двумя переключателями) и задать сочетание клавиш для переключения. Либо до настроек системы можно добраться с начального экрана настройки "Добро пожаловать/Первые шаги", которые открывается при первом запуске. Его также можно найти в меню Пуск под именем "Окно приветствия".
Также стоит добавить индикатор раскладки на панель внизу. Правая кнопка мыши на нижнюю панель и добавление соответствующего элемента, см. скриншоты.
Сразу про альтернативы: llama-cpp (хорошая статья на Хабре [9]), ollama (надстройка над llama-cpp), см. также комментарии в https://habr.com/ru/articles/991560/ [4].
LMStudio [10] позволяет удобно загружать модели в разных форматах, сразу работать с ними в чате, а главное - давать к ним доступ через API, доступное по сети.
Используются модели в формате GGUF и интерфейс взаимодействия (API) OpenAI.
Скачать файл-установщик c сайта https://lmstudio.ai/ [10].
Для Debian-based Linux есть два варианта распространения, в виде .deb файла (условно - инсталлятор) и AppImage (портативный вариант). Я использовал AppImage-вариант.
Дать разрешение скачанному файлу на запуск (правой кнопкой мыши -> сделать исполняемым), после этого можно запускать двойным кликом.
Скачать нужные модели. Интерфейс для скачивания моделей достаточно удобный, здесь же можно протестировать чат.
Имейте в виду, некоторые модели работают существенно медленнее (у некоторых - существенно дольше идёт обработка промпта), в таком случае просто попробуйте другие модели.
Настройка модели. При запуске без видеокарты (GPU) рекомендации из интернета - установить GPU-layers в 0, и отключить KW-кеш в GPU.
Проверить работу модели в чате. На вкладке Developer выводится текущее состояние модели. Удобно, чтобы понимать, на какой стадии (разбор промпта или генерации) находится процесс.
Включить сервер на вкладке Developer / Local Server и (важно!) включить работу в сети (Serve on Local Network). Если клиент (open-webui) будет установлен на этот же компьютер, то этот переключатель можно не трогать. Запомните порт (можно менять) и адрес, по которому будет доступен сервер
Про выбор моделей ничего нового сказать не могу: экспериментируйте. Постоянно появляются новые модели, на Хабре много статей. Например, выбор в зависимости от объёма памяти есть в Топ локальных нейросетей 2026: полный суверенитет без интернета [11].
Для подключения к моделям через сервер нужен клиент, который (условно) правильно формирует json-запрос с промптом, может выбрать конкретную модель через API сервера и пр. Хвалят AnythingLLM, но он не везде недоступен, см. примечания в конце статьи [12].
В качестве клиента выбран open-webui как достаточно популярный. Он предоставляет удобный доступ к серверу из браузера, см. титульную КДПВ.
Open-webui [13] запускается с помощью Python. Для Linux Python установлен по умолчанию, но у меня, напомню, на основном компьютере Windows.
Для управления Python и разными пакетами рекомендую miniforge3 (создаёт изолированные окружения Python), в котором надо создать отдельное окружение с Python 3.11.
Предполагается, что Python уже установлен и доступен.
Историческое отступление: компания Anaconda cоздала одноимённый мощный комбайн [14] для работы с Python, вместе с удобным менеджером пакетов conda [15] и своим репозиторием пакетов, в качестве альтернативы pip. Conda позволяет создать изолированные окружения со своими версиями Python и наборами своих пакетов. Для установки можно использовать miniconda [16] от Anaconda - лёгкий вариант, но к нему надо подключить репозиторий ("канал") conda-forge, или при установке явно указывать этот канал, чтобы получать свежие версии пакетов.
Идея окружений оказалась удачной, и появилась open-source альтернатива от сообщества [17] (внутри тот же менеджер conda):
Miniforge3 [18] - легковесный менеджер зависимостей conda с Python 3, который по умолчанию берёт пакеты из "более актуального" репозитория conda-forge.
Я рекомендую использовать именно его.
Во всех вариантах
Для установки open-webui подходят любые варианты anaconda/miniconda/condaforge, т.к. open-webui устанавливается через pip.
Пример создания окружения с именем "testai" c конкретной версией Python:
conda create -n testai python=3.11
После создания окружение нужно активировать (лучше в консоли Powershell, чем cmd; надо делать каждый раз, иначе python из данного окружения не будет доступен):
PS> conda activate testai
Установка open-webui (в активированное окружение):
pip install open-webui
Подготовка open-webui.
Тут ждёт третий подводный камень: перед запуском требуется провести некоторые манипуляции с переменными среды.
Вариант 1: через cmd/Powershell:setx VARNAME "value"
Устанавливает постоянное значение переменной среды для текущего пользователя, сохраняется после перезагрузки. Если значение без пробелов, можно без кавычек, например setx VARNAME 1.
Не забудьте "x" в конце! Команда set VARNAME "value" устанавливает переменную среды только на текущую сессию!
(Внезапно столкнулся с известным багом в Powershell: если открыть консоль при активной русской раскладке, то ввод заглавных английских букв может не работать! Подробности и решение в https://github.com/PowerShell/PowerShell/issues/10794 [19] )
Вариант 2: через графический интерфейс.
В поиске меню Пуск ищите "переменные … " (Изменение переменных среды текущего пользователя) в русской, или "environment …" (Edit environment variables for your account) в английской Windows.
Запуск open-webui (в активированном окружении Python):
open-webui serve
Подключение к open-webui: открыть браузер и ввести http://127.0.0.1:8080 (если на основном компьютере), или соответствующий IP/порт, если open-webui также установлена на "свободном" компьютере. Обратите внимание: протокол http, a не https!
(если не отключён парольный доступ) При первом запуске после красивых картинок предложат "зарегистрировать" администратора. Почту можно вписать любую, понятия не имею, используется ли она как-то; для локального использования можно ввести не существующую почту. Почту и пароль запомните. Сброс делать легко стиранием базы (см. ниже), но настраивать придётся заново.
При запуске может ругаться на отсутствие ffmpeg/avconv, но пока проблем не было. Запускается долго, несколько минут
Финальная часть: соединение open-webui с LMStudio.
Кружок с иконкой пользователя в левом нижнем углу -> Настройки/Settings. (Там же можно выбрать язык интерфейса, русский есть).
Перейти на Admin settings (незаметная серая надпись слева внизу окна настроек) и далее Connections.
Создать подключение и прописать там адрес запущенной LMStudio.
Если подключение создаётся в блоке OpenAI API Connections, то указывать надо OpenAI-compatible endpoint из LMStudio, без .../api/... в адресной строке, см. также скриншот LMStudio выше, например:
http://192.168.1.62:1234/v1
Остальные параметры менять не обязательно, всё работает и так.
Здесь же можно отключить или удалить подключение по умолчанию к api.openai.com.
Открыть вкладку Новый чат (New Chat) в левом столбце, выбрать модель, и … profit!
Если список моделей пустой, значит, некорректно настроено подключение к LMStudio или нет связи между компьютерами. Напомню, что в LMStudio во вкладке сервера отображается статус обработки запроса, смотрите туда, если долго нет отклика.
Готово! Теперь у вас есть лагальный локальный личный помощник!
Скорость выдачи (token rate) для средних моделей в 8-20Гб (квантизация 4L_M) небольшая, около 5-10 токенов в секунду. Но она почти совпадает с моей скоростью чтения, поэтому для первого впечатления и знакомства с ИИшечками подходит идеально.
Модели скачиваются в LMStudio удобно, причём они скачиваются независимо от генерации ответов. Надо только не забывать их "подключать" к серверу. Open-webui подцепляет их хорошо. Есть модели без цензуры, ищите "uncensored".
Aвтоматизация запуска LMStudio при запуске компьютера. Можно добавить Appimage в специальную папку, но она будет запускаться только после входа в систему.
Качественная настройка LMStudio для более быстрого выполнения запросов (inference) и его обработки.
Более надёжное отключение open-webui от своих сервисов (арена, оценки моделей) и т.п.; нужна инструкция.
Доступ с других устройств, напр. мобильного телефона. Нужен проверенный клиент/приложение, хотя бы для Android.
Доступ не из дома. Необходимо корректно настроить авторизацию/доступ, и решить вопросы безопасности.
Запуск графических моделей.
RAG (Retrieval-Augmented Generation) — генерация, дополненная поиском.
Как передавать данные между Linux и Windows без танцев с бубном.
Какой класс видеокарт будет максимально полезен для дополнения сборки (бюджет / объём 8-12-16-... Гб?).
Как подключить личного помощника по программированию (вездесущие агенты).
Да, вопросы по большей части элементарные, но - опять же - для начинающего пользователя становятся болотом. Помощь в комментариях приветствуется!
По умолчанию open-webui использует авторизацию и требует создать пользователя/пароль. Если не используете режим без авторизации (напомню, с помощью переменной среды WEBUI_AUTH = 0), и забыли пароль, проще всего стереть файл базы данных. Пропадут все настройки, в том числе подключения. База лежит внутри окружения Python, типа ...miniforge3envs<env-name>Libsite-packagesopen_webuidatawebui.db
Лучше всего, если оба компьютера подключены по кабелю. Если основной компьютер подключён по Wifi, то надо отключить изоляцию Wifi-клиентов на роутере. Короче, сделать так, чтобы компьютер с LMStudio был виден с основного.
Как проверять доступность по ip/порту:
В Linux: telnet <hostname_or_IP> <port_number>
В Windows (Powershell): Test-NetConnection -ComputerName <hostname_or_IP> -Port <port_number>
Dual-boot Windows/Linux без ручного входа в BIOS.
На "свободном" компьютере в BIOS стоит сделать загрузку раздела с Linux по умолчанию (в первую очередь). А его загрузчик (GRUB) определяет, какие ещё варианты загрузки (кроме Linux) есть на этом компьютере. Можно настроить задержку в несколько секунд и последующую загрузку Linux, см. скриншоты. Удобство в том, то за это время можно успеть выбрать загрузку в Windows, если понадобится.
Альтернативные клиенты.
Добрый google выдал целый список, среди которых часть сайтов не открывается (LibreChat [20], LobeChat [21]), что-то (AnythingLLM [22]) заблокировано по IP или стране, Jan.ai [23] использует только свои модели. В общем, пока open-webui [13] остался без альтернатив, извините за тавтологию.
Как собрать компьютер для LLM.
В свете роста цен на память и прочих безобразий, главным расходом будет покупка будет SSD (желательно в форм-факторе M.2, с поддержкой NVME). И смотрите характеристики, у "китайских" они могут в несколько раз отличаться от брендовых.
Для мат-платы и памяти Авито в помощь. Видел предложения использовать DDR3 вместе с многоядерными Intel Xeon v3, на китайских материнских платах. Подробности есть на https://e5450.com/ [24] Сайт был посвящён сборкам на Xeon и закупкам на Aliexpress с реферальными ссылками, но давно не обновлялся, и Aliexpress уже не торт. При этом база и описание бюджетных комплектующих впечатляющая. Для любителей, т.к. по отзывам есть проблемы с совместимостью процессоров и поддержкой BOIS. Второй минус - обзор ограничен только процессорами Xeon, а у них основная проблема состоит в том, что надо подобрать хорошее питание и охлаждение. Наконец, если рассматривать апгрейд с установкой видеокарты, вопросы по совместимости могут стать критичными.
(Пока готовил статью, вышли удивительные новости о DDR3 [25].)
Ссылки посерьёзнее по настройке локальных LLM:
упомянутая выше статья Свой ИИ без облаков: практический гайд по llama.cpp + Qwen [9] (с тонкой настройкой эффективности, Хабр),
Пошаговый запуск собственного LLM сервера от А до Я [4] (с видеокартой, Хабр),
Топ локальных нейросетей 2026: полный суверенитет без интернета [11] (Хабр), и, наконец,
хардкор по настройке LLM в домашних условиях: Распределённый инференс и шардирование LLM. Часть 1 [26]: … (часть 2 [27] и часть 3 [28], последняя как раз про open-webui).
P.S. самым сложным было набирать статью - то ещё адок. Извините. Непонятно, как вставлять несколько скриншотов в ряд. В html-режиме добавлять рисунки можно только ссылками. В стандартном редакторе непонятно, как делать вложенные списки (один чудом получился, я так и не понял как), внутри списка делать спойлер или картинку и пр. Частично спас вариант копирования из Google Docs + ручное склеивание скриншотов в imagemagick.
Автор: afterone
Источник [29]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/449893
Ссылки в тексте:
[1] выделенный сервер: https://www.reg.ru/?rlink=reflink-717
[2] https://habr.com/ru/articles/839392/: https://habr.com/ru/articles/839392/
[3] https://habr.com/ru/articles/933908/: https://habr.com/ru/articles/933908/
[4] https://habr.com/ru/articles/991560/: https://habr.com/ru/articles/991560/
[5] https://linuxmint.com/: https://linuxmint.com/
[6] образ с оконным менеджером: https://linuxmint.com/edition.php?id=327
[7] целый хаб: https://habr.com/ru/hubs/backup/articles/
[8] подробности в конце статьи: #%D0%9F%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8
[9] хорошая статья на Хабре: https://habr.com/ru/companies/first/articles/1017822/
[10] LMStudio: https://lmstudio.ai/
[11] Топ локальных нейросетей 2026: полный суверенитет без интернета: https://habr.com/ru/companies/bothub/articles/1019314/
[12] примечания в конце статьи: #%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%87%D0%B0%D0%BD%D0%B8%D1%8F
[13] Open-webui: https://openwebui.com/
[14] cоздала одноимённый мощный комбайн: https://www.anaconda.com/download
[15] менеджером пакетов conda: https://docs.conda.io/en/latest/
[16] miniconda: https://www.anaconda.com/docs/getting-started/miniconda/main
[17] альтернатива от сообщества: https://conda-forge.org/
[18] Miniforge3: https://github.com/conda-forge/miniforge
[19] https://github.com/PowerShell/PowerShell/issues/10794: https://github.com/PowerShell/PowerShell/issues/10794
[20] LibreChat: https://www.librechat.ai/
[21] LobeChat: https://app.lobehub.com
[22] AnythingLLM: https://anythingllm.com/
[23] Jan.ai: http://Jan.ai
[24] https://e5450.com/: https://e5450.com/
[25] удивительные новости о DDR3: https://habr.com/ru/companies/ru_mts/articles/1021380/
[26] Распределённый инференс и шардирование LLM. Часть 1: https://habr.com/ru/companies/flant/articles/906700/
[27] часть 2: https://habr.com/ru/companies/flant/articles/906702/
[28] часть 3: https://habr.com/ru/companies/flant/articles/906704/
[29] Источник: https://habr.com/ru/articles/1024950/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1024950
Нажмите здесь для печати.