Перейти к содержанию
Публикация AiManual

Infercat: как поделиться локальным ИИ через p2p-туннель без VPN

Infercat: открытый p2p-туннель для локального ИИ. Делитесь доступом к своим моделям через пригласительные коды без VPN и учетных записей. Поддерживает llama.cpp

Коротко

Что будет в материале

  1. 01

    Что такое Infercat и зачем он нужен

  2. 02

    Как работает архитектура Infercat

  3. 03

    Функции пригласительных кодов: контроль доступа

  4. 04

    Поддерживаемые движки: llama.cpp, vLLM, Ollama, LM Studio

Что такое Infercat и зачем он нужен

Infercat - это open-source инструмент с MIT-лицензией, который создает зашифрованный p2p-туннель между вашей локальной моделью ИИ и устройством другого человека. Он генерирует пригласительные коды, позволяющие друзьям и коллегам подключаться к вашему ИИ через браузер или CLI без установки VPN и без учетной записи. Основная задача - упростить совместное использование локальных LLM, сохраняя контроль над доступом.

Вы запустили мощную модель на своей машине, но хотите показать результат коллеге или дать попробовать другу. Обычно для этого приходится настраивать VPN, открывать порты или арендовать сервер. Infercat убирает эти сложности: вы запускаете одну команду, получаете код и отправляете его человеку. Все.

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

Как работает архитектура Infercat

Архитектура основана на tailcat - технологии, обеспечивающей прямое p2p-соединение между хостом и клиентом. Пригласительный код содержит информацию для установления зашифрованного туннеля. Соединение устанавливается напрямую, если возможно, или через релейный сервер (в текущей версии для браузеров используется режим релея). Шифрование гарантирует конфиденциальность передаваемых данных.

Роль tailcat в установлении соединения

tailcat - это библиотека для создания p2p-туннелей, аналогичная Tailscale, но более легковесная. Она использует NAT traversal и при необходимости релейные серверы. Infercat использует tailcat для установления зашифрованного канала между хостом и клиентом, не требуя публичного IP или настройки маршрутизатора. Это значит, что вы можете запустить Infercat на домашнем компьютере за NAT, и клиент все равно подключится.

Технически tailcat пытается установить прямое соединение через UDP hole punching. Если это не удается (например, из-за симметричного NAT), трафик идет через relay-сервер. В текущей версии браузерные подключения всегда используют relay, потому что WebRTC в браузерах пока не реализован.

Как пригласительные коды обеспечивают доступ

Пригласительный код - это строка, содержащая зашифрованные параметры соединения и права доступа. Хост генерирует код с определенными ограничениями (лимиты токенов, разрешенные модели) и передает его пользователю. Клиент использует код для подключения через браузер или CLI. Код можно отозвать в любой момент, что мгновенно прекращает доступ.

Код не содержит секретных ключей в открытом виде. Он подписывается хостом, и при подключении клиент проверяет подлинность. Это защищает от подделки и повторного использования после отзыва.

Функции пригласительных кодов: контроль доступа

Infercat предлагает несколько функций для управления приглашениями: лимиты токенов (ограничение количества токенов, которые может использовать приглашенный), разрешенные модели (можно указать, к каким моделям у клиента будет доступ), ротация ключей (периодическая смена кодов для повышения безопасности) и отзыв ключей (немедленное прекращение доступа). Эти функции позволяют точно контролировать использование ресурсов.

Лимиты токенов и разрешенные модели

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

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

Ротация и отзыв ключей

Ротация ключей позволяет периодически менять пригласительные коды, что снижает риск несанкционированного доступа, если код был скомпрометирован. Отзыв ключа мгновенно отключает доступ для конкретного пользователя без влияния на других. Это особенно важно при временном предоставлении доступа: выдали код на день, потом отозвали.

Поддерживаемые движки: llama.cpp, vLLM, Ollama, LM Studio

Infercat поддерживает основные движки для запуска локальных LLM: llama.cpp (включая производные, такие как llama-cpp-python), vLLM (для высокопроизводительного инференса), Ollama (простое управление моделями) и LM Studio (графический интерфейс). Это покрывает большинство сценариев использования - от персональных экспериментов до серверного обслуживания.

