오픈소스 Tesseract 프로젝트가 회로를 재구성할 수 있는 FPGA 가속 카드용 설계와 언어 모델 실행 소프트웨어를 공개했다. 언어 모델 개발자는 알베오 U200 카드에서 추론을 실행하고, 후보 토큰을 먼저 만든 뒤 묶어서 검사하는 방식으로 생성 속도를 높일 수 있다.

1. 하드웨어와 펌웨어를 나눠 공개

11월 10일 공개된 Tesseract Core 1.0.0은 카드에 올리는 회로 이미지와 설계 코드를 담았다. 함께 나온 Tesseract Basis 1.1.0은 펌웨어(카드 동작을 제어하는 저수준 소프트웨어)의 개발 도구와 호스트 소프트웨어(카드 밖에서 명령을 보내는 컴퓨터용 프로그램)를 제공한다. 회로 이미지와 실행 소프트웨어를 나눠 배포하는 구성이다.

Basis 1.1.0의 주요 수정은 카드 메모리 용량을 실제로 측정하도록 한 점이다. U200은 채널마다 8GiB인데 카드 셸은 16GB로 보고해, 기존에는 채널 용량을 넘는 주소가 처음으로 되돌아가 모델 가중치를 덮어쓸 수 있었다. 새 버전은 카드를 열 때 실제 용량을 확인해 힙, 프로그램이 동적으로 쓰는 메모리 영역 배치와 범위 검사에 반영하고, 메모리에 맞지 않는 모델은 WEIGHT heap full 오류로 멈춘다.

실행 경로는 llama.cpp와 연결된다. 연결 소프트웨어가 지원 연산을 카드로 보내고 나머지는 CPU에서 처리한다. 전체 모드에서는 KV 캐시(이전 토큰의 계산 결과를 저장하는 공간)와 어텐션(입력의 어느 부분을 참고할지 계산하는 과정)까지 카드에서 처리해 생성 토큰마다 한 번씩 작업을 요청한다.

2. 빌드와 카드 실행

시작 안내는 하위 모듈(외부 저장소를 함께 포함하는 구성요소)을 받고 패치(원본 코드에 적용하는 변경분)를 적용한 뒤 제어 코어용 툴체인(빌드와 컴파일에 쓰는 도구 묶음)을 설치하고 CMake로 빌드하는 순서를 제시한다. 카드 실행에는 XRT 2.18.179가 필요하다. 호스트는 장치를 열 때 회로 이미지와 별도로 빌드한 펌웨어 파일을 불러온다.

기본 추론을 준비한 뒤에는 전용 측정 도구로 다중 토큰 예측을 시험한다. 다음은 성능 문서의 실행 예시로, 대상 모델과 초안 파일, 프롬프트 파일을 지정해 후보 수에 따른 속도를 측정한다.

tsr-mtp -m TARGET.gguf [-md MTP.gguf] --spec-type draft-mtp --mtp-mode all --mtp-k-list 1,2,3,4 \
  --mtp-device xrt --mtp-prompts PROMPTS.txt -n 128 -c 2048 -t 8

설치 뒤에는 자가진단으로 장치를 점검하고, 모델 검증 도구로 CPU 출력과 비교하는 절차를 따를 수 있다.

3. U200에서 측정한 llama.cpp 속도

프로젝트 발표 기준, 아래 결과는 U200 한 장에서 전체 모드로 측정했다. 프롬프트 처리와 생성 속도는 각각 세 번 실행한 평균과 표준편차, 측정값이 평균에서 벗어난 정도를 나타내는 수치이며, 전력은 생성 중 카드 자체의 평균 소비 전력이다. 아래 두 표는 Basis 1.1.0이 아닌 Basis 1.0.0 펌웨어로 측정한 결과다.

표: U200 한 장의 모델별 처리 속도

조건: 알베오 U200 1장, Ryzen 7 9700X, 호스트 스레드 8개, 코어 200MHz, 전체 모드, Q8_0 KV 캐시, 플래시 어텐션, 어텐션 계산에 쓰는 메모리를 줄이는 기법, 프롬프트 512토큰·처리 묶음 512토큰·생성 64토큰, 3회 반복, Basis 1.0.0

