저가 eBay 채굴용 하드웨어에서 9B/27B INT4 모델을 위한 Qwen3.5 아키텍처 FPGA 패브릭 구현
원문 제목 — Qwen3.5 arch implementation in FPGA fabric for 9B/27B INT4 models on relatively cheap eBay mining hardware
📄 전문 번역
FPGA에서 LLM 추론을 시험해 보고 싶었지만 9B~27B 규모의 최상위급 모델이 없어 뚜렷한 계기가 없었다는 것이 출발점이었다. Qwen 3.8이 공개되면서 해당 크기에서 보여주는 성능에 깊은 인상을 받았고, 저자는 모델을 담을 수 있는 저가 FPGA를 찾기 시작해 8GB HBM2와 약 400GB/s 대역폭을 갖춘 SQRL FK33(280달러)을 발견했다. 그 전에도 소형 AXU3EG FPGA 개발 보드에서 llama.c 추론 작업을 진행한 경험이 있으며, 이번 구현은 주로 Opus 4.8(CC)을 활용해 아키텍처 조언만 받는 방식으로 이뤄졌다. FK33에서는 75MHz에서 Qwen 3.5 9B를 2토큰/s로 구동할 수 있었으며, 더 높은 클럭에는 추가 RTL 최적화와 코어 전압 상향이 필요하다. Qwen 구현에는 Fable, Opus 5, Opus 5.5, Kimi K3를 사용했고, FK33의 가능성이 확인되자 프리필과 생성 성능을 더 끌어올릴 수 있는 SQRL Jungle Cat 중고 채굴용 FPGA(375달러, 8 GTY 레인 상호연결과 이더넷 비트스트림 로드를 갖춘 FK33 두 장 분량)를 구매하기로 했다. 다만 Jungle Cat Lite 보드는 PCB 레진 작업을 하지 않는 한 가중치를 빠르게 적재할 방법이 없고 GTY 레인용 클럭 생성 회로가 빠져 있는데, 이는 납땜으로 쉽게 해결할 수 있는 수준이다.
저자는 4장의 XCVU35P(32GB HBM2)로 구성된 이상적인 FPGA 추론 엔진을 목표로 작업 중이며, 이를 위해서는 커스텀 캐리어 보드가 필요하다. 측정된 결과로는 Qwen3.5-9B INT4를 2장의 FK33에서 75MHz로 구동했을 때(파이프라인 분할, 호스트가 카드 간 잔차를 전달) 프리필은 256토큰 프롬프트 기준 약 6토큰/s, 2.3k 토큰 프롬프트 기준 약 5.5토큰/s였고, 생성은 초반에 약 3.2토큰/s, 2~3k 컨텍스트에서 약 2.4토큰/s를 기록했다. 출력은 llama.cpp와 레이어 단위로 대조해 검증했다.
측정된 9B의 연산별 프로파일을 바탕으로 모델링한 Qwen3.8-27B INT4 추정치(아직 실제 구동 전)는 다음과 같다. FK33 설계를 그대로 75MHz로 구동하는 Jungle Cat 한 세트(2x VU35P)에서는 프리필 약 2토큰/s, 짧은 컨텍스트 생성 약 1.1토큰/s, 16k에서 약 0.5토큰/s가 예상된다. 같은 두 다이에 RTL을 대형 다이에 맞게 조정해도 75MHz에서는 프리필 약 6토큰/s, 생성 약 3토큰/s(두 다이 텐서 병렬 시 약 5.5토큰/s), 16k에서 약 1.1토큰/s이다. 200MHz로 올리면(클럭에 비례해 선형 확장) 프리필 약 16토큰/s, 생성 약 8토큰/s(텐서 병렬 시 약 15토큰/s), 16k에서 약 3토큰/s이며, 4장의 VU35P에 4방향 텐서 병렬을 적용해 200MHz로 구동하면 짧은 컨텍스트에서 프리필과 생성 모두 약 25토큰/s, 16k에서 약 10토큰/s, 전체 262k 컨텍스트에서 약 1토큰/s로 추정된다.
27B의 KV 캐시가 14.5GB 가중치 옆에 더 이상 들어가지 못해 두 다이로는 약 45k 컨텍스트가 한계이며, 전체 262k 컨텍스트에는 네 개의 다이가 필요하다. 한편 저자는 예전에 BC-250 두 장을 각각 60달러와 75달러에 구매해 가격 대비 성능이 놀라운 구매였다고 밝혔으며, BC-250이 Jungle Cat을 프로그래밍하는 사진도 함께 공유했다. 또한 tinytapeout처럼 RTL을 ASIC으로 만들어 클럭을 높이고 전력을 낮추는 일을 늘 해보고 싶었다며, Opus 5.5에게 TSMC 2023년 N3 노드 기준 추정을 요청한 결과 그해 HBM3 여섯 스택(4.9TB/s)을 얹어 2GHz로 동작하는 ASIC으로 만들면 27B를 짧은 컨텍스트에서 약 294토큰/s, 16k에서 106토큰/s, 262k에서 10토큰/s로 구동할 수 있고 전력은 약 125~340W로 추산됐다.
이 프로젝트는 Reddit 사용자 I_am_purrfect가 공유한 것으로, 지금까지는 주로 Jungle Cat 보드에 가중치를 적재하는 방법을 찾는 데 집중됐으며 제안을 환영한다고 밝혔다. 소스 코드는 llm.vhdl 저장소로 MIT 라이선스로 GitHub에 공개돼 있다.
💬 주요 댓글 번역 (5)
🔍 루키 분석
중고 채굴용 FPGA를 활용해 Qwen 계열 모델 추론을 FPGA 패브릭에 직접 구현한 프로젝트로, 280달러짜리 SQRL FK33에서 Qwen 3.5 9B를 75MHz에서 초당 2토큰으로 구동했고 두 장을 파이프라인으로 묶자 생성 속도가 초당 3.2토큰에 달했다. 측정된 9B의 연산별 프로파일로 Qwen3.8-27B INT4 성능을 추정한 결과, 4장의 XCVU35P에 4방향 텐서 병렬과 200MHz를 적용하면 짧은 컨텍스트에서 프리필과 생성 모두 초당 약 25토큰에 이를 것으로 전망했다. 댓글에서는 컴퓨트 타일을 로컬 HBM 의사 채널에 고정하라는 조언과 함께 GTY 기준 클럭용 발진기 실장, JTAG 대신 QSPI나 GTY 링크를 통한 가중치 적재 방안 등이 제시됐다.
— 루키 · glm-5.3-flash:cloud
정말 미친 작업이다. 이런 것이야말로 취미를 한 단계 끌어올리는 일이다. 훌륭한 결과다!
아직 하지 않았다면 각 컴퓨트 타일을 자체 로컬 HBM 의사 채널에 고정할 가치가 있다. VU35P의 내장 AXI 스위치는 어디로든 라우팅할 수 있지만 스택을 가로지르는 측면 홉이 유효 대역폭을 크게 잠식한다. 또한 75MHz는 HBM 컨트롤러 클럭보다 훨씬 낮아 400GB/s에 근접해 포화시키려면 유닛당 여러 개의 와이드 포트가 필요하다.
감사하다. 75MHz는 초기 목표였을 뿐이며 메모리 대역폭을 더 활용하기 위해 타이밍 클로징을 200MHz까지 시도 중이다. 다만 VU33P의 경우에는 연산(패브릭)이 병목이고, 35P의 경우 가중치를 어떻게 전송할지 아직 고민 중이다. Jungle Cat Lite 보드는 지금까지 찾은 바로는 고속 적재 인터페이스가 없다. 우선 35P 간 GTY 페어를 동작시키려 하는데 클럭이 없지만 PCB에 발진기와 팬아웃 버퍼 풋프린트가 있다.
GTY 기준 클럭은 전용 mgtrefclk 핀에서 공급되고 지터 사양을 충족해야 하므로 패브릭 클럭으로는 안 되며, 발진기 풋프린트(156.25 또는 161.13MHz)에 부품을 실장하고 팬아웃 버퍼를 더해야 한다. 가중치 적재는 JTAG이 초당 수 MB에 불과하므로 QSPI나 SD 기반 적재가 대체로 더 낫다.
GTY 기준 클럭은 mgtrefclk에 들어가는 실제 차동 클럭이어야 하며 패브릭에서 구동할 수 없으므로 발진기 풋프린트(Si5338 또는 156.25MHz SiT9501)를 실장해야 한다. 가중치는 JTAG이 초당 수 MB가 한계라 링크가 열린 후 VU33P에서 GTY를 통해 35P로 밀어 넣는 편이 훨씬 수고가 덜다.