Вся статья в одном рисунке.
Вся статья в одном рисунке.

Приветствую в рассказе о запуске моделей в слегка изолированном окружении, без ИИ-картинок, нейрослопа, ботов и прочего телеграма.

Локальный запуск ИИ-моделей (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/ и https://habr.com/ru/articles/933908/ например.

  • Использовать выделенный сервер (VDS).
    Не подошло, т.к. надо аккуратно разбираться в подключении, и встаёт вопрос безопасности. Да и иметь этот сервер надо, в конце концов. Для серьёзной настройки LLM и виртуальных VDS есть хорошие статьи, как от хостеров - на них ссылок не даю, они и так везде на первых местах в поиске, так и от пользователей, например https://habr.com/ru/articles/991560/.

Поскольку "свободный" компьютер тоже периодически использовался, то вначале была попытка запустить на нём LMStudio в виртуалке. Не взлетело по указанным выше причинам, в первую очередь из-за особенностей подключения по сети. Да и накладные расходы (Windows -> контейнер -> LLM) смущали.


Решил сделать dual-boot Windows/Linux на отдельном SSD на свободном компьютере.

Был выбран Linux Mint (основан на Debian) за простоту. Немного сомневался, но оказалось, что этот Linux и вправду удобный и простой. На него установлен LMStudio, загружены модели и настроен сервер.

На основном компьютере установил open-webui и подключил к серверу. Постфактум оказалось, что логично было бы установить его на тот же компьютер, что и LMStudio, но на тот момент я даже не предполагал, что поиск простого клиента для LLM под Windows окажется проблемой. Кроме того, контролировать установленный python-сервис в Linux оказалось бы отдельной задачей, а гарантированно контролировать - скорее всего неподъёмной.

1. Установка Linux (свободный компьютер):

  • Скачан iso-образ Linux Mint (2.8Гб), https://linuxmint.com/ . Из предложенных вариантов выбран образ с оконным менеджером xfce, его хвалили за минимализм. Подтверждаю: выглядит лаконично, похож на Windows, понравился.

  • Создана загрузочная флешка с помощью Ventoy. Последние версии Ventoy форматируют флешку USB в два раздела: один скрытый загрузочный, а второй пустой. На появившийся пустой диск надо просто скопировать образ iso.

Ventoy: форматирование USB-флешки и загрузка образа Linux.
Ventoy: форматирование USB-флешки и загрузка образа Linux.
  • При загрузке с флешки загрузчик Ventoy предложит загрузку с этого образа. С USB 2.0 загружается минут 5-10, но успешно.

  • После запуска Linux Mint на рабочем столе будет единственный ярлык "Install Linux Mint", запустить его и следовать инструкции.

  1. Рекомендую сразу выставить русский язык.

  2. Если надо сохранить какие-то из разделов диска, на этапе “Installation type” выбирайте второй пункт (“Something else”).

Скриншоты установки Linux.
Скриншоты установки Linux.

КРИТИЧЕСКИ ВАЖНО: внимательно выбирайте диск для установки!

В Linux-е диски именуются как /sda.., /sdb.., /sdc.. (см. букву перед первой цифрой), а его разделы как sdb1, sdb2, и т.д. (см. первую цифру). Хорошо, что пишется размер, мне это очень помогло сориентироваться.

Кроме того, идентификации способствует тот факт, что системный диск с Windows (10, 11) обычно содержит скрытые специальные разделы для загрузки (~100 мегабайт) и восстановления (~500 мегабайт). На скриншоте ниже пример такого диска (/sdb). Не трогайте этот диск и его разделы, если хотите сохранить Windows. И с данными будьте осторожны, если есть шанс их затереть.  

От души прошу - сделайте бэкап!

Да просто тупо скопировать данные на внешний диск или флешку тоже сойдёт. Вот правда. НИКТО НЕ ПОЖАЛЕЛ, ЧТО БЭКАП ЕСТЬ! Но помните правила личной гигиены: не давайте свой личный бэкап в руки незнакомым людям в форме. Всё, проехали. На Хабре есть целый хаб, также см. сроки хранения на разных носителях.

Возможно, потребуется удалять другие разделы и создать новый. Разделы удаляются и создаются по кнопкам "+" и "-". Для смелых: можно менять размер разделов. Я делал всё по умолчанию: создал один раздел на отдельном SSD-диске. Тип файловой системы - ext4.

Далее надо обязательно поставить галочку, где должна быть корневая папка "/" - на свежесозданный раздел. А в выпадающем списке выберите этот раздел для размещения первичного загрузчика (Device for boot loader installation).

Диски и настройка разделов для установки Linux.
Диски и настройка разделов для установки Linux.

Одна из фишек Linux в том, что потом с этим загрузчиком можно безболезненно выбирать Linux или имеющийся на этом компьютере Windows. Для этого надо сделать паузу в загрузчике на несколько секунд, и при необходимости выбирать загружаемую систему, см. подробности в конце статьи.

Далее пришлось немного допилить напильником настроить. Повторюсь, что интерфейс xfce очень похож на интерфейс Windows, всё работает интуитивно понятно, включая правую кнопку мыши.

  • Загрузиться в Linux (можно сразу изменить настройки BIOS для загрузки по умолчанию).

    Здесь меня ждал первый сюрприз. "Из коробки" переключение между русской и английской раскладками не работало. Перебрал все знакомые комбинации - ничего. (Позже выяснил, что это не баг, а так и задумано, точнее, зависит от оконного менеджера. Говорят, что в xfce по умолчанию левый Shift + CapsLock).

    Как починить: запустить Настройки системы либо напрямую из меню Пуск (первый скриншот, значок с двумя переключателями) и задать сочетание клавиш для переключения. Либо до настроек системы можно добраться с начального экрана настройки "Добро пожаловать/Первые шаги", которые открывается при первом запуске. Его также можно найти в меню Пуск под именем "Окно приветствия". 

Настройка переключения раскладки в Linux Mint.
Настройка переключения раскладки в Linux Mint.

Также стоит добавить индикатор раскладки на панель внизу. Правая кнопка мыши на нижнюю панель и добавление соответствующего элемента, см. скриншоты.

Настройка индикатора раскладки в Linux Mint.
Настройка индикатора раскладки в Linux Mint.

2. Установка LMStudio (Linux)

Сразу про альтернативы: llama-cpp (хорошая статья на Хабре), ollama (надстройка над llama-cpp), см. также комментарии в https://habr.com/ru/articles/991560/.

LMStudio позволяет удобно загружать модели в разных форматах, сразу работать с ними в чате, а главное - давать к ним доступ через API, доступное по сети.

Используются модели в формате GGUF и интерфейс взаимодействия (API) OpenAI.

  • Скачать файл-установщик c сайта https://lmstudio.ai/.
    Для Debian-based Linux есть два варианта распространения, в виде .deb файла (условно - инсталлятор) и AppImage (портативный вариант). Я использовал AppImage-вариант.

  • Дать разрешение скачанному файлу на запуск (правой кнопкой мыши -> сделать исполняемым), после этого можно запускать двойным кликом.

Запуск приложения из AppImage.
Запуск приложения из AppImage.
  • Скачать нужные модели. Интерфейс для скачивания моделей достаточно удобный, здесь же можно протестировать чат.

  • Имейте в виду, некоторые модели работают существенно медленнее (у некоторых - существенно дольше идёт обработка промпта), в таком случае просто попробуйте другие модели.

  • Настройка модели. При запуске без видеокарты (GPU) рекомендации из интернета - установить GPU-layers в 0, и отключить KW-кеш в GPU.

  • Проверить работу модели в чате. На вкладке Developer выводится текущее состояние модели. Удобно, чтобы понимать, на какой стадии (разбор промпта или генерации) находится процесс.

  • Включить сервер на вкладке Developer / Local Server и (важно!) включить работу в сети (Serve on Local Network). Если клиент (open-webui) будет установлен на этот же компьютер, то этот переключатель можно не трогать. Запомните порт (можно менять) и адрес, по которому будет доступен сервер

Настройки сервера в LMStudio.
Настройки сервера в LMStudio.

Про выбор моделей ничего нового сказать не могу: экспериментируйте. Постоянно появляются новые модели, на Хабре много статей. Например, выбор в зависимости от объёма памяти есть в Топ локальных нейросетей 2026: полный суверенитет без интернета

Для подключения к моделям через сервер нужен клиент, который (условно) правильно формирует json-запрос с промптом, может выбрать конкретную модель через API сервера и пр. Хвалят AnythingLLM, но он не везде недоступен, см. примечания в конце статьи.

В качестве клиента выбран open-webui как достаточно популярный. Он предоставляет удобный доступ к серверу из браузера, см. титульную КДПВ

3. Установка open-webui (на основной компьютер с Windows)

Open-webui запускается с помощью Python. Для Linux Python установлен по умолчанию, но у меня, напомню, на основном компьютере Windows.

Для управления Python и разными пакетами рекомендую miniforge3 (создаёт изолированные окружения Python), в котором надо создать отдельное окружение с Python 3.11.

Предполагается, что Python уже установлен и доступен.

Miniforge, Miniconda, Powershell и окружения Python

Историческое отступление: компания Anaconda cоздала одноимённый мощный комбайн для работы с Python, вместе с удобным менеджером пакетов conda и своим репозиторием пакетов, в качестве альтернативы pip. Conda позволяет создать изолированные окружения со своими версиями Python и наборами своих пакетов. Для установки можно использовать miniconda от Anaconda - лёгкий вариант, но к нему надо подключить репозиторий ("канал") conda-forge, или при установке явно указывать этот канал, чтобы получать свежие версии пакетов. 

Идея окружений оказалась удачной, и появилась open-source альтернатива от сообщества (внутри тот же менеджер conda):

Miniforge3 - легковесный менеджер зависимостей 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.
    Тут ждёт третий подводный камень: перед запуском требуется провести некоторые манипуляции с переменными среды.

Как менять переменные среды пользователя в Windows

Вариант 1: через cmd/Powershell:
setx VARNAME "value"
Устанавливает постоянное значение переменной среды для текущего пользователя, сохраняется после перезагрузки. Если значение без пробелов, можно без кавычек, например setx VARNAME 1.
Не забудьте "x" в конце! Команда set VARNAME "value" устанавливает переменную среды только на текущую сессию!
(Внезапно столкнулся с известным багом в Powershell: если открыть консоль при активной русской раскладке, то ввод заглавных английских букв может не работать! Подробности и решение в https://github.com/PowerShell/PowerShell/issues/10794 )

Вариант 2: через графический интерфейс.
В поиске меню Пуск ищите "переменные … " (Изменение переменных среды текущего пользователя) в русской, или "environment …"  (Edit environment variables for your account) в английской Windows.

  • а) При первом запуске происходит обновление (миграция) базы данных. Для корректного выполнения надо установить однопоточный режим. Об этом написано в документации, но "из коробки" open-webui падает.
    установить переменную среды
    UVICORN_WORKERS = 1
    (потом я забыл её поменять, поэтому не знаю, стоит ли возвращать)

  • б) Падение из-за неизвестной кодировки. То ли причина была в UVICORN WORKERS, то ли забыл задокументировать решение.

  • в) (режим паранойи) По умолчанию open-webui будет скачивать модели из интернета для локального использования. Наша цель - заставить подключаться исключительно к LMStudio. Для этого надо включить оффлайн-режим (правда, есть ощущение, что эта настройка не совсем работает, т.к. судя по выводу в консоль что-то из интернета подтягивается):
    HF_HUB_OFFLINE = 1

  • г) (опционально) Отключить парольный доступ (спасибо статье Огромный гайд по настройке рабочего окружения: Linux, VScode, Python).
    WEBUI_AUTH = 0
    Нюанс: отключать его надо до создания администратора при первом запуске, иначе будет ошибка. В таком случае можно удалить базу данных open-webui, см. примечания.

