Где проходит граница «локального»

Локальное выполнение означает, что вычисление модели происходит на вашем оборудовании. Оно само по себе не доказывает, что весь сервис работает без внешних соединений. В рабочем контуре обычно есть загрузчик весов, API-сервер, интерфейс, поисковый индекс, коннекторы к CRM и документам, средства наблюдения и обновления. Для каждого компонента нужен отдельный ответ: что он получает, куда может обращаться и что происходит при недоступности сети.

Это не утверждение, будто любой локальный продукт отправляет переписку наружу. Разные функции передают разные данные. Статистика работы модели, например, не равна тексту запроса; облачная генерация, напротив, обрабатывает содержимое запроса на удалённой стороне. Именно поэтому в закупке и проектировании следует разделять классы трафика, а не ставить одну галочку «локально».

Четыре места, которые стоит проверить

**Загрузка модели.** В документации Hugging Face Hub сказано, что обычный вызов `hf_hub_download` может обращаться к серверу даже при наличии файла в кэше, чтобы проверить актуальность версии. `HF_HUB_OFFLINE=1` запрещает HTTP-вызовы именно к Hub: будут использованы уже доступные файлы, а отсутствующий файл вызовет ошибку. Это настройка библиотеки, а не сетевой запрет для всего приложения. Для воспроизводимого запуска заранее подготовьте веса, токенизатор, конфигурацию и зависимые файлы; фиксируйте ревизию и проверяйте, что сервис стартует без доступа к Hub.

**Облачные функции рядом с локальными.** Ollama отдельно документирует режим облачных моделей. В её FAQ для локального режима предлагается `OLLAMA_NO_CLOUD=1` либо `disable_ollama_cloud` в конфигурации; после изменения требуется перезапуск. При таком выборе недоступны облачные модели и веб-поиск Ollama. Но это не блокирует произвольные исходящие соединения других программ, например внешнего коннектора или вашего приложения.

**Техническая статистика.** В исходном коде vLLM 0.31.0 сбор статистики использования включён по умолчанию и отключается, в частности, `VLLM_NO_USAGE_STATS=1` или `VLLM_DO_NOT_TRACK=1`. Это повод согласовать требования к телеметрии и проверить сетевой журнал, а не повод объявлять о передаче промптов: состав отправляемых полей следует смотреть в коде конкретной версии. У иных компонентов правила могут отличаться.

**Агенты, RAG и интерфейсы.** Даже при полностью локальном инференсе приложение может отправить вопрос в облачный поиск, внешний OCR, систему мониторинга или сервис аналитики ошибок. Проверьте настройки фактического маршрута: от пользовательского интерфейса и обработчика файлов до модели, векторного поиска и инструментов агента. В описании архитектуры укажите владельца каждого вызова и допустимый тип данных. Это уже проектное требование, а не свойство одной модели.

Как построить проверяемый контур

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

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

Зафиксируйте две разные политики:
- **Строго офлайн:** из рабочей зоны нет исходящих соединений в интернет. Обновления проходят через утверждённый импорт. Отказ внешней сети не должен останавливать локальные запросы.
- **Контролируемый гибрид:** перечислены разрешённые назначения, цели и типы данных; трафик идёт через прокси или шлюз, журналируется и может быть отозван. Пользователь знает, когда запрос покидает контур.

Не называйте гибрид «полностью офлайн». И не требуйте полного запрета там, где владельцу процесса действительно нужен внешний реестр: это повысит цену поддержки без пользы, если маршрут можно ограничить и согласовать.

Проверка за один короткий пилот

Возьмите десять типовых задач с обезличенными данными: текстовый вопрос, запрос к базе знаний, загрузку документа, работу агента с разрешённым инструментом и нештатный перезапуск. Во время теста сначала запишите все DNS-запросы и исходящие соединения, затем запретите внешние адреса и повторите сценарии. Смотрите не только успешный ответ, но и скрытые повторы, задержки при старте, ошибки загрузки файлов, записи в логах и фоновые задания. Любой неожиданный адрес должен получить владельца и объяснение.

Критерий приёмки формулируйте заранее. Для строгого офлайна — ноль исходящих соединений из рабочей зоны и успешное выполнение согласованных локальных задач. Для гибрида — только утверждённые назначения и подтверждённое отсутствие чувствительного содержимого в неподходящих каналах. Не делайте вывод по одному запуску: проверьте обновление, рестарт и сценарий, когда внешний сервис недоступен.

Экономика и следующий шаг

Защищённый контур имеет цену: локальная вычислительная мощность, хранение нескольких версий весов, импорт обновлений, мониторинг, поддержка и восстановление после сбоя. Сравнивать его с API только по цене токена некорректно. Сначала оцените объём чувствительных запросов и допустимые маршруты, затем полную стоимость владения и потери от простоя. Для многих команд контролируемый гибрид окажется достаточным; для договорных или регуляторных ограничений может потребоваться строгая изоляция. Это решение принимает владелец данных вместе с ИТ и безопасностью.

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