fastllm-proxy
요청 경로에 입출력이 없는 러스트 라우터
git clone https://github.com/azrtydxb/Fastllm-proxy && cd Fastllm-proxy && docker compose up -d여러 추론 백엔드와 80개 제공자를 주소 하나 뒤에 세웁니다. 저장소는 요청당 처리 비용을 0.76마이크로초로 밝히고, 요청 경로에 입출력이 없다는 것을 시험 코드로 강제합니다. 권한과 속도 제한, 예산 판단이 메모리에 펼쳐 둔 스냅숏에 대한 정수 비교라 그렇습니다. 응답도 해석하지 않고 위에서 온 프레임을 그대로 흘려보내므로 사용자가 많이 읽어도 비용이 늘지 않습니다. 앞부분이 같은 요청은 그 캐시를 가진 노드로 되돌려 보내되 그 노드가 뚜렷하게 더 바쁘면 예외를 둡니다. 제어 계층이 끊겨도 마지막 스냅숏으로 계속 응답합니다. 리트LLM 형식 설정 파일을 그대로 읽습니다.
판단
이럴 때 씁니다
- 게이트웨이 자체가 병목이 되는 규모일 때
- 자체 추론 서버의 캐시를 살려야 할 때
- 제어 계층이 끊겨도 서비스가 계속돼야 할 때
이럴 땐 쓰지 마세요
- 소규모에서는 차이를 못 느낍니다
- 판이 0.2x 대라 설정이 바뀔 수 있습니다
- 응답을 해석하지 않으므로 내용 기반 후처리는 못 합니다
차별점
- 요청당 처리 비용을 마이크로초 단위로 밝히고 시험으로 강제합니다.
- 위에서 온 프레임을 해석하지 않고 그대로 흘려보냅니다.
- 앞부분이 같은 요청을 그 캐시를 가진 노드로 되돌립니다.
- 제어 계층이 끊겨도 마지막 스냅숏으로 계속 응답합니다.
워크플로
- 01저장소를 받아 컴포즈로 띄웁니다.
- 02관리자 비밀번호를 설정합니다.
- 03리트LLM 형식 설정 파일을 그대로 넣습니다.
- 04클라이언트를 4000번 포트로 돌립니다.
- 05관리 화면에서 권한과 예산을 잡습니다.
주요 명령
| 명령 | 설명 |
|---|---|
docker compose up -d | 띄웁니다. |
docker compose exec fastllm fastllm-proxy set-password --name you --password '...' | 관리자 비밀번호를 정합니다. |
SIGHUP | 스트림을 끊지 않고 라우팅 표를 바꿉니다. |
함정
설치 전에 확인하세요
- 응답 본문을 해석하지 않습니다. 내용을 보고 판단하는 후처리는 이 계층에서 못 합니다.
- 요청 경로에 입출력이 없다는 것이 설계 전제입니다. 그 전제를 깨는 변경은 시험이 막습니다.
- 캐시 친화 라우팅은 노드 부하가 고르지 않아 보일 수 있습니다. 균등해 보이는 것이 목표가 아닙니다.
- 판이 0.2x 대입니다. 게이트웨이 구성과 설정 규격이 바뀔 수 있습니다.
비교
대부분의 게이트웨이는 스트림 조각마다 해석하고 다시 만들어 내보냅니다. 그 비용은 사용자가 많이 읽을수록 커집니다. 이쪽은 그 과정을 아예 없앤 쪽이라 규모가 커질수록 차이가 벌어집니다. 대신 내용 기반 처리는 포기합니다.
최근 변경
같은 키와 권한, 회계 아래에서 도는 게이트웨이 두 종류가 새로 들어갔습니다. 배포 이미지는 두 아키텍처를 각각 그 아키텍처의 실행기에서 만들어 하나로 묶습니다.