# FPGA Üzerinde LLM Çıkarımı ve HLS

> LLM inference için FPGA kullanmak GPU'nun küçük bir kopyasını yapmak değildir. Quantization, memory bandwidth, pipeline, on-chip buffer ve HLS dönüşümleri birlikte tasarlandığında enerji/latency dengesi değişebilir.

- Author: Muhammet Ali Köker
- Language: tr
- Canonical: https://alikoker.com.tr/fpga-uzerinde-llm-cikarimi-ve-hls
- Published: 2024-04-29T12:00:00+03:00
- Modified: 2026-08-19T16:59:00+03:00
- Verified: 2026-08-19T16:59:00+03:00
- Type: article

Transformer inference'i FPGA'ya taşımak, CUDA kernel'ını VHDL'e çevirmek değildir.

Mekatronik, FPGA ve yapay zeka taraflarını aynı kariyer çizgisinde görmüş biri olarak bu alanı özellikle ilginç buluyorum. Çünkü burada algoritma ile donanım birbirinden ayrı optimize edilemiyor. Model boyutu, quantization, memory access ve pipeline yapısı sentez sonucunu doğrudan değiştiriyor.

2024 tarihli HLSTransform çalışması Llama 2 çıkarımını High-Level Synthesis ile FPGA üzerinde ele alıyor. 2026'ya gelindiğinde ternary ağırlıklar ve linear attention gibi tekniklerle algoritma-donanım eş tasarımı daha da belirgin hale geldi.

## Asıl darboğaz MAC sayısı değildir

Transformer katmanlarında matrix multiplication yoğun olsa da LLM inference çoğu durumda memory bandwidth tarafından sınırlandırılabilir.

Ağırlıklar her token için dış bellekten tekrar tekrar taşınıyorsa FPGA üzerindeki DSP bloklarının teorik hesap gücü kullanılmaz.

Bu yüzden accelerator tasarımında ilk soru "Kaç TOPS üretirim?" değil, "Bir token için kaç byte'ı hangi bellek katmanından taşımam gerekiyor?" olmalıdır.

Aritmetik yoğunluk bu hesabın merkezindedir.

## HLS ne kazandırır?

High-Level Synthesis, C/C++ benzeri yüksek seviyeli tanımdan RTL üretmeyi amaçlar.

Avantajı prototipleme hızıdır. Döngüler, array erişimleri ve arithmetic kernel'lar doğrudan HLS aracına verilebilir.

Fakat yazılım için iyi C kodu, donanım için iyi HLS kodu değildir.

Örneğin sıradan bir nested loop synthesis sonrasında tek bir işlem birimi üzerinde seri çalışabilir. Performans için loop pipelining, unrolling, array partitioning, memory banking, fixed-width type seçimi ve dataflow gibi dönüşümler gerekir.

Bu yüzden HLS "RTL bilmeden FPGA" değil, başka bir optimizasyon katmanıdır.

## Quantization donanım mimarisini değiştirir

FP32 model ile INT8 model arasında yalnız bellek miktarı farkı yoktur.

Daha düşük bit genişliği daha fazla değerin BRAM/URAM'a sığmasını, aynı DSP kaynağında daha fazla paralel işlem yapılmasını, memory bandwidth ihtiyacının düşmesini ve routing yükünün değişmesini sağlayabilir.

HLSTransform W8A8 yaklaşımı kullanıyor. Sonraki çalışmalar ternary ağırlıklara kadar iniyor.

Ternary değerler `-1, 0, +1` gibi küçük sembol kümesine indirildiğinde bazı multiplication işlemleri toplama, çıkarma ve mask logic ile gerçekleştirilebilir. Bu, model tasarımının doğrudan hardware resource kullanımını değiştirdiği noktadır.

## Pipeline latency ile throughput aynı değil

FPGA tasarımında pipeline doldurulduktan sonra her cycle yeni veri alınabilmesi yüksek throughput sağlar. Ancak ilk sonucun çıkması için pipeline derinliği kadar latency ödenir.

LLM inference'te prefill ve decode fazları farklı özellik taşır.

Prefill büyük matrix operasyonlarıyla paralelliğe daha uygundur. Decode ise token başına küçük batch ve ardışık dependency nedeniyle memory latency'ye daha hassas olabilir.

Bu nedenle accelerator'ın "token/s" değeri tek başına yetmez. Time to first token, prefill throughput, decode token/s, batch size, context length ve joule/token ayrılmalıdır.

