본문으로 건너뛰기

로컬 LLM 중단을 원격 fallback으로 넘기는 HybridInfer

HybridInfer가 로컬 LLM의 정지와 오류를 감지해 같은 요청을 원격 모델로 자동 전환합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

HybridInfer는 로컬 모델을 먼저 호출하되 추론이 멈추거나 오류가 발생하면 같은 요청을 원격 모델로 넘기는 Python 기반 LLM 라우터입니다. 요청마다 프롬프트 길이와 모델별 실패 위험을 계산하고, 위험도가 높으면 로컬 실행을 건너뛰며 실행 중에는 시간 초과와 토큰 생성 간격을 감시합니다. 로컬 계층이 반복해서 실패하면 회전에서 제외한 뒤 cooldown 이후 다시 probe하고, Streaming에서는 첫 토큰 전까지만 원격 fallback을 허용해 두 모델의 출력을 섞지 않습니다. Ollama와 OpenAI-compatible endpoint를 연결하고 OpenAI API 형식의 서버로 제공하지만 모델 가중치를 직접 실행하는 inference engine은 아닙니다.

섹션별 상세

01
로컬 LLM은 비용과 개인정보 측면에서 유리하지만 긴 프롬프트의 prefill 정지, GPU 메모리 부족, driver hang 때문에 요청 전체가 멈출 수 있습니다. HybridInfer는 로컬 전용 구성을 그대로 두지 않고 실행 신뢰도를 라우팅 신호로 사용해 이 문제를 처리합니다. 짧고 저렴한 요청은 기기에 남기고, 실패 가능성이 큰 요청은 원격 계층으로 보내 비용과 응답 가능성을 함께 고려합니다.
bash
pip install hybridinfer

HybridInfer Python 패키지를 설치합니다.

bash
ollama pull llama3.2:3b

Ollama에서 로컬 계층으로 사용할 모델을 내려받습니다.

02
각 요청에서 프롬프트 길이를 short, medium, long 구간으로 나눈 뒤 backend와 model, 길이 구간을 키로 하는 위험 프로필에서 로컬 실패 확률을 읽습니다. 확률이 risk_prefer_remote 이상이면 로컬 호출을 생략하고, 그렇지 않으면 hard timeout과 local_stall_timeout_s 기반 stall watchdog 아래에서 로컬 추론을 시도합니다. 로컬이 오류를 내거나 일정 시간 동안 새 토큰을 만들지 않으면 같은 요청을 원격 계층에서 재시도하고 결과의 tier와 fell_back 상태를 응답에 기록합니다.
python
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8080/v1", api_key="unused")
# non-streaming
r = client.chat.completions.create(model="auto", messages=[{"role": "user", "content": "hi"}])
print(r.choices[0].message.content)

OpenAI client의 기본 주소를 HybridInfer 서버로 바꿔 비스트리밍 요청을 보냅니다.

python
# streaming (Server-Sent Events)
for chunk in client.chat.completions.create(
    model="auto", messages=[{"role": "user", "content": "hi"}],
    stream=True
): print(chunk.choices[0].delta.content or "", end="", flush=True)

OpenAI 호환 client에서 Server-Sent Events 방식으로 토큰을 순차 수신합니다.

03
로컬 계층이 계속 실패할 때는 단순히 매 요청마다 같은 모델을 다시 호출하지 않습니다. 상태를 LOCAL_ELIGIBLE, CAUTION, UNSAFE, RECOVERING, RESTORED 순서의 state machine으로 관리해 실패한 계층을 rotation에서 제외하고 cooldown 뒤 probe합니다. 실행 결과가 다시 위험 프로필에 반영되므로 모델과 프롬프트 길이에 따른 실패 패턴이 이후 라우팅에 누적됩니다.
python
from hybridinfer.config import load_settings
from hybridinfer.router import HybridRouter
router = HybridRouter(load_settings("~/.hybridinfer/config.yaml"))
res = router.complete([{"role": "user", "content": "hello"}])
print(res.text, res.tier, res.fell_back)

설정 파일을 불러와 HybridRouter를 라이브러리로 사용하고 응답 본문과 처리 계층, fallback 여부를 출력합니다.

