Самастаянаваныя сеткі LLM: адна вората замест аднаго хоста на кожны мадэль
Дадзенне модэляў з адкрытым вагам не павінна значыць неабходнасць наявнасці новых імен хостаў і канектавання для кожнага дапытку. Шлюз у стылі LiteLLM заставае адні пункты выходу, тады калі бэкенды зміняюцца за яго межамі.
Крыніцы: The Self-hosted LLM Networking Problem I Didn’t Expect
Самастаўленне модэляў з адкрытымі вагамі часта пачынаецца проста: адзін модэль, адна назва хоста, адна простая схема работы. Проблемы з’яўляюцца, калі прыходзяць другі і трэці модэлі. Кожны новы файл з вагамі часта вымагае дадатковых налаштаванняў сеткі, взаінадзеяння і конфігурацыі прыкладнення — нават калі продукт запрашваў толькі ўто іншы ідэнтыфікатор модэля. Размешчанне шлюза перад бэкендамі вяртае адзін канцэнтрабы, пакуль модэлі прыходзяць і зноў выйшаюць за яго межамі. Урок каняеся ў архітэктуры, а не у спецыфіцы продукта: перастаўце навчаць кожнаго кліента топалогіі кожнай апаратной платы з GPU.
Усё пачалося з аднаго модэля
Чэкпойнт класу Qwen з адкрытымі вагамі працаваў локальна і быў доступны праз назву хоста:
llm.my-app.com
Прыкладненне запрашвала гэты канцэнтрабы падаючы назву модэля і рэшты даных запіту. Трафік працаваў; панелі керування выглядалі нормальна. Потым была прынята швейцарскія версія Gemma, якая патрабавала свога сабе слухальніка для трафіку, чутлівага да затрымкі:
flash.llm.my-app.com
Гэта таксама працавала. Мадэлі зображэння і копіі для адзынакоўкі чэкпойнтов класу DeepSeek прыгледзелі ўсё больш хостаў:
images.llm.my-app.com
deepseek-v4.llm.my-app.com
Продакшн-версія Qwen застала некалічанай, тады як разработка была спрамована на эксперыментальны канец. Кожны крок быў самастойна разумны. Разам яны стварылі сетку базовых URL-адрэсаў, якія мог згадаць толькі ты, хто іх настроўваў.
Усё працавала, але чагосці здавалася некалькі не так
Ні адзін з крокаў не быў складным — і гэта была проблема. Кожны мадэль павтараў тую ж самую процедуру: запуск ваг, стварэнне сервіса, налаштаванне сеткі, з’ѐеднанне VPC-элементаў, каб прыватныя хосты мадэляў моглі падключыцца да прыкладнага програму, а потым навучэнне прыкладнага програму новай базовай URL. Нічога з гэтага не ёсць «мадэллю» — гэта проста стандартныя тэхнічныя процедуры. Колегам не можна было сказаць «выкорыстоўваючы наш сервіс LLM і выберыце гэтую мадэль»; ўсім было неабходна чыткая інструкцыя ўсупершце па хосце, а размова перачыналася ўсё занова, калі з’являўся новы канцэнтрык. Для прыемкі партнера было неабходна надаць прыватны глосарый імен хостаў, а не проста ўсё каталог.
Эксперымент DeepSeek паказаў гэта ясна
Адмініструвань адыянтнага развертвання класу DeepSeek без парадзей для прыемнай сістэмы Qwen значыла ўтварэнне яшчо адного канцэнтрау у разрабоцкай асяроддзі. З тэхнічной точкі зору нічога не было зламана. Але застаўся некалькі важны вопыт: чаму для дадагаўкі модэлю патрэбна дадагаўка сеткавых звязоў? Змяніліся толькі вагі модэлю; інфраструктура прыемнай сістэмы не павінна змяняцца адразу. Калі кожны эксперымент выманжуе DNS і параметры звязоў, праца над эксперыментамі сповольняецца ў такты з часам змян сеткавых налашоўкаў.
Як жа вялікія прадастальнікі выкладзаюць модэлі
Вялікія прадастальнікі не ствараюць адыянтных публічных URL-адрэсаў для кожнага модэлю. Корыстувачы не должны кераваць групамі хостаў такімі, як:
gpt-4.api.openai.com
gpt-5.api.openai.com
some-other-model.api.openai.com
У яных ёсць адна API, і мадэль выбіраецца внутры запіту. Калі прадаўцы можаюць выступіць фронтэндам для дзесяткаў модэляў за аднай паверхнею, то самастойна запускаемыя флоты таксама можуць праглядаць до такога ж фармата. Контракт з кліентам становіцца стабільным; флот, які стоіць за ўсім гэтым, можа зменшвацца або змяніцца.
Ідэя: размясціць проксі перад модэлямі
Програмы завжды должны вяськавацца з аднай стабільной базы:
llm.my-app.com
і выбіраць мадэль у тэле запіту:
{
model: "qwen-3.8",
...
}
{
model: "gemma-3",
...
}
{
model: "deepseek-v4",
...
}
Бэкенды можуць пераходзіць з аднаго камп’ютара на іншы, з однай рэгіяў на іншую аб працаваць пад разнымі срэдамі; контракт з кліентам застаецца незменным. Гэта тая ж абстракцыя, яку ужо продаюць прадаўцы хмарных сервісаў — толькі спрамованая на флоты з відкрытым кодам, якія знаходзяцца пад вашым кантролем.
Стварэнне проксі проты вжывання гейтвею
Няўзрозумелы працоўнік з перадачай дадзенняў — тыя, хто займаецца мадэлямі, маршрутарамі, вярненням дадзенняў — выглядае простым, пакуль не становіцца часткай спяльнага сервісу. Тады з’яўляюцца віртуальныя канты, улучшэнне рачунавання вікорыстоўвання, контроль даступу, налаштаванні модэляў, ліміты швы, логаванне і адміністрацыйскі інтэрфейс. Цэй вялікай меры не ёсць простым проксі; цэ гэта вораты LLM. Перзначна перабудова гэтых механізмав з нуля абяўляе гады рэшэння спецыфічных сітуацый (замена кантоў, бюджэты для кожнай команды, журналы аўдыту). LiteLLM нацэлена на гэты слой керавання, ўбачаючы, што командам не трэба гэта робіць.
Чаму падходы LiteLLM
Програмы застаюцца з аднім канцэмам:
llm.my-app.com
LiteLLM направляе дадзеныя да рознородных бэкендаў:
My Application
│
▼
llm.my-app.com
│
▼
LiteLLM
/ | \
/ | \
Qwen Gemma DeepSeek
Дадаванне эксперыментальнай модэлі стае простым працэсам: запуск вагоў, ўжыванне іх у воратах, без змены URL прыкладнення. Імены хостаў больш не прасачуюцца ў код продукту. Распрацоўшчыкі выбіраюць модэлі так сама, як і тэмпературу — у самай запытцы, а не практычна рэдагуячы файлы сераўіса для кожнага эксперыменту.
Развертванне было простым
LiteLLM поставляецца як адразе Docker і зазвычай выкарыстоўвае PostgreSQL для зберагачэння стойкога стану, такога як ключы і даныя пакупкаў:
LiteLLM container
│
├── PostgreSQL
│
└── Open-weight model servers
Серверы модэляў сфокусаваны на выконанні задач; шлюз керуе ўсім працэсам над імі. Апараты з GPU больш не патрабуюць прымальнага адказу з боку кожнага мікросервісу. Взаімна свярэннае з’ѐеднанне адбываецца праз шлюз, а не праз сітку зв’язкаў тыпу N-by-M межа аплікацыямі і хостамі модэляў.
Тое, што насправды змянілася
Да появы шлюза дадаванне новага модэля значыла павторэнне всіх правіл сеткавага наладжвання:
New model
↓
New deployment
↓
New networking
↓
New hostname
↓
Application changes
Пасля чаго ція процедура скорачылася да рэгістраціі на стабільным входзе:
New model
↓
Deploy it
↓
Register it with the gateway
↓
Use the existing endpoint
Важны вывучаны урок: прыгункі не павінны ведаць, дзе запускаецца LLM — толькі які мадэль трэба запрашваць. LiteLLM — адна з практычных способаў стварэння такога межы. Пачатковая проблема была не ў самам продукце-шлюзе, а ў другой модэлі. Калі такі патэрн стане зрозумелым, кожная наступная модэль або падтрымае сітку імен хостаў, або падтрымае едын ствараны каталог. Выберыце каталог.
Практычныя памяткі, якія варта зберагчы
- Спрыяйце рэгістрацыі модэляў як працэсу, калі керуецца змянамі: хто можа дадаць новыя бэкенды, як ключы асоціююцца з камандамі і як заканчваецца тэставанне.
- Зберагчыце пераказы стану бэкендаў окрэмна ад публічных канцоўак, южабы модэль не выглядала як абсалютныя перыванні.
- Запісуйце аднойчы основную URL у дакументах падключэння і адмовіцеся публікаваць дадатковыя імены хостаў для каманд прыгункаў, як толькі не будзе строгай патрэбы ў ізоляцыі.
Этыя прычыны падтрымліваюць абстракцыю, якую было створана для гэтаго шлюза.