
APEX Inachofanya
APEX ni tile ya uelekezaji wa LLM iliyo wazi kabisa na inayotanguliza uthibitishaji. Inatekeleza safu moja ya dekoda ya transformer katika RTL halisi, ikijumuisha attention, ukandamizaji wa akiba ya KV, softmax ya mtandaoni, RMSNorm, vielelezo vya mkao vinavyozunguka, SwiGLU, miunganisho ya mabaki, na shughuli za matriki.
Mradi unalenga kikwazo kikubwa cha uelekezaji wa kompyuta za ukingoni: mazungumzo yanapokua, kila tokeni mpya lazima isome akiba ya key-value inayozidi kuwa kubwa. APEX huweka kodeki ya KV moja kwa moja kwenye njia ya data ya maunzi. Keys na values hukandamizwa zinapotengenezwa, huhifadhiwa katika umbo lililokandamizwa, na hufunguliwa wakati attention inapozitumia.
APEX ni tile moja ya uelekezaji, si chip kamili ya kichochezi. Vidhibiti vya DRAM, PCIe, na network-on-chip viko nje ya upeo uliotajwa wa hifadhi hii.
Tile hii imeonyeshwa ikitumia Qwen2.5-0.5B kwenye maunzi ya FPGA. Tokeni za Qwen2.5-7B zimepitishwa kwenye njia ya dhahabu iliyothibitishwa kwa programu, lakini README haisemi kwamba modeli ya 7B imeendeshwa kwenye silicon.
Vipengele Muhimu
- Njia kamili ya data ya safu ya dekoda: RTL inashughulikia makadirio, attention, urekebishaji, RoPE, ukokotoaji wa feed-forward, shughuli za mabaki, na ushughulikiaji wa akiba ya KV.
- Ukandamizaji wa KV ndani ya njia ya data: Keys hutumia quantization ya INT4 kwa kila channel, values hutumia quantization ya INT4 kwa kila tokeni, na channel zenye changamoto zinaweza kutumia njia ya fp16 ya outlier.
- Usahihi unaobadilika: Kitengo cha TIP hufuatilia umuhimu wa tokeni na kuchagua KVQ8, KVQ4, au KVQ4 yenye outliers kwa kila eneo.
- Injini ya matriki inayoshirikiwa: MXE ya kusukuma data kwa mpangilio wa systolic ya INT8 hugawanya muda kati ya kazi za matriki katika safu ya dekoda.
- Softmax ya mtandaoni: Alama hupitia utekelezaji wa softmax wenye uthabiti wa kihisabati bila kuhitaji bafa ya alama yenye ukubwa wa urefu wa muktadha.
- Uthibitishaji sahihi wa biti: Matokeo ya RTL hulinganishwa na miundo ya marejeo ya NumPy inayoweza kutekelezwa, bila kuruhusu tofauti yoyote.
- Benchi za majaribio zilizojaribiwa kwa mabadiliko: Uthibitishaji huchukuliwa kuwa wenye maana tu pale kasoro za RTL zinazoletwa kimakusudi zinaposababisha majaribio kushindwa.
- Uchezaji upya kutoka uigaji hadi silicon: Programu za shughuli za rejista za FPGA pia huendeshwa kwenye pacha wa Verilator kwa ulinganisho wa tofauti wa biti kwa biti.
- Lebo wazi za ushahidi: Matokeo huainishwa kuwa yaliyopimwa au yaliyokadiriwa badala ya kuchanganywa kuwa dai moja la utendaji.
Elewa Usanifu
Hatua ya dekoda huanza na vekta ya uamilisho. RMSNorm huandaa ingizo, na MXE hukokotoa makadirio ya query, key, na value. RoPE hubadilisha queries na keys kabla injini ya KVQ haijazikandamiza keys na values kwa ajili ya kuhifadhi.
Wakati wa attention, values zilizohifadhiwa hufunguliwa katika njia ya kusoma. MXE hukokotoa bidhaa za query-key, ASU hutumia softmax ya mtandaoni, na kazi nyingine ya MXE huunganisha uwezekano na values zilizohifadhiwa. Makadirio ya matokeo, jumlisho la mabaki, hatua nyingine ya urekebishaji, na njia ya feed-forward ya SwiGLU hukamilisha safu.
Vitalu Vikuu vya RTL
- MXE: Injini ya GEMM ya INT8 ya systolic inayotumika kwa shughuli za matriki za safu.
- KVQ: Injini ya ukandamizaji na ufunguaji wa akiba ya KV.
- ASU: Softmax ya mtandaoni, RMSNorm, SiLU, na SwiGLU.
- RoPE: Kielelezo cha mkao kinachozunguka kwa queries na keys.
- TIP: Ufuatiliaji wa umuhimu wa tokeni na maamuzi ya ngazi ya usahihi.
- SEQ: Faili ya rejista za udhibiti na hali, dekoda ya kazi, na kifuatiliaji cha safu.
- SEAM: Uundaji wa fremu za uamilisho, quantization ya mipaka, na uhamishaji wa mizani.
- XBR: Uelekezaji kati ya injini bila mizunguko isiyo ya lazima ya kurudi kwa mwenyeji.
- TOP: Safu ya uundaji ya
apex_topna mantiki ya ujumuishaji.
Soma ARCHITECTURE.md kwa muundo wa kina, rejista ya maamuzi, na asili ya moduli.
Hali ya Mwenyeji na Hali ya Walker
APEX inasaidia mbinu mbili za utekelezaji. Katika hali ya mwenyeji, mwenyeji huunda na kuwasilisha kila kazi ya maunzi mmoja mmoja. Hali hii imethibitishwa kwenye silicon ya FPGA, lakini kila kazi husababisha mzunguko wa kurudi kwa mwenyeji.
Katika hali ya walker, mwenyeji huanzisha safu mara moja. Kifuatiliaji cha safu kilicho kwenye tile huchota vifafanuzi, hupanga injini, hupitisha tensor za kati kupitia kitambaa cha XBR, na kusambaza mizani ya quantization. Safu inayofuatiliwa ina usahihi wa biti katika uigaji. README inasema kwamba attention inayofuatiliwa kwenye FPGA bado iko katika hatua hai ya uanzishaji.
Usichukulie hali ya mwenyeji na hali ya walker kuwa usanidi sawa wa utendaji. Hali ya mwenyeji ni muhimu kwa usahihi na uanzishaji, huku walker ikilenga kuondoa gharama kubwa ya mwenyeji kwa kila kazi.
Usakinishaji na Usanidi wa Ndani
Mahitaji ya Awali
Kwa mtiririko wa uthibitishaji wa ndani ulioandikwa, sakinisha yafuatayo:
- Python 3.11
- NumPy
- Verilator 5.x
- GNU Make
- Icarus Verilog, kwa hiari, kwa ukaguzi wa pamoja
Tekeleza amri kutoka mzizi wa hifadhi ya APEX iliyokaguliwa. Thibitisha zana kuu kabla ya kuanza:
python3 --version
verilator --version
make --version
python3 -c "import numpy; print(numpy.__version__)"README haitoi amri ya kusakinisha vifurushi wala amri iliyowekwa ya mazingira ya Python. Tumia faili za hifadhi yenyewe na nyaraka za vijisubdirisha unapotatua utegemezi wa ziada kwa ajili ya tathmini au mtiririko wa FPGA.
Kagua Ushahidi Kwanza
Kabla ya kuendesha mtiririko mrefu, kagua ushahidi na vikwazo vya mradi:
- STATUS.md ina idadi za uthibitishaji iliyozalishwa na mashine na matokeo yaliyopimwa.
- TRACEABILITY.md inarekodi mapengo yanayojulikana na kuunganisha madai na ushahidi wa kuyaunga mkono.
- Jedwali kuu linafuatilia hali ya utekelezaji na uanzishaji.
- Faharasa ya matokeo inapanga ushahidi uliowasilishwa kulingana na kampeni.
Endesha Majaribio ya Golden Model
Anza na modeli za marejeo za NumPy zinazoweza kutekelezwa pamoja na vekta zilizogandishwa:
make -C golden testAmri hii huendesha modeli za golden na inajumuisha lango lililofungwa la uhasibu wa ukandamizaji. Uhasibu wa ukandamizaji ni muhimu kwa sababu APEX inajumuisha tagi, mizani, padding na uhifadhi wa outlier, badala ya kuripoti tu payload ya kawaida ya INT4.
Thibitisha Bomba la RTL
Endesha Jaribio Kamili la Moshi la Attention-Tile
make -C verif/top/smoke smokeHiki ndicho kipengele cha mwisho hadi mwisho cha moshi kilichoandikwa kwa attention tile. Kitumie kama ukaguzi wa awali wa ujumuishaji baada ya mfululizo wa majaribio ya golden model kufaulu.
Endesha Uthibitishaji wa Tabaka la 3
make -C verif/top l3Kipengele cha Tabaka la 3 hulinganisha tile halisi iliyoundwa dhidi ya golden model katika visa vilivyotolewa. APEX inahitaji matokeo yanayofanana bit kwa bit, si ustahimilivu wa takriban wa namba.
Thibitisha Layer Walker
make -C verif/seq_walkerHii huendesha mfululizo wa majaribio ya walker na malango yake ya mutation. Majaribio ya mutation huvunja tabia kimakusudi na kukagua ikiwa mazingira ya uthibitishaji yanagundua hitilafu hiyo. Mutant anayenusurika huashiria udhaifu wa uthibitishaji, si matokeo yenye mafanikio ya muundo.
Angalia Modeli ya Utendaji
Endesha ukaguzi wa urekebishaji wa modeli ya uchanganuzi kwa:
python3 perf/apex_perf_model.py --checkModeli ya utendaji ni makadirio ya kinadharia, si utendaji uliopimwa wa silicon. Mawazo yake na nanga za urekebishaji zimeandikwa katika PERF_MODEL.md.
Takwimu zinazokadiriwa za kasi ya kusoma na nishati za daraja la 7B zinategemea vipengele vya mfumo ambavyo havijajengwa au havijakamilika, ikiwemo njia asilia ya uzito ya W4, utembeaji wa tabaka unaotekelezwa na maunzi, na ujumuishaji mpana wa LPDDR. Hazipaswi kuwasilishwa kama matokeo yaliyopatikana ya maunzi.
Tathmini Ukandamizaji wa KV kwenye Modeli
Hifadhi hii inajumuisha matrisi za usahihi wa modeli kwa kodeki ya KV iliyothibitishwa. Endesha matrisi ya 0.5B na 1.5B kwa:
bash eval/kv_eval/run_matrix.shEndesha matrisi ya 7B kwa:
bash eval/kv_eval/run_matrix_7b.shSoma README za tathmini zilizo karibu na faili za matokeo zilizowasilishwa kabla ya kuendesha amri hizi. Tathmini iliyochapishwa inatumia seti kamili ya uthibitishaji ya HellaSwag yenye hati 10,042. README inaripoti tabia inayokaribia kutopoteza taarifa kwa modeli ndogo, kutokuwepo kwa athari inayoweza kugunduliwa kwenye seti nzima kwa KVQ8 kwenye 7B, na gharama ndogo iliyopimwa kwa KVQ4 kwenye 7B.
Ushahidi unaohusiana unapatikana katika matokeo ya head-to-head na matokeo ya tathmini ya 7B.
Endesha Modeli Kupitia Bomba la Golden
Mradi unaandika utekelezaji wa prompt kwa run_tinynpu.py --prompt. Hii hutiririsha tokeni za Qwen za greedy kupitia bomba la golden la fixed-point na inaweza kuzalisha kazi zenye muundo wa maunzi kwa ajili ya replay.
run_tinynpu.py --promptREADME haitoi usanidi kamili wa modeli wala kila hoja ya mstari wa amri katika maelekezo yake ya kiwango cha juu, kwa hiyo fuata nyaraka za artifact ya tokeni ya 7B kwa maelezo kamili ya upeo, artifact na uzalishaji upya. Kumbuka kuwa mtiririko huu wa 7B umethibitishwa kwa programu; si dai la utekelezaji wa 7B kwenye tile ya FPGA.
Endesha Maonyesho ya AWS F2
Mahitaji na Gharama
Maonyesho ya FPGA yanahitaji hati tambulishi za AWS CLI zenye ufikiaji wa tukio la f2.6xlarge katika us-west-2. README inakadiria takriban dakika 30 na karibu dola mbili za Marekani kwa uendeshaji kamili.
Picha ya marejeo ya FPGA iliyoandikwa ni agfi-030a812cd224b409d. Inatumia kichocheo cha A2 chenye saa ya tile ya 15.625 MHz.
Endesha Kifurushi cha Uthibitishaji
bash scripts/fpga/f2/run_walked_demo.sh agfi-030a812cd224b409dHati hii huanzisha tukio la FPGA, hupakia picha, huendesha kifurushi cha uthibitishaji kilichoandikwa pamoja na minyororo iliyotembezwa, huchapisha uamuzi, na kusitisha tukio.
Anzisha Maonyesho ya Prompt ya Kuingiliana
bash scripts/fpga/f2/run_chat_demo.shMaonyesho ya kuingiliana hutumia bomba lililotembezwa. README inatoa The capital of France is kama prompt ya mfano na inaripoti jibu lililopangwa Paris..
Picha za DDR zimetokana na mlx-community/Qwen2.5-0.5B-Instruct-4bit. Artifact za hatua za timu zimesanidiwa katika hati. Watumiaji wa nje wanapaswa kuzalisha picha ya uzito kwa:
python3 scripts/fpga/f2/make_weight_image.pySanidi picha inayotokana kwa ndoo unayoidhibiti badala ya kudhani kuwa una ufikiaji wa ndoo ya hatua ya timu.
Kutafsiri Matokeo ya Maunzi kwa Usahihi
Hifadhi inaripoti throughput iliyopimwa ya tokeni 0.56 kwa sekunde kwenye picha ya A0 yenye 62.5 MHz na tokeni 0.25 kwa sekunde kwenye picha ya marejeo ya A2 yenye 15.625 MHz. Pia inaripoti maendeleo yaliyopimwa kutoka msingi wa awali unaoendeshwa na mwenyeji wa tokeni 0.004 kwa sekunde.
Takwimu hizi zinaeleza picha, saa na njia mahususi za utekelezaji za FPGA. Angalia FIRST_WALKED_TOKENS.md kabla ya kuzitaja, na hifadhi usanidi pamoja na lebo ya kipimo inayohusiana.
Vidokezo vya Juu
Tumia Golden Model kama Mwamuzi
Unapobadilisha bloku ya RTL, sasisha au thibitisha kwanza specifikashi ya kutekelezeka, tengeneza upya au thibitisha vekta kama inavyohitajika na hazina, kisha linganisha matokeo ya RTL biti kwa biti. Epuka kuanzisha ukaguzi unaotegemea uvumilivu isipokuwa mkataba wa kihisabati ulioandikwa wa mradi uhitaji hilo waziwazi.
Hifadhi Ufikiaji wa Mutation
Regression inayofaulu haitoshi chini ya mbinu ya APEX. Endesha milango husika ya mutation baada ya kubadilisha testbench, scoreboard, sequencer, au bloku ya kihisabati. Ikiwa utekelezaji uliovunjwa kwa makusudi unapita, imarisha uthibitishaji kabla ya kuamini matokeo ya awali ya kijani.
Rudia Kazi Hiyo Hiyo Katika Mazingira Tofauti
Operesheni za APEX hutumia vifafanuzi vya kazi vinavyojieleza, vinavyojumuisha maumbo, uelekezaji, na mikataba ya quantization. Hifadhi vifafanuzi, mizani, na operesheni za rejista unapochunguza kutolingana. Kurudia safari hiyo hiyo katika pacha wa Verilator F2 na kwenye maunzi ndiyo njia inayopendelewa ya kutenganisha hitilafu za RTL na hitilafu za synthesis au toolchain.
Fuatilia Mizani Pamoja na Data ya Tensor
Mizani ya quantization ni sehemu ya mkataba wa maunzi, si metadata ya pembeni. Unapounda au kukagua kazi, hifadhi taarifa za mizani zinazosafiri kupitia miunganisho. Tensor isiyo na mizani inayolingana haiwezi kuzalisha tena operesheni iliyokusudiwa ya fixed-point.
Tenganisha Payload ya Codec na Jumla ya Hifadhi
Usikokote ukandamizaji kwa kutumia payload za INT4 pekee. Jumuisha benki za mizani, tagi, padding, metadata ya precision, na njia za outlier. Tumia lango la uhasibu la golden la hazina na STATUS.md kama msingi wenye mamlaka wa uwiano unaochapishwa.
Tenganisha Ukubwa wa Modeli na Madai ya Utekelezaji
- Qwen2.5-0.5B: Imeonyeshwa kupitia pipeline inayotegemea FPGA iliyoelezwa na mradi.
- Qwen2.5-7B: Imejaribiwa kupitia pipeline ya golden iliyothibitishwa na programu.
- Makadirio ya usanifu wa daraja la 7B: Makadirio ya kiuchanganuzi kwa mfumo mkubwa zaidi unaozunguka tile, si utendaji uliopimwa kutoka kwa utekelezaji wa sasa wa FPGA.
Chunguza Utiririshaji wa Uzani Kabla ya Kupanua Walker
Uzani wa modeli hautoshei wote kwenye tile. Muundo wa IB-FUEL hutiririsha rekodi za uzani za kila kazi kutoka DDR hadi FIFO iliyo kwenye tile, huku njia ya W4 ikisafirisha makundi ya biti nne na kuyafungua kwa injini ya matriki ya INT8. Kagua IB_FUEL.md na W4_DATAPATH.md kabla ya kurekebisha upangaji wa ratiba au tabia ya feeder.
Tumia Muundo wa Hazina kwa Ufanisi
rtl/ina utekelezaji wa maunzi.golden/ina modeli za marejeo za NumPy zenye usahihi wa biti.verif/ina testbench, assertions, scoreboard, milango ya mutation, na pacha wa uigaji wa F2.eval/ina zana za kutathmini usahihi wa modeli kwa codec.perf/ina modeli ya utendaji wa kiuchanganuzi uliokadiriwa.scripts/fpga/ina hati za ujenzi, picha, upakiaji wa DDR, safari, na mizunguko ya tokeni.docs/results/ina ushahidi wa kampeni uliowekwa kwenye hazina.
Vikwazo vya Sasa na Ramani ya Maendeleo
Ramani ya maendeleo inayotumika kwa sasa inaweka kipaumbele kwenye uthibitishaji wa attention inayotembezwa kwenye FPGA, kufunga timing kwa kasi zaidi, utiririshaji endelevu wa uzani, usaidizi wa W4 kutoka mwanzo hadi mwisho, kazi zaidi iliyopimwa ya kiwango cha tokeni, na maandalizi ya signoff ya Sky130. Hali ya sasa inadumishwa katika jedwali kuu.
Epuka kudhani kuwa vipengele vya ramani ya maendeleo vimekamilika. Hasa, README inabainisha kuwa uanzishaji kamili wa maunzi ya attention inayotembezwa na utegemezi kadhaa unaohusiana na bandwidth bado ni kazi inayoendelea.
Hitimisho
APEX ni utekelezaji wa RTL wa tile ya transformer decoder na pia ni uchunguzi kifani wa uthibitishaji wa maunzi unaoongozwa na ushahidi. Kipengele chake bainifu zaidi ni codec iliyounganishwa ya akiba ya KV, inayohifadhi funguo na thamani katika umbo lililobanwa huku ikiendelea kuwa sehemu ya datapath ya attention iliyothibitishwa.
Anza na majaribio ya golden, kisha endesha uthibitishaji wa tile na walker, kagua ushahidi uliopimwa, na endelea tu kwenye mtiririko wa modeli au FPGA wakati vielekezi vyake vya ziada vinapatikana. Weka matokeo yaliyopimwa ya FPGA tofauti na makadirio ya kiuchanganuzi, na tumia nyaraka za ufuatiliaji za mradi kila unapowasilisha dai.
APEX imetolewa chini ya Apache License 2.0. Tazama LICENSE kwa masharti na notisi zinazotumika.
