
APEX nima qiladi
APEX — to‘liq ochiq va verifikatsiyaga ustuvorlik beruvchi LLM inferensiya tile’idir. U real RTL’da bitta transformer dekoder qatlamini, jumladan attention, KV-cache siqilishi, onlayn softmax, RMSNorm, rotary position embedding, SwiGLU, residual ulanishlar va matritsa amallarini amalga oshiradi.
Loyiha edge-inferensiyadagi muhim to‘siqqa yo‘naltirilgan: suhbat uzaygani sari har bir yangi token tobora kattalashib borayotgan key-value cache’ni o‘qishi kerak. APEX KV kodekini bevosita apparat ma’lumotlar yo‘liga joylashtiradi. Kalitlar va qiymatlar hosil bo‘lganda siqiladi, siqilgan shaklda saqlanadi va attention ularni iste’mol qilayotgan paytda ochiladi.
APEX — to‘liq accelerator chipi emas, bitta inferensiya tile’idir. DRAM kontrollerlari, PCIe va chip ichidagi tarmoq repository’da belgilangan doiraga kirmaydi.
Tile FPGA qurilmasida Qwen2.5-0.5B bilan namoyish etilgan. Qwen2.5-7B tokenlari dasturiy verifikatsiyadan o‘tgan golden pipeline orqali o‘tkazilgan, biroq README 7B modeli silicon orqali ishga tushirilganini da’vo qilmaydi.
Asosiy xususiyatlar
- To‘liq dekoder qatlami ma’lumotlar yo‘li: RTL proyeksiyalar, attention, normalizatsiya, RoPE, feed-forward hisoblash, residual amallar va KV-cache bilan ishlashni qamrab oladi.
- Ma’lumotlar yo‘lida KV siqilishi: Kalitlar kanal bo‘yicha INT4 kvantlashdan, qiymatlar token bo‘yicha INT4 kvantlashdan foydalanadi; murakkab kanallar esa fp16 outlier yo‘lagidan foydalanishi mumkin.
- Moslashuvchan aniqlik: TIP qurilmasi token muhimligini kuzatadi va har bir hudud uchun KVQ8, KVQ4 yoki outlier’li KVQ4’ni tanlaydi.
- Umumiy matritsa dvigateli: INT8 sistolik MXE dekoder qatlamidagi matritsa vazifalari o‘rtasida vaqt bo‘yicha taqsimlanadi.
- Onlayn softmax: Skorlar kontekst uzunligiga teng buffer talab qilmaydigan, son jihatdan barqaror softmax amalga oshirilishi orqali oqimda qayta ishlanadi.
- Bitma-bit aniq verifikatsiya: RTL natijalari bajariladigan NumPy reference modellari bilan taqqoslanadi va hech qanday tafovutga yo‘l qo‘yilmaydi.
- Mutation-testdan o‘tgan testbench’lar: Verifikatsiya faqat ataylab kiritilgan RTL xatolari testlarning yiqilishiga sabab bo‘lgandagina mazmunli deb hisoblanadi.
- Simulyatsiyadan silicon’ga qayta ijro: FPGA registr-amal dasturlari bitma-bit differensial taqqoslash uchun Verilator twin’ida ham ishlaydi.
- Dalilning aniq yorliqlari: Natijalar yagona aralashtirilgan unumdorlik da’vosi o‘rniga o‘lchangan yoki prognoz qilingan sifatida tasniflanadi.
Arxitekturani tushunish
Decode bosqichi activation vektori bilan boshlanadi. RMSNorm kirishni tayyorlaydi, MXE esa query, key va value proyeksiyalarini hisoblaydi. RoPE KVQ dvigateli kalitlar va qiymatlarni saqlash uchun siqishidan oldin query va key’larni o‘zgartiradi.
Attention vaqtida keshlangan qiymatlar o‘qish yo‘lida ochiladi. MXE query-key ko‘paytmalarini hisoblaydi, ASU onlayn softmax’ni qo‘llaydi, boshqa MXE vazifasi esa ehtimollarni keshlangan qiymatlar bilan birlashtiradi. Chiqish proyeksiyasi, residual qo‘shish, yana bir normalizatsiya bosqichi va SwiGLU feed-forward yo‘li qatlamni yakunlaydi.
Asosiy RTL bloklari
- MXE: Qatlamning matritsa amallarida ishlatiladigan INT8 sistolik GEMM dvigateli.
- KVQ: KV-cache’ni siqish va ochish dvigateli.
- ASU: Onlayn softmax, RMSNorm, SiLU va SwiGLU.
- RoPE: Query va key’lar uchun rotary position embedding.
- TIP: Token muhimligini kuzatish va aniqlik darajasini tanlash.
- SEQ: Boshqaruv va holat registrlari fayli, vazifa dekoderi va qatlam yuritgichi.
- SEAM: Activation framing, chegara kvantlashi va scale uzatish.
- XBR: Ortiqcha host round trip’larisiz dvigatellar o‘rtasida marshrutlash.
- TOP:
apex_topkompozitsiya qatlami va integratsiya mantiqi.
Batafsil dizayn, qarorlar reyestri va modullar kelib chiqishi uchun ARCHITECTURE.md faylini o‘qing.
Host rejimi va walked rejimi
APEX ikki xil ijro yondashuvini qo‘llab-quvvatlaydi. Host rejimida host har bir apparat vazifasini alohida tuzadi va yuboradi. Bu rejim FPGA silicon’ida isbotlangan, biroq har bir vazifa host round trip’ini talab qiladi.
Walked rejimida host qatlamni bir marta ishga tushiradi. Tile ichidagi qatlam yuritgichi descriptor’larni oladi, dvigatellar ishini ketma-ket boshqaradi, oraliq tensorlarni XBR fabric orqali yo‘naltiradi va quantization scale’larini uzatadi. Walked qatlam simulyatsiyada bitma-bit aniq ishlaydi. README walked attention’ning FPGA’dagi bring-up jarayoni hali faol davom etayotganini bildiradi.
Host rejimi va walked rejimini bir xil unumdorlik konfiguratsiyalari deb qaramang. Host rejimi to‘g‘rilik va bring-up uchun foydali, walker esa har bir vazifa uchun yuzaga keladigan katta host xarajatini yo‘qotishga mo‘ljallangan.
O‘rnatish va lokal sozlash
Talablar
Hujjatlashtirilgan lokal verifikatsiya jarayoni uchun quyidagilarni o‘rnating:
- Python 3.11
- NumPy
- Verilator 5.x
- GNU Make
- Icarus Verilog, ixtiyoriy, o‘zaro tekshirish uchun
Buyruqlarni checkout qilingan APEX repository’ning ildiz katalogidan ishga tushiring. Boshlashdan oldin asosiy vositalarni tekshiring:
python3 --version
verilator --version
make --version
python3 -c "import numpy; print(numpy.__version__)"README paketlarni o‘rnatish buyrug‘i yoki Python muhitini pin qilish buyrug‘ini taqdim etmaydi. Evaluation yoki FPGA workflow’lari uchun qo‘shimcha bog‘liqliklarni aniqlashda repository’ning o‘z fayllari va quyi katalog hujjatlaridan foydalaning.
Avval dalillarni tekshiring
Uzoq davom etadigan workflow’ni ishga tushirishdan oldin loyiha dalillari va cheklovlarini ko‘rib chiqing:
- STATUS.md mashina tomonidan yaratilgan tekshiruv hisoblari va o‘lchangan natijalarni o‘z ichiga oladi.
- TRACEABILITY.md ma’lum bo‘shliqlarni qayd etadi va da’volarni ularni tasdiqlovchi dalillar bilan bog‘laydi.
- Asosiy jadval joriy etish va ishga tushirish holatini kuzatadi.
- Natijalar indeksi topshirilgan dalillarni kampaniyalar bo‘yicha tartiblaydi.
Golden-model testlarini ishga tushirish
Bajariladigan NumPy reference modellari va o‘zgarmas vektorlar bilan boshlang:
make -C golden testBu buyruq golden modellarni sinovdan o‘tkazadi va mahkamlangan siqishni hisoblash nazoratini ham o‘z ichiga oladi. Siqishni hisoblash muhim, chunki APEX faqat nominal INT4 yuklamasini emas, teglar, masshtablar, to‘ldirish va chet qiymatlarni saqlashni ham hisobga oladi.
RTL konveyerini tekshirish
To‘liq Attention-Tile smoke testini ishga tushirish
make -C verif/top/smoke smokeBu attention tile uchun hujjatlashtirilgan, boshidan oxirigacha bajariladigan smoke maqsadidir. Golden-model to‘plami muvaffaqiyatli o‘tgach, undan dastlabki integratsiya tekshiruvi sifatida foydalaning.
3-qavat verifikatsiyasini ishga tushirish
make -C verif/top l33-qavat maqsadi taqdim etilgan holatlar bo‘yicha haqiqiy birlashtirilgan tile’ni golden model bilan taqqoslaydi. APEX taxminiy raqamli tolerantlikni emas, bitma-bit bir xil natijalarni talab qiladi.
Layer Walker’ni tekshirish
make -C verif/seq_walkerBu walker to‘plami va uning mutatsiya nazoratlarini ishga tushiradi. Mutatsion testlash xatti-harakatni ataylab buzadi va verifikatsiya muhiti nuqsonni aniqlay olishini tekshiradi. Omon qolgan mutant muvaffaqiyatli dizayn natijasini emas, verifikatsiyadagi zaiflikni bildiradi.
Unumdorlik modelini tekshirish
Analitik modelning kalibrlash tekshiruvlarini quyidagicha ishga tushiring:
python3 perf/apex_perf_model.py --checkUnumdorlik modeli o‘lchangan kremniy unumdorligi emas, aniq prognoz qilingan ko‘rsatkichdir. Uning taxminlari va kalibrlash tayanchlari PERF_MODEL.md faylida hujjatlashtirilgan.
7B sinfidagi o‘qish tezligi va energiya ko‘rsatkichlari hali qurilmagan yoki to‘liq bo‘lmagan tizim komponentlariga, jumladan native W4 weight path, apparat orqali qatlamlarni yuritish va keng LPDDR integratsiyasiga bog‘liq. Ularni erishilgan apparat natijalari sifatida taqdim etmaslik kerak.
Modellarda KV siqilishini baholash
Repozitoriyda verifikatsiyadan o‘tgan KV kodeki uchun model aniqligi matritsalari mavjud. 0.5B va 1.5B matritsasini quyidagicha ishga tushiring:
bash eval/kv_eval/run_matrix.sh7B matritsasini quyidagicha ishga tushiring:
bash eval/kv_eval/run_matrix_7b.shBu buyruqlarni ishga tushirishdan oldin topshirilgan natija fayllari yonidagi baholash README fayllariga murojaat qiling. Nashr qilingan baholashda 10,042 ta hujjatdan iborat to‘liq HellaSwag validation to‘plamidan foydalaniladi. README kichik modellar uchun deyarli yo‘qotishsiz ishlashni, 7B dagi KVQ8 uchun to‘liq to‘plamda aniqlanadigan ta’sir yo‘qligini va 7B dagi KVQ4 uchun kichik o‘lchangan xarajatni bildiradi.
Tegishli dalillarni head-to-head natijalar va 7B baholash natijalari orqali ko‘rish mumkin.
Modelni golden konveyer orqali ishga tushirish
Loyiha prompt bajarilishini run_tinynpu.py --prompt orqali hujjatlashtiradi. Bu greedy Qwen tokenlarini fixed-point golden konveyer orqali uzatadi va qayta ijro etish uchun apparat shaklidagi topshiriqlarni yaratishi mumkin.
run_tinynpu.py --promptREADME yuqori darajadagi ko‘rsatmalarida modelni to‘liq sozlash yoki buyruq satri argumentlarining barchasini taqdim etmaydi. Shu sababli aniq qamrov, artefaktlar va qayta tiklash tafsilotlari uchun 7B token artefakti hujjatlariga amal qiling. Bu 7B oqimi dasturiy ta’minot orqali verifikatsiya qilinganini, FPGA tile’da 7B bajarilishi haqidagi da’vo emasligini yodda tuting.
AWS F2 namoyishini ishga tushirish
Talablar va xarajat
FPGA namoyishi us-west-2 hududidagi f2.6xlarge instansiyasiga kirish huquqiga ega AWS CLI hisob ma’lumotlarini talab qiladi. README to‘liq ishga tushirish uchun taxminan 30 daqiqa va qariyb ikki AQSh dollari kerak bo‘lishini baholaydi.
Hujjatlashtirilgan reference FPGA image’i agfi-030a812cd224b409d. U 15.625 MHz tile clock’li A2 retseptidan foydalanadi.
Verifikatsiya to‘plamini ishga tushirish
bash scripts/fpga/f2/run_walked_demo.sh agfi-030a812cd224b409dSkript FPGA instansiyasini yuklaydi, image’ni o‘rnatadi, hujjatlashtirilgan verifikatsiya to‘plami va walked chain’larni ishga tushiradi, verdict’ni chiqaradi hamda instansiyani to‘xtatadi.
Interaktiv prompt namoyishini boshlash
bash scripts/fpga/f2/run_chat_demo.shInteraktiv namoyish walked pipeline’dan foydalanadi. README The capital of France is jumlasini namuna prompt sifatida keltiradi va baholangan javob Paris. ekanini bildiradi.
DDR image’lari mlx-community/Qwen2.5-0.5B-Instruct-4bitdan hosil qilinadi. Jamoaning staging artefaktlari skriptlarda sozlangan. Tashqi foydalanuvchilar weight image’ni quyidagicha yaratishi kerak:
python3 scripts/fpga/f2/make_weight_image.pyHosil bo‘lgan image’ni jamoaning staging bucket’iga kirish bor deb hisoblamasdan, o‘zingiz boshqaradigan bucket uchun sozlang.
Apparat natijalarini to‘g‘ri talqin qilish
Repozitoriy 62.5 MHz chastotadagi A0 image’da sekundiga 0.56 token va 15.625 MHz chastotadagi A2 reference image’da sekundiga 0.25 token o‘lchangan throughput’ni bildiradi. Shuningdek, host boshqaradigan sekundiga 0.004 tokenlik boshlang‘ich ko‘rsatkichdan o‘lchangan o‘sish bosqichi ham keltirilgan.
Bu ko‘rsatkichlar muayyan FPGA image’lari, clock’lar va bajarish yo‘llarini tavsiflaydi. Ularni keltirishdan oldin FIRST_WALKED_TOKENS.mdni tekshiring va tegishli konfiguratsiya hamda o‘lchangan yorliqni saqlang.
Ilg‘or maslahatlar
Golden modeldan hakam sifatida foydalaning
RTL blokini o‘zgartirganda avval bajariladigan spetsifikatsiyani yangilang yoki tekshiring, repozitoriy talab qilsa vektorlarni qayta yarating yoki tasdiqlang va RTL chiqishini bitma-bit solishtiring. Loyihaning hujjatlashtirilgan arifmetik shartnomasi buni aniq talab qilmasa, toleransga asoslangan tekshiruvlarni kiritmang.
Mutatsiya qamrovini saqlang
APEX metodologiyasida muvaffaqiyatli regressiya yetarli emas. Testbench, scoreboard, sequencer yoki arifmetik blokni o‘zgartirgandan so‘ng tegishli mutatsiya tekshiruvlarini ishga tushiring. Agar ataylab buzilgan implementatsiya testdan o‘tsa, dastlabki yashil natijaga ishonishdan oldin verifikatsiyani kuchaytiring.
Bir xil vazifani muhitlar bo‘ylab qayta bajaring
APEX amaliyotlarida shakllar, marshrutlash va kvantlash shartnomalarini o‘z ichiga olgan, o‘zini o‘zi tavsiflovchi vazifa deskriptorlaridan foydalaniladi. Mos kelmaslikni tashxislashda deskriptorlar, masshtablar va registr operatsiyalarini saqlang. Bir xil parvozni Verilator F2 egizagida va apparatda qayta bajarish RTL nuqsonlarini sintez yoki toolchain nuqsonlaridan ajratishning afzal yo‘lidir.
Masshtablarni tensor ma’lumotlari bilan birga kuzating
Kvantlash masshtablari tasodifiy metadata emas, balki apparat shartnomasining bir qismidir. Vazifalarni yaratish yoki tekshirishda choklar orqali o‘tadigan masshtab ma’lumotlarini saqlab qoling. Tegishli masshtabsiz tensor mo‘ljallangan fixed-point operatsiyani takrorlay olmaydi.
Kodek foydali yukini umumiy saqlash hajmidan ajrating
Siqishni faqat INT4 foydali yuklari asosida hisoblamang. Masshtab banklari, teglar, padding, aniqlik metadata’si va outlier yo‘laklarini ham kiriting. E’lon qilinadigan nisbatlar uchun repozitoriyning golden hisob-kitob tekshiruvi va STATUS.md faylini asosiy manba sifatida ishlating.
Model o‘lchamlari va bajarilish da’volarini ajrating
- Qwen2.5-0.5B: Loyiha tomonidan tavsiflangan FPGA asosidagi pipeline orqali namoyish etilgan.
- Qwen2.5-7B: Dasturiy ta’minot orqali tekshirilgan golden pipeline yordamida sinovdan o‘tkazilgan.
- 7B sinfidagi arxitektura prognozlari: Tile atrofidagi kattaroq tizim uchun analitik prognozlar; joriy FPGA implementatsiyasidan o‘lchangan unumdorlik emas.
Walker’ni kengaytirishdan oldin og‘irliklarni uzatishni o‘rganing
Model og‘irliklari to‘liq tile’ga sig‘maydi. IB-FUEL dizayni har bir vazifa uchun og‘irlik yozuvlarini DDR’dan chip ichidagi FIFO’ga uzatadi, W4 yo‘li esa to‘rt bitli guruhlarni tashib, ularni INT8 matritsa dvigateli uchun ochadi. Rejalashtirish yoki feeder xatti-harakatini o‘zgartirishdan oldin IB_FUEL.md va W4_DATAPATH.md fayllarini ko‘rib chiqing.
Repozitoriy tuzilmasidan samarali foydalaning
rtl/apparat implementatsiyasini o‘z ichiga oladi.golden/bitma-bit aniq NumPy ma’lumotnoma modellarini o‘z ichiga oladi.verif/testbenchlar, assertionlar, scoreboardlar, mutatsiya tekshiruvlari va F2 simulyatsiya egizagini o‘z ichiga oladi.eval/kodek uchun model aniqligini baholash vositalarini o‘z ichiga oladi.perf/prognoz qilinadigan analitik unumdorlik modelini o‘z ichiga oladi.scripts/fpga/build, image, DDR yuklash, flight va token-loop skriptlarini o‘z ichiga oladi.docs/results/repozitoriyga kiritilgan kampaniya dalillarini o‘z ichiga oladi.
Joriy cheklovlar va yo‘l xaritasi
Amaldagi yo‘l xaritasi FPGA’da walked attention’ni tekshirish, timing closure’ni tezlashtirish, og‘irliklarni uzluksiz uzatish, W4’ni uchidan-uchigacha qo‘llab-quvvatlash, token tezligi bo‘yicha qo‘shimcha o‘lchov ishlari va Sky130 signoff’iga tayyorgarlikni ustuvor qiladi. Joriy holat asosiy jadvalda yuritiladi.
Yo‘l xaritasidagi bandlar yakunlangan deb taxmin qilmang. Xususan, README walked attention apparatini to‘liq ishga tushirish va o‘tkazuvchanlikka bog‘liq bir nechta vazifalar hali davom etayotganini ko‘rsatadi.
Xulosa
APEX transformer decoder tile’ining RTL implementatsiyasi bo‘lish bilan birga, dalillarga asoslangan apparat verifikatsiyasi bo‘yicha amaliy misoldir. Uning eng o‘ziga xos jihati kalitlar va qiymatlarni siqilgan shaklda saqlaydigan, shu bilan birga tekshirilgan attention datapath’ining bir qismi bo‘lib qoladigan integratsiyalangan KV-cache kodekidir.
Golden testlardan boshlang, so‘ng tile va walker verifikatsiyasini ishga tushiring, o‘lchangan dalillarni tekshiring va faqat qo‘shimcha artefaktlari mavjud bo‘lganda model yoki FPGA workflow’lariga o‘ting. O‘lchangan FPGA natijalarini analitik prognozlardan alohida saqlang va da’voni taqdim etishda loyiha traceability hujjatlaridan foydalaning.
APEX Apache License 2.0 ostida chiqarilgan. Amaldagi shartlar va bildirishnomalar uchun LICENSE fayliga qarang.
