llama.cpp 프로젝트는 제어 토큰을 통해 토큰별로 선택되는 N개의 내장 LoRA 어댑터를 특징으로 하는 밀집 모델 변형인 Granite-Switch 아키텍처에 대한 지원을 도입했습니다. 이 구현은 어댑터 인덱스를 해결하기 위해 이전의 개념 증명용 전역 고정 인덱스를 그래프 내 인과적 "라우터" 주의 메커니즘으로 대체합니다.

  • 새로운 라우터는 그래프 내에서 어댑터 인덱스를 복원하기 위해 단일 헤드 인과 주의 레이어를 사용하며, 여러 시퀀스가 이전에 어댑터 상태를 서로 누출시켰던 동시성 문제를 해결합니다.
  • 라우터 키와 값을 시퀀스별 KV 캐시에 저장함으로써 전역 상태 관리 없이도 동시 요청이 이제 격리됩니다.
  • 이 아키텍처는 중간 시퀀스 전환을 지원하여 단일 시퀀스 내에서 답변 가능성이나 쿼리 재작성과 같은 특정 작업에 대해 서로 다른 어댑터를 활성화할 수 있습니다.
  • 알려진 제한 사항 중 하나는 라우터 이득이 평평하고 최근성 편향이 부족하기 때문에 한 번 어댑터가 시퀀스 내에서 발동하면 시퀀스가 끝날 때까지 활성화된 상태로 유지된다는 것입니다.

이 변경은 모델을 다시 로드하지 않고도 동적으로 전용 어댑터 간을 전환하면서 동시 배치 요청에 대한 격리를 유지함으로써 CPU에서 효율적인 다중 작업 추론을 가능하게 합니다.