laya.cpp: 최적화된 laya 즉각적 의사결정 구현
laya.cpp: Optimized laya near-instant decision making
핵심 요약
Laya 모델을 파이썬 없이 C++와 CUDA 커널로 구현하여 추론 속도를 대폭 향상했습니다.
- 성능 최적화 — 불필요한 데이터 복사와 변환을 제거하고 연산 융합 및 메모리 접근 개선함
- 독립형 구현 — 파이썬이나 PyTorch 의존성 없이 ggml 기반의 C++ 환경에서 구동됨
- 벤치마크 결과 — RTX PRO 6000 환경에서 파이썬 대비 초당 질문 처리량 대폭 증가함
- 오픈소스 공개 — MIT 라이선스로 배포되며 JEV 호환 엔드포인트를 지원함
u/Nandakishor_ml가 올린 Laya 소개 글을 보고 나서, 이걸 독립형 C++로 구현하면 얼마나 빨리 돌아갈지 궁금해졌음.
아키텍처 설계, 학습, 오픈소스 공개까지 해준 u/Nandakishor_ml에게 감사를 표함. 내가 한 건 추론 구현인 laya.cpp인데, ggml 기반에 커스텀 CUDA 커널을 얹어서 만들었음.
영어, 다국어, typed-decisions 체크포인트 3개 전부 지원하고, 네이티브 토큰화, 모델 실행, 출력 포맷팅까지 다 됨. JEV 호환 엔드포인트가 있는 HTTP 서버도 포함했음. 추론할 때 파이썬이나 PyTorch 같은 거 깔 필요 전혀 없음.
**RTX PRO 6000 Blackwell(450W 제한)**에서 돌린 영어 모델 결과 몇 개 가져옴:
| Batch | Python BF16 | C++ BF16 | Python FP32 | C++ FP32 |
|---|---|---|---|---|
| 1 | 149 | 366 | 148 | 342 |
| 2 | 268 | 586 | 202 | 421 |
| 4 | 460 | 761 | 233 | 437 |
| 8 | 663 | 810 | 232 | 386 |
이건 선택지, 점수, 불리언 값이 포함된 250개 질문 코퍼스를 기준으로 측정한 **초당 질문 처리량(questions per second)**임. 각 정밀도마다 파이썬/C++ 실행 순서를 바꿔가며 측정했고, 모델 로딩이랑 JSON 전송 시간은 뺐음. README에 모델 3개 전체 결과 다 적어놨으니 확인해보셈.
최적화는 대부분 불필요한 변환이랑 복사 제거하고, 반올림 유지하면서 연산 합치고, 어텐션 메모리 접근 방식 개선하는 식으로 진행했음.
코드는 MIT 라이선스임. BF16 쓰려면 문서에 적힌 대로 CUDA 13.0/cuBLAS 13.1.0 빌드 프로필이 필요함.
Codex Astra로 구현함.

