StartLux가 결정 모델 전용 추론 엔진 Prism을 오픈소스로 공개했다

InfoQ 中文9일 전조회 1

StartLux가 자사 결정 모델 StartLux-Decision에 맞춰 설계한 추론 엔진 Prism을 오픈소스로 공개했다. 회사가 공개한 측정에 따르면 NVIDIA H200 한 장에서 27B 모델(StartLux-Decision v1.1)을 돌릴 때 기존 vLLM 기반 구성보다 1.2~5.3배 빠른 응답 시간을 기록했다. 비슷한 시기 DeepSeek도 자사 모델용 추론 프레임워크 DeepInfer를 공개했는데, 두 사례 모두 최적화 범위를 모델 자체에서 추론 시스템으로 넓히는 흐름을 보여준다.

Prism의 출발점은 결정 모델의 작업 형태가 생성형 LLM과 다르다는 점이다. 결정 모델은 입력 자료를 읽고 A, B, C 같은 제한된 후보에 대한 확률만 계산하면 되며, 자연어 답변을 토큰 단위로 끝까지 생성할 필요가 없다. 그런데 27B 모델의 어휘 집합은 약 24만 8천 토큰 규모여서, 범용 엔진은 후보 몇 개를 비교하는 데도 전체 어휘에 대한 Logits 계산을 수행한다. Prism은 마지막 출력 단계에서 유효 후보에 대해서만 점수를 계산하도록 바꿨다. 회사 측은 후보 집합에 대해 다시 정규화한 값과 수학적으로 같은 결과를 얻으면서 출력 연산량을 줄인다고 설명했다. 약 256토큰짜리 짧은 질문에서는 처리 시간이 53.1ms에서 19ms로 줄어 약 2.8배 빨라졌다.

같은 자료를 두고 여러 질문에 답하는 상황도 겨냥했다. 질문마다 별도 요청으로 처리하면 토크나이즈, 스케줄링, 공통 문맥 계산이 반복된다. Prism은 공통 지시문을 뿌리, 공유 자료를 줄기, 개별 질문을 가지로 묶는 '포리스트' 구조를 만들고 Tree Attention과 결합해 공유 구간의 계산 결과를 재사용한다. 한 자료에 세 가지 질문에 답하는 테스트에서 기존 vLLM FP8 구성은 92.9ms가 걸렸지만 Prism은 17.4ms로 처리해 5.3배 빨라졌다. 공개된 수치 가운데 가장 큰 개선 폭이다.

확률값의 재현성도 설계 목표로 삼았다. 동적 배치와 동시성 설정이 달라지면 부동소수점 연산 순서가 바뀌면서, 가중치와 입력이 같아도 확률이 미세하게 달라질 수 있다. 판정이 임계값 근처에 걸리면 이 차이가 결과를 뒤집기도 한다. Prism은 관련 Projection 연산을 INT8 Tensor Core에서 수행하고 INT32로 누적하는 방식으로 이 편차를 줄였다. 회사 측은 지원 구성 안에서 동시성, 배치 방식, 캐시 적중 여부, GPU 대수와 무관하게 출력 확률이 비트 단위로 일치한다고 밝혔다. 7개 평가 세트, 12,351건의 결정을 대상으로 한 측정에서 평균 정확도는 92.94%로, BF16 원본 정밀도의 92.97%와 0.03%포인트 차이였다.

StartLux-Decision v1.1의 AutoThink 모드는 바로 답하는 요청과 최대 4096토큰까지 사고 과정을 생성하는 요청을 함께 처리한다. Prism은 사고 작업을 위한 별도 서빙을 두지 않고 같은 스케줄러와 GPU 메모리를 공유하게 했다. 사고 요청의 프리필은 다음 배치의 직접 응답 요청과 함께 처리되고, 디코드 단계는 CUDA Graph로 실행되며 최대 64개 사고 작업이 동시에 돈다. 회사 측 설명대로라면 새로 들어온 짧은 요청은 긴 사고 과정 뒤에 줄을 서지 않고 디코드 스텝 한두 번만 기다린다. 샘플링 재현성을 위해 요청 자체로 난수를 정하는 Counter-based RNG도 도입했다. 단일 H200에서 사고 작업 하나는 초당 약 95토큰, 64개 동시 실행 시 총 3832토큰/초를 기록했다. Prefix Cache를 적용한 긴 자료 후속 질문은 48ms에서 5.4ms로 줄었다.

처리량 개선 폭은 지연 개선만큼 크지 않다. JevBench 동시성 64 테스트에서 초당 요청 수는 26.3건에서 30.7건으로 약 17% 늘었다. 즉 최대 5.3배라는 수치는 특정 요청 형태의 지연 개선치이며 전체 워크로드의 처리량 향상과는 다른 값이다. 회사는 별도로 자주 쓰이는 연산 형태에 맞춘 INT8 GEMM 커널도 개발했다고 밝혔다. H200의 특정 행렬 연산 테스트에서 초당 1240~1420조 회 INT8 연산을 기록해 NVIDIA cuBLASLt 대응 구현의 1.3~2.0배였다는 설명이다.

vLLM이나 SGLang 같은 범용 엔진은 긴 텍스트를 순차 생성하는 LLM 워크로드에 맞춰져 있다. 결정 모델처럼 후보 확률만 필요하고 공통 문맥이 자주 겹치는 작업은 그 전제에서 벗어나므로, 모델 구조와 워크로드 특성을 미리 아는 전용 엔진이 파고들 여지가 생긴다. 자체 모델을 서빙하는 팀 입장에서는 엔진 교체만으로 얻을 수 있는 지연 개선의 상한과, 그 대가로 감수해야 할 범용성 손실을 함께 저울질해야 한다는 뜻이기도 하다.

회사가 밝힌 전제도 같이 봐야 한다. 공유 문맥 비중이 낮거나 입력이 길면 전체 입력 계산이 차지하는 비중이 커져 개선 폭이 줄어든다. 정확도 92.94% 역시 특정 평가 세트와 모델 구성에서 나온 값이며, INT8 양자화가 판단 능력에 미치는 영향은 워크로드마다 다를 수 있다. Prism은 텐서 병렬(TP)과 데이터 병렬(DP)을 조합한 배포를 지원하지만, 특정 모델과 시나리오에 맞춘 전용 엔진인 만큼 적용 범위는 범용 프레임워크보다 좁다.