SpecPilot: 에이전트 루프를 사용하여 각 배포 환경에 맞는 추측 디코딩 알고리즘 및 시스템 최적화를 자율적으로 발견 (Autonomous Algorithm Discovery and Systems Optimization for Speculative Decoding)

병렬 초안 모델은 한 번의 순방향 패스로 토큰 블록 전체를 생성할 수 있지만, 저자들은 공식 배포된 시스템이 이 가속 잠재력을 충분히 활용하지 못한다고 주장합니다. 단일 요청 시에는 각 단계에서 소수의 토큰만 허용하면서도 전체 대상 가중치를 한 번 읽어야 하고, 배치 처리 시에는 요청별 검증 오버헤드로 인해 가속비가 약 절반으로 줄어듭니다. 또한 최적의 접근 방식은 서비스 시나리오, 초안 모델, 대상 모델 및 GPU에 따라 달라집니다. SpecPilot은 자동 최적화 루프입니다. 각 라운드에서 비용 모델을 사용하여 현재 시스템이 상한선과 가장 큰 격차를 보이는 부분을 식별하고, 여러 에이전트가 병렬로 방향을 탐색하며 성공적인 변경 사항을 통합하며, 커널 하위 에이전트는 메모리 대역폭 상한선과 가장 거리가 먼 커널을 전문적으로 조정합니다. 토큰 강제(token forcing)를 통해 각 출력 토큰을 원본과 하나씩 비교하여 '보상 조작(reward hacking)'을 방지하고, 구조화된 메모리를 통해 검증된 메커니즘을 다음 라운드와 새로운 배포 환경으로 전달합니다. 저장소에는 6가지 배포 환경별로 발견된 추론 엔진(축소된 SGLang 기반)이 공개되어 있으며, 시작, 속도 측정 및 검증 스크립트가 포함되어 있습니다.

병렬 초안 모델은 한 번의 순방향 패스로 토큰 블록 전체를 생성할 수 있지만, 저자들은 공식 배포된 시스템이 이 가속 잠재력을 충분히 활용하지 못한다고 주장합니다. 단일 요청 시에는 각 단계에서 소수의 토큰만 허용하면서도 전체 대상 가중치를 한 번 읽어야 하고, 배치 처리 시에는 요청별 검증 오버헤드로 인해 가속비가 약 절반으로 줄어듭니다. 또한 최적의 접근 방식은 서비스 시나리오, 초안 모델, 대상 모델 및 GPU에 따라 달라집니다. SpecPilot은 자동 최적화 루프입니다. 각 라운드에서 비용 모델을 사용하여 현재 시스템이 상한선과 가장 큰 격차를 보이는 부분을 식별하고, 여러 에이전트가 병렬로 방향을 탐색하며 성공적인 변경 사항을 통합하며, 커널 하위 에이전트는 메모리 대역폭 상한선과 가장 거리가 먼 커널을 전문적으로 조정합니다. 토큰 강제(token forcing)를 통해 각 출력 토큰을 원본과 하나씩 비교하여 '보상 조작(reward hacking)'을 방지하고, 구조화된 메모리를 통해 검증된 메커니즘을 다음 라운드와 새로운 배포 환경으로 전달합니다. 저장소에는 6가지 배포 환경별로 발견된 추론 엔진(축소된 SGLang 기반)이 공개되어 있으며, 시작, 속도 측정 및 검증 스크립트가 포함되어 있습니다.

좋아요 16 · 코드 스타 수 82