U200에서 측정한 llama.cpp 속도
모델양자화, 숫자 정밀도를 낮춰 모델을 가볍게 하는 방식프롬프트(토큰/초)생성(토큰/초)카드 전력(W)
Qwen3.8 27BQ8_05.079 ± 0.0011.587 ± 0.00155.9
Qwen3.5 9BQ8_016.617 ± 0.0044.992 ± 0.00655.3
Gemma 4 31BQ4_K_M9.294 ± 0.0032.442 ± 0.00158.6
Gemma 4 26B-A4BQ8_020.942 ± 0.02010.178 ± 0.01355.8
Gemma 4 12BQ8_015.538 ± 0.0113.743 ± 0.00157.7
Gemma 4 E4BQ8_039.399 ± 0.0229.034 ± 0.01255.4
Gemma 4 E2BQ8_075.959 ± 0.09117.442 ± 0.00754.9

같은 카드 설정에서도 모델별 생성 속도 차이가 크다. 프로젝트는 별도 채팅 실행에서 얻은 카드 사이클을 토큰당 시간과 대조해, 카드 실행 시간이 98~99%를 차지한다고 보고했다. 이 설정에서는 호스트 처리보다 카드에서 쓰는 시간이 속도를 좌우한다.

카드는 한 번에 한 프로세스만 사용할 수 있다. 모델과 양자화가 달라 속도 차이를 모델 크기만의 효과로 볼 수는 없다.

4. 초안 토큰 검증의 이득과 비용

다중 토큰 예측 지원은 앞서 같은 날 나온 Basis 1.0.0에 포함됐다.

다중 토큰 예측은 답을 한 토큰씩 확정하는 대신 후보를 먼저 여러 개 만든 뒤 묶어서 검사한다. 프로젝트는 측정한 세 모델의 각 후보 수 설정에서 일반 탐욕 디코딩, 매 단계 가장 가능성 높은 토큰을 고르는 생성 방식과 같은 출력이 나왔다고 보고했다. 일반 생성 기준선, 성능 비교를 위한 기본 측정값도 같은 프로세스와 프롬프트에서 측정했다.

표: 일반 생성과 다중 토큰 예측 비교

조건: 알베오 U200 1장, Ryzen 7 9700X, 호스트 스레드 8개, 전체 모드, Q8_0 KV 캐시, 플래시 어텐션, 컨텍스트 길이 2048토큰, 채팅 프롬프트 3개에서 각 128토큰 탐욕 생성, 후보 수별 1회 실행, Basis 1.0.0

같은 프롬프트에서 일반 생성과 초안 검증의 속도Qwen3.8 27B: 일반 생성(토큰/초) 2.19, 다중 토큰 예측(토큰/초) 3.59; Qwen3.8 2B: 일반 생성(토큰/초) 23.06, 다중 토큰 예측(토큰/초) 25.45; Gemma 4 26B-A4B: 일반 생성(토큰/초) 10.15, 다중 토큰 예측(토큰/초) 11.77일반 생성(토큰/초)다중 토큰 예측(토큰/초)Qwen3.8 27B2.193.59Qwen3.8 2B23.0625.45Gemma 4 26B-A4B10.1511.77
같은 프롬프트에서 일반 생성과 초안 검증의 속도
초안 토큰 검증의 이득과 비용
모델대상/초안 양자화최적 후보 수일반 생성(토큰/초)다중 토큰 예측(토큰/초)
Qwen3.8 27BQ4_K_M / Q8_0 (별도 파일)32.193.59
Qwen3.8 2BQ4_K_M / Q4_K_M (같은 파일)123.0625.45
Gemma 4 26B-A4BQ8_0 / Q8_0 (별도 파일)110.1511.77

프로젝트 발표 기준, 27B 모델은 후보 세 개에서 1.64배 빨라졌다. 나머지 두 모델은 후보 한 개가 가장 빨랐고, 속도 향상은 각각 1.10배와 1.16배였다. 최적 설정에서 단계당 수용 후보 수는 Qwen3.8 27B가 2.09개, Qwen3.8 2B와 Gemma 4 26B-A4B가 각각 0.81개였다. 후보를 많이 제안하는 것보다 실제로 받아들여지는 비율이 중요하다는 결과다.

이익은 후보 검사를 묶어 생성 시간을 줄이는 데 있다. 대가로 초안 생성과 검증 작업이 더해지고, 모델에 따라 별도 초안 가중치 파일도 준비해야 한다. 문서는 최적 후보 수를 넘으면 검증 시간이 길어져 이득을 깎으며, 2B 모델은 후보 네 개에서 일반 생성보다 느려졌다고 설명했다.

이번 릴리스의 실용적 가치는 U200용 추론 경로와 검증 도구를 함께 제공하고, 모델별로 초안 후보 수를 조절할 근거를 제시한 데 있다.