llama.cpp - легковесный движок, который работает даже на CPU. Если вы используете его, Infercat может подключиться к уже запущенному серверу или запустить модель напрямую. vLLM ориентирован на GPU и высокую пропускную способность, подходит для обслуживания нескольких клиентов. Ollama удобен для управления моделями и имеет свой API, Infercat может выступать прокси. LM Studio предоставляет графический интерфейс, и Infercat может использовать его локальный сервер.

Ограничения текущей версии: режим релея для браузеров

В текущей версии при подключении через браузер используется режим релея, то есть трафик проходит через промежуточный сервер, а не напрямую p2p. Это может влиять на задержку и пропускную способность. Для CLI-подключений, вероятно, доступен прямой p2p. Ограничение связано с техническими сложностями реализации WebRTC в браузерах. Планируется улучшение.

Если вы планируете использовать браузерный интерфейс для интерактивного чата, задержка может быть заметной, особенно если relay-сервер далеко. Для CLI-клиентов, которые отправляют запросы и получают ответы, это менее критично. Разработчики осознают эту проблему и работают над прямым соединением для браузеров.

Планы развития: управляющая панель, новые модели, облачный шлюз

Разработчики планируют добавить управляющую панель для хостов, которая упростит мониторинг и управление приглашениями. Также в планах поддержка других типов моделей (не только LLM, возможно, модели для генерации изображений и др.) и создание публичного облачного шлюза, который позволит подключаться к локальным моделям через облачный сервис без необходимости установки дополнительного ПО.

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

Как настроить Infercat и поделиться доступом

Пошаговое руководство: установка Infercat (через pip или из исходников), запуск с указанием движка и модели, генерация пригласительного кода с нужными параметрами, передача кода пользователю, подключение через браузер или CLI. Примеры команд для разных движков. Советы по безопасности: использовать лимиты, регулярно ротировать ключи.

Установка и запуск с разными движками

Для llama.cpp: infercat --engine llama.cpp --model path/to/model. Для Ollama: infercat --engine ollama --model llama3. Для vLLM: infercat --engine vllm --model meta-llama/Llama-2-7b. Для LM Studio: infercat --engine lmstudio --model local-model. После запуска будет выведен пригласительный код.

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

Генерация пригласительного кода с ограничениями

Команда для генерации кода с лимитом токенов: infercat invite --max-tokens 1000 --model llama3. Можно указать несколько моделей через запятую. Код можно отозвать: infercat revoke <code>. Ротация: infercat rotate <code>.

Пригласительный код можно сгенерировать как во время запуска, так и позже. Если вы хотите дать доступ только к определенной модели, укажите ее в параметре --model. Лимит токенов задается на запрос или на общее количество, в зависимости от версии. Проверьте документацию для точных параметров.

Сценарии использования: кому и зачем это нужно

Примеры: разработчик хочет показать коллеге работу своей локальной модели без развертывания на сервере; энтузиаст с мощным GPU предоставляет доступ друзьям для экспериментов; специалист по данным дает ограниченный доступ клиенту для тестирования модели; преподаватель демонстрирует студентам работу LLM. Во всех случаях Infercat упрощает процесс, сохраняя контроль.

Вы можете использовать Infercat для совместной работы над промптами: коллега подключается к вашей модели и тестирует сценарии, не имея доступа к вашему компьютеру. Или вы можете монетизировать свой GPU, предоставляя платный доступ к модели через пригласительные коды с лимитами.

Заключение: стоит ли использовать Infercat

Infercat - полезный инструмент для тех, кто хочет быстро и безопасно поделиться локальным ИИ. Он прост в настройке, поддерживает популярные движки и предоставляет гибкий контроль доступа. Ограничение с релеем для браузеров может быть недостатком для требовательных к задержке задач, но для большинства сценариев приемлемо. Планы развития обещают значительные улучшения. Рекомендуется попробовать, если вам нужно делиться моделями без сложной инфраструктуры.

Если вы активно используете локальные LLM, Infercat может стать удобным дополнением к вашему инструментарию. Он не заменяет полноценный хостинг, но для быстрого обмена доступом подходит отлично. Попробуйте на небольшой модели и оцените удобство.

Подписаться на канал