Devotd Github
새 소식추론/서빙

penta2himajin/qwisp 05e745b — 스트리밍 usage 청크 추가

Apple Silicon용 로컬 MoE 추론 서버 qwisp가 스트리밍 응답의 마지막 청크에 usage 정보를 담아 보내도록 변경됐다.

저장소 정보penta2himajin/qwisp ↗

Apple Silicon용 로컬 MoE 추론 서버 qwisp가 스트리밍 응답의 마지막 청크에 usage 정보를 담아 보내도록 변경됐다.

GitHub 설명: Fast, optionally-lossless local inference for Qwen3.6-35B-A3B (MoE) on Apple Silicon — OpenAI-compatible server + CLI over a raw-Metal decode engine (Seedless) on MLX.

스타
★ 16
포크
1
언어
Swift
라이선스
Apache-2.0
최신 릴리스
v0.3.11
원문 보기 ↗GitHub에서 보기 ↗

penta2himajin/qwisp는 Apple Silicon에서 Qwen3.6-35B-A3B를 로컬로 추론하는 서버와 CLI다. MoE(혼합 전문가: 조건에 맞는 일부 모듈만 활성화해 연산량을 줄이는 구조)를 MLX 위에 올라간 Metal 디코딩 엔진 Seedless로 돌리고, 요청 형식은 OpenAI API와 호환된다. 2026년 10월 6일 저장소에 들어온 커밋 05e745b는 이 호환 구멍을 메웠다. 스트리밍 요청에 stream_options의 include_usage를 true로 넣으면, 이제 [DONE]을 보내기 직전 마지막 청크에 usage 객체가 실려 나간다.

이제까지 usage 정보는 비스트리밍 응답에만 들어 있었고, 스트리밍으로 받는 클라이언트는 completion_tokens=0을 그대로 받아야 했다. 스트리밍 응답은 SSE(Server-Sent Events, 서버가 텍스트 이벤트를 차례로 보내는 형식) 방식으로 오기 때문이다. 서버는 [DONE]을 보내기 직전에 선택지가 비어 있는 청크를 하나 더 흘려보내며, 거기에 prompt_tokens, completion_tokens, total_tokens만 싣는다. 값은 엔진이 세고 있는 프롬프트와 생성 토큰 ID의 개수에서 나온다. 같은 커밋에서 요청 구조체에 StreamOptions가 추가되어, 예전에는 JSON 디코딩 단계에서 알 수 없는 키로 버려지던 stream_options가 보존된다. 셀프 테스트에도 그 왕복 확인 한 줄이 추가됐다.

다만 근거는 이 커밋 하나에 한정된다. 변경은 swift/Sources/qwisp 아래 세 파일에 걸친 24줄 추가뿐이고 삭제는 없다. 사용량 숫자가 서버 자체의 토큰 카운트를 그대로 내보내는 구조여서, 별도 카운터와 대조한 수치는 아니다. 릴리스 태그나 배포 형태, 성능 측정값은 이번 기록에 제시되지 않아 다른 클라이언트와의 호환 폭과 속도 영향은 판단하기 이르다. 눈에 띄는 개선 지점은 하나다. OpenAI 규격 스트리밍 클라이언트를 붙여 쓰는 쪽이라면 사용량 집계가 0에서 실제 값으로 바뀌는 변화가 분명하다.