Ошибка open-webui после отключения авторизации, если пользователь уже создан.
Ошибка open-webui после отключения авторизации, если пользователь уже создан.
  • Запуск 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.

Настройка подключения open-webui к новому серверу.
Настройка подключения open-webui к новому серверу.
  • Открыть вкладку Новый чат (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-... Гб?).

  • Как подключить личного помощника по программированию (вездесущие агенты).
    UPD: буквально вчера вышла статья на Хабре про это (+ см. комментарии): Пробуем использовать локальные LLM для написания кода.

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

Разное и примечания:

  • По умолчанию open-webui использует авторизацию и требует создать пользователя/пароль. Если не используете режим без авторизации (напомню, с помощью переменной среды WEBUI_AUTH = 0), и забыли пароль, проще всего стереть файл базы данных. Пропадут все настройки, в том числе подключения. База лежит внутри окружения Python, типа ...\miniforge3\envs\<env-name>\Lib\site-packages\open_webui\data\webui.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, если понадобится.

Настройка паузы с возможностью выбора Linux/Windows.
Настройка паузы с возможностью выбора Linux/Windows.
  • Альтернативные клиенты.
    Добрый google выдал целый список, среди которых часть сайтов не открывается (LibreChat, LobeChat), что-то (AnythingLLM) заблокировано по IP или стране, Jan.ai использует только свои модели. В общем, пока open-webui остался без альтернатив, извините за тавтологию.

  • Как собрать компьютер для LLM.
    В свете роста цен на память и прочих безобразий, главным расходом будет покупка будет SSD (желательно в форм-факторе M.2, с поддержкой NVME). И смотрите характеристики, у "китайских" они могут в несколько раз отличаться от брендовых.

    Для мат-платы и памяти Авито в помощь. Видел предложения использовать DDR3 вместе с многоядерными Intel Xeon v3, на китайских материнских платах. Подробности есть на https://e5450.com/ Сайт был посвящён сборкам на Xeon и закупкам на Aliexpress с реферальными ссылками, но давно не обновлялся, и Aliexpress уже не торт. При этом база и описание бюджетных комплектующих впечатляющая. Для любителей, т.к. по отзывам есть проблемы с совместимостью процессоров и поддержкой BOIS. Второй минус - обзор ограничен только процессорами Xeon, а у них основная проблема состоит в том, что надо подобрать хорошее питание и охлаждение. Наконец, если рассматривать апгрейд с установкой видеокарты, вопросы по совместимости могут стать критичными.
    (Пока готовил статью, вышли удивительные новости о DDR3.)

  • Ссылки посерьёзнее по настройке локальных LLM:
    упомянутая выше статья Свой ИИ без облаков: практический гайд по llama.cpp + Qwen (с тонкой настройкой эффективности, Хабр),
    Пошаговый запуск собственного LLM сервера от А до Я (с видеокартой, Хабр),
    Топ локальных нейросетей 2026: полный суверенитет без интернета (Хабр), и, наконец,
    хардкор по настройке LLM в домашних условиях: Распределённый инференс и шардирование LLM. Часть 1: … (часть 2 и часть 3, последняя как раз про open-webui).

