#358
Chat Completion Stream Fix & API Improvements
predibase/lorax 머지됨 2024-03-27
RustStreamingOpenAI APIBug Fix
Chat completion stream의 마지막 delta 직렬화가 OpenAI client 표준과 다른 문제를 수정하고, /tokenize 엔드포인트 추가 및 Swagger 문서를 개선했다.
변경 사항
- Chat completion streaming 응답의 마지막 delta 직렬화를 OpenAI 클라이언트 호환 형식으로 수정
- /tokenize 엔드포인트를 추가하여 토큰 카운팅 기능 제공
- Swagger/OpenAPI 문서 개선
이 변경이 중요한 이유
OpenAI 호환 클라이언트 라이브러리(Python openai SDK 등)가 LoRAX 서버와 통신할 때 stream 종료 시점에서 파싱 오류가 발생하는 문제였다. 이 수정으로 OpenAI SDK를 그대로 사용하면서 LoRAX로 backend만 교체하는 구성이 안정화됐다.
기술 상세
Rust 기반 router 레이어(router/src/lib.rs, router/src/server.rs)에서 streaming chat completion의 마지막 chunk가 OpenAI의 [DONE] 프로토콜과 다르게 직렬화되는 문제를 수정했다. 내부 fork(repo:cbf2b99b35c1#6)에서 2024-03-21 먼저 수정한 뒤, 같은 변경을 upstream에 PR로 제출했다. LoRAX는 S-LoRA(Sheng et al., MLSys 2024)와 Punica(Chen et al., MLSys 2024)의 멀티 LoRA 서빙 연구를 실전 프레임워크로 구현한 시스템이다.
관련 내부 작업
내부 fork에서 먼저 문제를 해결(2024-03-21)한 뒤 upstream에 기여(2024-03-27). 내부 LoRAX 서빙 환경에서 OpenAI 호환 클라이언트를 사용하기 위한 선결 조건이었다.
관련 프로젝트 보기 →