04
Streaming에서는 이미 전송한 토큰을 회수할 수 없기 때문에 fallback 시점을 첫 토큰 기준으로 제한합니다. 로컬이 첫 토큰을 내기 전에 prefill에서 멈추면 클라이언트는 원격 Stream만 받지만, 첫 토큰 이후 로컬 Stream이 멈추면 다른 모델의 출력을 이어 붙이지 않고 finish chunk에 오류를 남긴 채 종료합니다. 이 방식은 완전한 자동 복구보다 출력 혼합 방지와 응답 상태의 정직한 전달을 우선합니다.
05
HybridInfer는 pip로 설치하고 Ollama에 로컬 모델을 내려받은 뒤 hybridinfer init으로 ~/.hybridinfer/config.yaml을 생성해 사용할 수 있습니다. hybridinfer serve는 http://127.0.0.1:8080/v1에서 OpenAI-compatible endpoint를 열며, 기존 OpenAI client는 base_url만 이 주소로 바꿔 비스트리밍과 SSE 요청을 보낼 수 있습니다. 응답에는 처리 tier, fallback 여부, latency를 담은 비표준 hybridinfer 블록이 포함되고 클라이언트는 이를 무시해도 됩니다.
06
이 도구의 범위는 Ollama와 원격 API를 조정하는 router에 머물며 모델 가중치를 직접 실행하는 inference engine은 아닙니다. Desktop 빌드는 latency, stall, error, 학습된 risk를 사용하고, Android 연구 시스템에서 사용한 on-device thermal headroom은 이 구현에 포함되지 않습니다. force_local과 force_remote, enable_* 옵션으로 연구의 A0-A3 reliability ablation arm을 재현할 수 있으며 Apache-2.0 라이선스를 적용합니다.

용어 해설

런타임 상태 기반 라우팅(Runtime-Health-Aware Routing)
모델의 응답 지연, 토큰 생성 중단, 오류 같은 실행 상태를 관찰해 요청을 보낼 계층을 선택하는 방식입니다. HybridInfer는 모델과 프롬프트 길이별 실패 위험을 학습해 로컬 실행을 유지할지 원격 모델로 건너뛸지 결정합니다.
정지 감시기(Stall Watchdog)
추론 중 새 토큰이 일정 시간 동안 생성되지 않는 상태를 감지하는 감시 로직입니다. 설정된 시간 간격을 넘기면 로컬 모델이 멈춘 것으로 간주하고 같은 요청을 원격 계층에서 다시 처리합니다.
첫 토큰 커밋(First-Token Commit)
Streaming 응답에서 첫 토큰이 전송되기 전과 후의 복구 정책을 나누는 방식입니다. 첫 토큰 전에 로컬 실행이 실패하면 원격 Stream으로 전환하지만, 첫 토큰 뒤에는 출력을 섞지 않고 오류와 함께 해당 Stream을 종료합니다.
자가 보정 위험 프로필(Self-Calibrating Risk Profile)
백엔드, 모델, 프롬프트 길이 구간별 실행 결과를 기록해 로컬 추론 실패 확률을 갱신하는 프로필입니다. 누적된 위험도가 기준값 이상이면 로컬 요청을 생략하고 원격 모델로 직접 보냅니다.
Server-Sent Events
서버가 생성되는 응답 조각을 연결된 클라이언트로 순차 전송하는 스트리밍 방식입니다. HybridInfer는 OpenAI 호환 API의 SSE 응답을 지원하며, 마지막 청크에 계층과 fallback 상태 같은 메타데이터를 담습니다.

기술

  • HybridInfer
  • Python
  • Ollama
  • OpenAI API
  • Server-Sent Events
  • SSE
  • Apache-2.0

활용 사례

  • 개인 기기에서 로컬 모델을 우선 사용하는 LLM 서비스
  • 로컬 추론 중단 시 원격 모델로 이어지는 챗봇
  • OpenAI-compatible client를 이용한 local-first inference
  • 모델별 실행 실패 위험을 반영한 LLM 라우팅

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 09. 02.수집 2026. 09. 02.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.