Kolmogorov-Arnold Networks로 FPGA에서 초고속 머신러닝 구현하기
Ultrafast machine learning on FPGAs via Kolmogorov-Arnold Networks
TL;DR Highlight
KAN 활성함수를 LUT로 바꿔 FPGA에서 나노초 추론과 마이크로초 미만 온라인 학습을 해냈다
Who Should Read
마이크로초·나노초 단위 지연이 필요한 실시간 추론 시스템에서 FPGA 가속을 고민하는 임베디드·하드웨어 개발자
Core Mechanics
- KAN은 LUT에 잘 맞는다
- KAN은 가중치 대신 간선마다 학습 가능한 1변수 함수(활성함수)를 둔다.
- 1변수 함수는 작은 룩업 테이블(LUT) 하나로 통째로 저장할 수 있다.
- 입력 범위가 [-1, 1] 같은 작은 구간이라 전체 범위를 다 덮는다.
- 다변수 LUT는 지수적으로 커진다
- 다변수 함수를 LUT로 만들면 항목 수가 입력 차원에 따라 지수적으로 늘어난다.
- KAN은 1변수 함수의 합이라 이 문제를 피하고 가지치기도 쉽다.
- 추론은 LUT 조회와 덧셈 트리로 끝난다
- 소프트웨어(PyTorch)에서 학습한 KAN을 고정해 FPGA에 올린다.
- 활성함수는 LUT로 병렬 계산하고 합은 덧셈 트리(n_in-1번의 쌍 덧셈)로 구한다.
- 기존 KAN-FPGA 구현 대비 2700배 빠르다고 한다.
- 온라인 학습은 B-spline 기저를 LUT에 넣는다
- 학습 중에는 계수가 계속 바뀌므로 활성함수 전체를 미리 저장할 수 없다.
- 그래서 B-spline 기저함수를 LUT에 저장하고 계수를 곱해 계산한다.
- 순전파·역전파·경사 업데이트가 모두 FPGA 안에서 돈다.
- B-spline의 국소성 덕에 연산이 가볍다
- 입력마다 G+S개 기저 중 S+1개만 0이 아니다.
- 하드웨어 로직이 G가 아니라 S+1에 비례해 늘어난다.
- 그리드 크기 G를 키워도 표현력만 늘고 자원은 거의 그대로다.
- B-spline 합이 1이라 고정소수점 학습이 안정적이다
- 기저함수의 합이 1이라 출력은 계수의 최솟값과 최댓값 사이에 머문다.
- 활성값과 기울기 범위를 입력과 무관하게 예측할 수 있어 양자화 범위를 잡기 쉽다.
- 온라인 학습은 5만 개 이상 파라미터까지 확장된다
- 순전파와 역전파를 마이크로초 미만 지연으로 수행한다.
- 저자들이 아는 한 이전에 gradient 기반 학습으로는 달성된 적이 없다고 한다.
Community Reactions
- GPU용 LLM 추론 가속에는 못 쓴다는 경험
- 3.28M 파라미터 모델로 초당 10만 토큰을 목표로 해 봤는데, 이것도 이 방식이 이득을 보기엔 한 자릿수 이상 크다는 경험이 있었다.
- 처리량보다 지연 시간에 초점이 맞춰진 접근 같다는 의견이다.
- 모델 크기 한계에 대한 반론
- 아주 작은 모델이나 아주 큰 FPGA만 쓸 수 있는 것 아니냐는 의견이 있었다.
- 마이크로초 미만 지연이 꼭 필요한 단순 ML 과제가 아니면 쓸 곳이 애매하다는 지적이다.
- FPGA 합성이 단순하지 않다는 지적
- 많은 FPGA의 LUT는 2입력이 아니라 6:3 구조이고 플립플롭·먹스도 들어 있다.
- 활성함수를 LUT로 옮기는 합성이 말처럼 쉽지 않을 수 있다는 의견이다.
- 활성함수 모양의 다양성 질문
- KAN 이득의 90%가 소수의 함수 형태에서 나오는 것 아니냐는 의견이 있었다.
- 입력 가중치 정밀도와 활성함수 정밀도를 축으로 스윕해 최적 지점을 찾자는 제안이다.
How to Apply
- pykan으로 KAN 먼저 돌려 보기
- 오늘 pykan을 설치해 작은 함수 근사 문제에 MLP와 KAN을 같은 파라미터 수로 비교하라.
- 학습된 활성함수를 그려 모양이 단순한지 확인하라.
- 지연 요구사항으로 FPGA 적합성 판단하기
- 서비스의 추론 지연 목표가 마이크로초 이하인지 먼저 확인하라.
- 배치 처리나 큰 모델이 필요한 워크로드는 GPU에 두고 이 방식은 제외하라.
- 학습된 KAN을 LUT로 양자화해 정확도 보기
- 활성함수를 입력 비트 수로 샘플링해 테이블로 만들고 비트 수별 정확도 손실을 측정하라.
- 가지치기로 0에 가까운 활성함수를 제거해 LUT 수 변화를 확인하라.
Try It
# Claude나 ChatGPT에 붙여넣기 (논문 방법의 간이 버전)
내 문제: {{문제 설명: 입력 차원, 출력, 요구 지연 시간}}
KAN(Kolmogorov-Arnold Network)을 FPGA에서 LUT로 구현한다고 가정하고 다음을 해줘.
1. 각 간선 활성함수를 b_i비트 입력, b_o비트 출력의 LUT로 바꿀 때 항목 수와 메모리 크기를 계산해줘 (b_i={{입력 비트}}, b_o={{출력 비트}}, 간선 수={{간선 수}}).
2. 같은 입력 차원의 다변수 LUT를 만들 때의 항목 수와 비교해줘.
3. 0에 가까운 활성함수를 가지치기하면 LUT와 덧셈기가 얼마나 줄어드는지 설명해줘.
4. 내 문제에 이 방식이 적합한지, 적합하지 않다면 이유를 알려줘.Terminology
관련 논문
DeepInfer: DeepSeek 모델용 고성능 대규모 추론 프레임워크 공개
DeepSeek가 프로덕션 추론 엔진 DeepInfer를 Apache-2.0으로 공개했다
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
DeepSeek, 미 연방 민간 기관에서 금지된다: DHS 명령과 개발자 반응
DHS 명령으로 DeepSeek이 미 연방 민간 기관 IT 시스템에서 금지됐다
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30
LLM 프록시를 직접 안 돌리면 무슨 일이 벌어지는지 어떻게 아나
자체 LLM 프록시를 세웠더니 키·모델·캐시 미스를 직접 볼 수 있다
DeepSeek V4.1 Flash 1017: 싼 가격에 1M 컨텍스트를 주는 에이전트용 모델
DeepSeek V4.1 Flash 1017은 입력 $0.05/M, 1M 컨텍스트의 에이전트용 모델
DeepSeek-V4.1-Flash-1017 공개: 더 짧게 생각하고 더 빠르게 일하는 에이전트용 모델
DeepSeek V4.1 Flash 마이너 업데이트로 코딩·에이전트 벤치 점수↑, 실행 시간·출력 길이↓
Related Resources
- https://aarushgupta.io/posts/kan-fpga/
- https://dx.doi.org/10.1145/3748173.3779202
- https://arxiv.org/abs/2602.02056
- https://github.com/KindXiaoming/pykan
- https://news.ycombinator.com/item?id=40219205
- https://arxiv.org/abs/2512.15742v2
- https://youtu.be/wgcSsJ69x1c?si=fiUl1YGTgaTt_bn9
- https://kindxiaoming.github.io/blog/