P.S. самым сложным было набирать статью - тот ещё адок. Извините. Непонятно, как вставлять несколько скриншотов в ряд. В html-режиме добавлять рисунки можно только ссылками. В стандартном редакторе непонятно, как делать вложенные списки (один чудом получился, я так и не понял как), внутри списка делать спойлер или картинку и пр. Частично спас вариант копирования из Google Docs + ручное склеивание скриншотов в imagemagick.

Комментарии (3)


  1. Hubr2025
    18.04.2026 11:57

    Спасибо за статью, хотелось бы ещё услышать что за процессор. И насколько это полезно/быстро в реальных задачах - просто, как мне кажется, лучше будет обратиться к облачным моделям. (Могу ошибаться)


    1. afterone Автор
      18.04.2026 11:57

      Процессор i7-12700, обычный, не "К", 12 ядер, но нормальных (не "efficient") всего 8. Работает откровенно небыстро, больше для экспериментов, так сказать, базовый сетап. Переводил по 5-10-15 страниц технического текста за раз 10-30 минут. После трёх-четырёх раз выпадал в ошибку, приходилось перезапускать модель (Qwen3-30b-a3b-instruct с сжатием Q4_K_S). Точно не засекал, просто запускал и уходил. Опять же - очень много времени уходит на первый этап, разбор промпта и старт. Просто чат в течение минуты начинает отвечать. Обычно советуют небольшие модели для конкретных задач, но я серьёзно не изучал. Есть эксперименты с кодингом, https://habr.com/ru/articles/1024884/ но на Мак Про с 48 Gb unified памяти (она и для процессора и для видео), поэтому надо делить скорость в несколько раз. По-видимому, надо раскошеливаться на видеокарту (


  1. SerjV
    18.04.2026 11:57

    а лучше не про процессор, а про практику проброса GPU с одного компа на другой... было бы интересно почитать