Özellikle edge cihazda enerji başına token önemli olabilir.

## KV cache yeni bir bellek problemi

Context büyüdükçe key-value cache büyür. GPU'da da FPGA'da da bu alan memory capacity ve bandwidth üzerinde baskı oluşturur.

2026'daki araştırmaların bir kısmı yalnız ağırlıkları değil KV cache'i de quantize etmeye yöneliyor.

FPGA açısından on-chip memory sınırlı olduğu için cache tamamen chip içinde tutulamayabilir. External DDR/HBM erişimi tekrar kritik hale gelir.

Modeli küçültmek accelerator sorununu çözmez; çalışma setinin tamamını düşünmek gerekir.

## Donanımın deterministik tarafı

FPGA'nın benim için GPU'ya göre ilginç özelliklerinden biri, doğru tasarımda execution pipeline'ının daha deterministik kurulabilmesidir.

GPU scheduler, shared resource ve büyük software stack yüksek throughput sağlar ama jitter üretebilir. FPGA'da özel data path ile daha dar fakat daha öngörülebilir bir hat tasarlanabilir.

Bu özellik gerçek zamanlı edge inference için değerlidir.

Yine de determinism otomatik değildir. External memory arbitration, PCIe/AXI transferi ve host interaction latency üretir.

"FPGA deterministic" cümlesi ancak end-to-end ölçümle anlam kazanır.

## HLS optimizasyonu design-space problemidir

Unroll factor'ı artırmak latency'yi azaltabilir ama DSP ve routing kullanımını büyütür. Array partitioning bandwidth'i artırır ama BRAM kullanımını ve place-route zorluğunu yükseltebilir.

Bir tasarım synthesis'te iyi görünürken timing closure aşamasında başarısız olabilir.

Dolayısıyla HLS için objective tek boyutlu değildir. Latency, resource, power, timing closure ve accuracy birlikte düşünülmelidir.

Bu da otomatik design-space exploration çalışmalarının neden önemli olduğunu açıklıyor.

## FPGA GPU'nun yerine geçer mi?

Genel amaçlı cevap hayır.

GPU çok geniş model ve operator desteği, güçlü software ecosystem ve yüksek absolute performance sağlar. FPGA ise belirli workload için özelleştirme, enerji verimliliği ve deterministic data path avantajı sunabilir.

Doğru kullanım alanı genellikle modelin nispeten sabit olduğu, latency veya enerjinin kritik olduğu, quantization'ın kabul edilebildiği ve operator set'inin FPGA'ya uygun olduğu senaryodur.

LLM'ler hızla değişirken bitstream ve HLS tasarımını sürekli güncellemek de engineering cost'tur.

## 2024'ten 2026'ya değişen yön

HLSTransform transformer inference'in HLS ile mümkün olduğunu gösteren erken açık çalışmalardan biri. 2026'daki ELiTeFormer ise linear attention ve ternary projection'ı doğrudan FPGA hedefiyle birlikte tasarlıyor.

Bu geçiş önemli: önce var olan modeli donanıma taşımaya çalışıyorduk; şimdi model mimarisi donanımın kısıtlarıyla birlikte tasarlanıyor.

Bence FPGA tarafındaki esas gelecek burada. En hızlı yazılım implementasyonunu donanıma kopyalamak yerine, algoritmayı veri yolu ve bellek hiyerarşisine göre yeniden kurmak.

## Kaynakça

- [HLSTransform: Energy-Efficient Llama 2 Inference on FPGAs Via High Level Synthesis](https://arxiv.org/abs/2405.00738)
- [HLSTransform Source Code](https://github.com/HLSTransform/submission)
- [ELiTeFormer: An Efficient Transformer for FPGAs](https://arxiv.org/abs/2607.03652)

## Bu Çalışmaya Atıf

Köker, M. A. (2024). FPGA Üzerinde LLM Çıkarımı ve HLS. alikoker.com.tr. https://alikoker.com.tr/fpga-uzerinde-llm-cikarimi-ve-hls

- BibTeX: https://alikoker.com.tr/fpga-uzerinde-llm-cikarimi-ve-hls.bib
- RIS: https://alikoker.com.tr/fpga-uzerinde-llm-cikarimi-ve-hls.ris
- CSL-JSON: https://alikoker.com.tr/fpga-uzerinde-llm-cikarimi-ve-hls.csl.json