이유

  • 저자들은 학습 없이 품질 손실 없이, 단일 요청 시 원본 대비 자기회귀(autoregressive) 가속비가 4.46배에서 10.87배로, 배치 처리 시에는 1.94배에서 3.93배로 향상되었다고 주장합니다. README 표에 따르면 H100에서 Qwen3.8-27B + DFlash2 구성의 경우 가속비가 3.95배에서 8.86배로 증가하며, 새로운 클론에서 네 가지 H100 설정을 다시 실행한 가속비와 신뢰 구간이 첨부되어 있습니다.
  • 발견된 메커니즘은 개별적으로 참고할 수 있습니다. 손실 없는 12비트 가중치 형식 W12(BF16을 세 개의 4비트 평면으로 분할하고 GEMM 레지스터에서 비트 단위로 복원하며, 저자들은 이를 단독으로 사용해도 8–30B 밀집 모델의 BF16 디코딩이 1.15–1.26배 빨라진다고 주장함), 2단계 검증, 하이브리드 루프 구조 대상 모델을 위한 트리 검증, 그리고 세 가지 배치 처리 메커니즘이 포함됩니다.
  • 재현 가능: 코드는 Apache-2.0 라이선스이며, 각 설정은 단일 GPU만 사용합니다. 스크립트는 환경 설치, 고정 버전 체크포인트 다운로드, OpenAI 호환 서비스 시작 및 비교 속도 측정을 담당합니다. Hugging Face 게시 당일 좋아요 16개, 코드 스타 수 82개(관심도만 나타냄).

사용법

  • 환경 설정: bash scripts/setup_env.sh (Python 3.11, torch 2.13 + CUDA 13.0, 의존성 고정); 특정 설정의 체크포인트 다운로드: bash scripts/download_models.sh h100_c1_qwen38-27b_dflash2 (설정 이름은 settings/ 디렉토리 내의 폴더 이름과 동일).
  • 서비스 시작: bash scripts/serve.sh h100_c1_qwen38-27b_dflash2 final 0 0번 GPU의 30000 포트에서 SpecPilot 엔진을 시작합니다. final을 stock / ar로 변경하면 원본 및 자기회귀 대조군을 시작할 수 있습니다. 인터페이스는 SGLang HTTP 및 OpenAI와 호환됩니다.
  • 속도 측정: bash scripts/bench.sh <설정> final-1 0를 실행한 후, scripts/compare.py speed로 가속비를 비교하고, scripts/score.py로 gsm8k / humaneval / math500 / mbpp 점수를 매깁니다. 각 엔진은 첫 번째 시작 시 커널을 컴파일하므로, 타이밍 측정 전에 한 번 공회전(warm-up) 실행을 수행해야 합니다.

리스크

  • 하드웨어 제한: H100 80GB 및 RTX PRO 6000 Blackwell 96GB에서만 테스트되었으며, RTX PRO 6000용 커널은 sm_120a용으로만 컴파일됩니다. torch 2.13 + CUDA 13.0은 R580 드라이버가 필요하며, 구형 드라이버는 전방 호환성 라이브러리에 의존해야 합니다.
  • 6가지 고정 조합(Qwen3.8-27B / Muse-Glimmer-30B with DFlash2 / DSpark)만 커버됩니다. 저장소에는 발견된 엔진만 포함되어 있으며, 에이전트 최적화 루프 자체를 시작하는 방법은 확인할 수 없어 모델이나 초안 모델을 변경할 경우 직접 재사용할 수 없습니다.
  • '손실 없음'은 탐욕 디코딩(greedy decoding) 시 모든 토큰이 대상 모델에 의해 결정됨을 의미합니다. README에는 출력 결과가 자기회귀 방식과 비트 단위로 동일하지는 않다고 명시되어 있습니다(배치 검증의 계산 순서가 다르기 때문에 근소한 차이로 결과가 뒤집힐 수 있음). 첨부된 점수는 무결성 검사용으로만 사용되며, 모든 가속 수치는 저자들이 보고한 값입니다.

편집: 이미 단일 GPU에서 Qwen3.8-27B와 DFlash2 / DSpark를 사용하여 서비스를 운영 중인 팀에 적합합니다. 추론 최적화에 관심 있는 독자는 W12 가중치 형식과 2단계 검증 부분을 중점적으로 살펴볼 것을 권장합니다.

열기 · 코드 · Hugging Face 논문 페이지

Hugging Face Daily Papers

최신 AI 소식 보기