মূল কনটেন্টে যান
এআই টিউটোরিয়াল

APEX তৈরি ও যাচাই করুন, একটি উন্মুক্ত RTL LLM ইনফারেন্স টাইল

জানুন কীভাবে APEX RTL-এ একটি ট্রান্সফরমার ডিকোডার লেয়ার বাস্তবায়ন করে, অ্যাটেনশন ডেটাপাথের ভেতরে KV ক্যাশ সংকুচিত করে এবং এক্সিকিউটযোগ্য NumPy মডেলের বিপরীতে প্রতিটি ব্লকের যাচাই করে। এই টিউটোরিয়ালে আর্কিটেকচার, স্থানীয় সেটআপ, যাচাইকরণ কমান্ড, মডেল মূল্যায়ন, FPGA প্রদর্শনী এবং পরিমাপ করা ও প্রক্ষেপিত ফলাফল ব্যাখ্যার ব্যবহারিক নির্দেশনা তুলে ধরা হয়েছে।

APEX তৈরি ও যাচাই: একটি উন্মুক্ত RTL LLM ইনফারেন্স টাইল

APEX কী করে

APEX হলো সম্পূর্ণ উন্মুক্ত, যাচাইকরণ-প্রথম LLM ইনফারেন্স টাইল। এটি বাস্তব RTL-এ একটি সম্পূর্ণ ট্রান্সফরমার ডিকোডার লেয়ার বাস্তবায়ন করে; এতে রয়েছে অ্যাটেনশন, KV-ক্যাশ কম্প্রেশন, অনলাইন সফটম্যাক্স, RMSNorm, রোটারি পজিশন এমবেডিং, SwiGLU, রেসিডুয়াল সংযোগ এবং ম্যাট্রিক্স অপারেশন।

প্রকল্পটি এজ ইনফারেন্সের একটি বড় bottleneck লক্ষ্য করে: কথোপকথন যত বাড়ে, প্রতিটি নতুন টোকেনকে ক্রমশ বড় key-value ক্যাশ পড়তে হয়। APEX সরাসরি হার্ডওয়্যার ডেটাপাথে KV কোডেক স্থাপন করে। কী ও ভ্যালু তৈরি হওয়ার সময় কম্প্রেস করা হয়, কম্প্রেস করা অবস্থায় সংরক্ষণ করা হয় এবং অ্যাটেনশন সেগুলো ব্যবহার করার সময় ডিকম্প্রেস করা হয়।

APEX একটি ইনফারেন্স টাইল, সম্পূর্ণ অ্যাক্সিলারেটর চিপ নয়। DRAM কন্ট্রোলার, PCIe এবং নেটওয়ার্ক-অন-চিপ রিপোজিটরিটির ঘোষিত পরিধির বাইরে।

FPGA হার্ডওয়্যারে Qwen2.5-0.5B দিয়ে টাইলটি প্রদর্শন করা হয়েছে। Qwen2.5-7B-এর টোকেন সফটওয়্যার-যাচাইকৃত গোল্ডেন পাইপলাইনের মধ্য দিয়ে গেছে, তবে README-তে দাবি করা হয়নি যে 7B মডেলটি সিলিকনের মাধ্যমে চালানো হয়েছে।

মূল বৈশিষ্ট্য

  • সম্পূর্ণ ডিকোডার-লেয়ার ডেটাপাথ: RTL-এ প্রজেকশন, অ্যাটেনশন, নর্মালাইজেশন, RoPE, ফিড-ফরোয়ার্ড গণনা, রেসিডুয়াল অপারেশন এবং KV-ক্যাশ পরিচালনা অন্তর্ভুক্ত।
  • ডেটাপাথের ভেতরেই KV কম্প্রেশন: কী-এর জন্য প্রতি-চ্যানেল INT4 কোয়ান্টাইজেশন, ভ্যালুর জন্য প্রতি-টোকেন INT4 কোয়ান্টাইজেশন ব্যবহৃত হয় এবং কঠিন চ্যানেলগুলো fp16 outlier lane ব্যবহার করতে পারে।
  • অ্যাডাপটিভ প্রিসিশন: TIP ইউনিট টোকেনের গুরুত্ব ট্র্যাক করে এবং অঞ্চলভেদে KVQ8, KVQ4 অথবা outlier-সহ KVQ4 নির্বাচন করে।
  • শেয়ার্ড ম্যাট্রিক্স ইঞ্জিন: INT8 সিস্টলিক MXE একটি ডিকোডার লেয়ারের ম্যাট্রিক্স কাজগুলোর মধ্যে টাইম-মাল্টিপ্লেক্স করা হয়।
  • অনলাইন সফটম্যাক্স: কনটেক্সট-দৈর্ঘ্যসমান স্কোর বাফার ছাড়াই স্কোরগুলো সংখ্যাগতভাবে স্থিতিশীল সফটম্যাক্স বাস্তবায়নের মধ্য দিয়ে স্ট্রিম হয়।
  • বিট-এক্স্যাক্ট যাচাইকরণ: RTL ফলাফল executable NumPy রেফারেন্স মডেলের সঙ্গে তুলনা করা হয় এবং কোনো mismatch সহ্য করা হয় না।
  • মিউটেশন-পরীক্ষিত টেস্টবেঞ্চ: ইচ্ছাকৃত RTL ত্রুটির কারণে পরীক্ষা ব্যর্থ হলেই কেবল যাচাইকরণকে অর্থবহ ধরা হয়।
  • সিমুলেশন-থেকে-সিলিকন পুনঃচালনা: FPGA রেজিস্টার-অপারেশন প্রোগ্রামগুলো bit-for-bit differential comparison-এর জন্য Verilator twin-এও চলে।
  • স্পষ্ট প্রমাণ-লেবেল: ফলাফলকে measured অথবা projected হিসেবে শ্রেণিবদ্ধ করা হয়; একটিমাত্র পারফরম্যান্স দাবিতে মিশিয়ে দেওয়া হয় না।

আর্কিটেকচার বুঝুন

একটি ডিকোড ধাপ শুরু হয় একটি activation vector দিয়ে। RMSNorm ইনপুট প্রস্তুত করে এবং MXE query, key ও value projection গণনা করে। KVQ ইঞ্জিন স্টোরেজের জন্য কী ও ভ্যালু কম্প্রেস করার আগে RoPE query ও key রূপান্তর করে।

অ্যাটেনশনের সময় ক্যাশ করা ভ্যালুগুলো read path-এ ডিকম্প্রেস করা হয়। MXE query-key product গণনা করে, ASU online softmax প্রয়োগ করে এবং আরেকটি MXE job probability-গুলোকে ক্যাশ করা ভ্যালুর সঙ্গে সমন্বয় করে। Output projection, residual addition, আরেকটি normalization stage এবং SwiGLU feed-forward path লেয়ারটি সম্পূর্ণ করে।

প্রধান RTL ব্লক

  • MXE: লেয়ারের ম্যাট্রিক্স অপারেশনের জন্য ব্যবহৃত INT8 সিস্টলিক GEMM ইঞ্জিন।
  • KVQ: KV-ক্যাশ কম্প্রেশন ও ডিকম্প্রেশন ইঞ্জিন।
  • ASU: অনলাইন সফটম্যাক্স, RMSNorm, SiLU এবং SwiGLU।
  • RoPE: query ও key-এর জন্য রোটারি পজিশন এমবেডিং।
  • TIP: টোকেন-গুরুত্ব ট্র্যাকিং এবং প্রিসিশন-টিয়ার সিদ্ধান্ত।
  • SEQ: কন্ট্রোল ও স্ট্যাটাস রেজিস্টার ফাইল, job decoder এবং layer walker।
  • SEAM: activation framing, boundary quantization এবং scale transport।
  • XBR: অপ্রয়োজনীয় host round trip ছাড়াই ইঞ্জিনগুলোর মধ্যে routing।
  • TOP: apex_top composition layer এবং integration logic।

বিস্তারিত নকশা, decision register এবং module provenance-এর জন্য ARCHITECTURE.md পড়ুন।

হোস্ট মোড ও ওয়াকড মোড

APEX দুটি execution approach সমর্থন করে। হোস্ট মোডে হোস্ট প্রতিটি hardware job আলাদাভাবে তৈরি ও জমা দেয়। এই মোডটি FPGA সিলিকনে প্রমাণিত, তবে প্রতিটি job-এর জন্য একটি host round trip লাগে।

ওয়াকড মোডে হোস্ট একবার একটি লেয়ার চালু করে। অন-টাইল layer walker descriptor fetch করে, ইঞ্জিনগুলোর ক্রম নির্ধারণ করে, XBR fabric-এর মাধ্যমে মধ্যবর্তী tensor route করে এবং quantization scale বহন করে। ওয়াকড লেয়ারটি simulation-এ bit-exact। README-তে বলা হয়েছে, FPGA-তে walked attention এখনও সক্রিয় bring-up পর্যায়ে রয়েছে।

হোস্ট মোড ও ওয়াকড মোডকে সমতুল্য performance configuration হিসেবে বিবেচনা করবেন না। হোস্ট মোড correctness ও bring-up-এর জন্য কার্যকর, আর walker-এর উদ্দেশ্য হলো প্রতি-job-এর উল্লেখযোগ্য host overhead দূর করা।

ইনস্টলেশন ও স্থানীয় সেটআপ

পূর্বশর্ত

নথিভুক্ত স্থানীয় verification flow-এর জন্য নিম্নলিখিতগুলো ইনস্টল করুন:

  • Python 3.11
  • NumPy
  • Verilator 5.x
  • GNU Make
  • Icarus Verilog, cross-checking-এর জন্য ঐচ্ছিক

চেক-আউট করা APEX রিপোজিটরির root থেকে কমান্ড চালান। শুরু করার আগে প্রধান টুলগুলো নিশ্চিত করুন:

python3 --version
verilator --version
make --version
python3 -c "import numpy; print(numpy.__version__)"

README কোনো package-install command বা pinned Python environment command দেয় না। evaluation বা FPGA workflow-এর জন্য অতিরিক্ত dependency নির্ধারণের সময় রিপোজিটরির নিজস্ব ফাইল ও subdirectory documentation ব্যবহার করুন।

প্রথমে প্রমাণ পরীক্ষা করুন

দীর্ঘ workflow চালানোর আগে প্রকল্পটির প্রমাণ ও সীমাবদ্ধতাগুলো পর্যালোচনা করুন:

  • STATUS.md-এ মেশিন-জেনারেটেড যাচাইকরণ গণনা ও পরিমাপ করা ফলাফল রয়েছে।
  • TRACEABILITY.md-এ জানা ঘাটতিগুলো নথিভুক্ত করা হয়েছে এবং দাবিগুলো সহায়ক প্রমাণের সঙ্গে যুক্ত করা হয়েছে।
  • মাস্টার টেবিল বাস্তবায়ন ও bring-up-এর অবস্থা ট্র্যাক করে।
  • ফলাফল সূচি ক্যাম্পেইন অনুযায়ী কমিট করা প্রমাণ সাজায়।

Golden-Model টেস্ট চালান

এক্সিকিউটেবল NumPy রেফারেন্স মডেল এবং হিমায়িত ভেক্টর দিয়ে শুরু করুন:

make -C golden test

এই কমান্ডটি golden model চালায় এবং নির্ধারিত compression-accounting gate-ও অন্তর্ভুক্ত করে। Compression accounting গুরুত্বপূর্ণ, কারণ APEX শুধু নামমাত্র INT4 payload রিপোর্ট করে না; এতে tag, scale, padding এবং outlier storage-ও অন্তর্ভুক্ত রয়েছে।

RTL Pipeline যাচাই করুন

সম্পূর্ণ Attention-Tile Smoke Test চালান

make -C verif/top/smoke smoke

এটি attention tile-এর নথিভুক্ত end-to-end smoke target। Golden-model suite সফল হওয়ার পর প্রাথমিক integration check হিসেবে এটি ব্যবহার করুন।

Layer-3 Verification চালান

make -C verif/top l3

Layer-3 target প্রদত্ত case-গুলোর ওপর বাস্তবে composed tile-কে golden model-এর সঙ্গে তুলনা করে। APEX-এ আনুমানিক numerical tolerance নয়, bit-identical ফলাফল প্রয়োজন।

Layer Walker যাচাই করুন

make -C verif/seq_walker

এটি walker suite এবং তার mutation gate চালায়। Mutation testing ইচ্ছাকৃতভাবে আচরণে ত্রুটি সৃষ্টি করে এবং verification environment সেই ত্রুটি শনাক্ত করে কি না তা পরীক্ষা করে। কোনো mutant টিকে গেলে তা সফল design result নয়, বরং verification-এর দুর্বলতা নির্দেশ করে।

Performance Model পরীক্ষা করুন

Analytic model-এর calibration check চালান:

python3 perf/apex_perf_model.py --check

Performance model-টি স্পষ্টভাবে projected, measured silicon performance নয়। এর assumptions এবং calibration anchor PERF_MODEL.md-এ নথিভুক্ত রয়েছে।

Projected 7B-class reading-speed এবং energy figure এমন কিছু system component-এর ওপর নির্ভরশীল যেগুলো তৈরি হয়নি বা অসম্পূর্ণ, যেমন native W4 weight path, hardware layer walking এবং wide LPDDR integration। এগুলোকে অর্জিত hardware result হিসেবে উপস্থাপন করা উচিত নয়।

Model-এ KV Compression মূল্যায়ন করুন

Repository-তে যাচাইকৃত KV codec-এর model-accuracy matrix রয়েছে। 0.5B এবং 1.5B matrix চালান:

bash eval/kv_eval/run_matrix.sh

7B matrix চালান:

bash eval/kv_eval/run_matrix_7b.sh

এই command চালানোর আগে কমিট করা result file-এর পাশে থাকা evaluation README পড়ুন। প্রকাশিত evaluation-এ সম্পূর্ণ 10,042-document HellaSwag validation set ব্যবহার করা হয়েছে। README-তে ছোট model-গুলোর জন্য near-lossless আচরণ, 7B-তে KVQ8-এর ক্ষেত্রে সম্পূর্ণ set-এ শনাক্তযোগ্য কোনো প্রভাব না থাকা এবং 7B-তে KVQ4-এর জন্য সামান্য পরিমাপ করা খরচের কথা জানানো হয়েছে।

সংশ্লিষ্ট প্রমাণ head-to-head result এবং 7B evaluation result-এ পাওয়া যাবে।

Golden Pipeline-এর মাধ্যমে একটি Model চালান

প্রকল্পে run_tinynpu.py --prompt দিয়ে prompt execution নথিভুক্ত করা হয়েছে। এটি fixed-point golden pipeline-এর মাধ্যমে greedy Qwen token stream করে এবং replay-এর জন্য hardware-shaped job তৈরি করতে পারে।

run_tinynpu.py --prompt

README-এর top-level instruction-এ সম্পূর্ণ model setup বা প্রতিটি command-line argument দেওয়া নেই। তাই সঠিক scope, artifact এবং reproduction detail-এর জন্য 7B token artifact documentation অনুসরণ করুন। মনে রাখবেন, এই 7B flow software-verified; এটি FPGA tile-এ 7B execution-এর দাবি নয়।

AWS F2 Demonstration চালান

প্রয়োজনীয়তা ও খরচ

FPGA demonstration-এর জন্য us-west-2-এ f2.6xlarge instance ব্যবহারের access-সহ AWS CLI credential প্রয়োজন। README অনুযায়ী সম্পূর্ণ run-এ আনুমানিক 30 মিনিট এবং প্রায় দুই US dollar খরচ হয়।

নথিভুক্ত reference FPGA image হলো agfi-030a812cd224b409d। এটি 15.625 MHz tile clock-সহ A2 recipe ব্যবহার করে।

Verification Battery চালান

bash scripts/fpga/f2/run_walked_demo.sh agfi-030a812cd224b409d

Script-টি FPGA instance boot করে, image load করে, নথিভুক্ত verification battery এবং walked chain চালায়, verdict print করে এবং instance terminate করে।

Interactive Prompt Demo শুরু করুন

bash scripts/fpga/f2/run_chat_demo.sh

Interactive demo-টি walked pipeline ব্যবহার করে। README-তে The capital of France is-কে উদাহরণ prompt হিসেবে দেওয়া হয়েছে এবং graded response হিসেবে Paris. রিপোর্ট করা হয়েছে।

DDR image-গুলো mlx-community/Qwen2.5-0.5B-Instruct-4bit থেকে তৈরি। Team staging artifact-গুলো script-এ configured রয়েছে। External user-দের এই command দিয়ে weight image তৈরি করা উচিত:

python3 scripts/fpga/f2/make_weight_image.py

ফলস্বরূপ image-টি আপনার নিয়ন্ত্রণাধীন bucket-এর জন্য configure করুন; team-এর staging bucket-এ access আছে ধরে নেবেন না।

Hardware Result সঠিকভাবে ব্যাখ্যা করুন

Repository-তে 62.5 MHz-এ A0 image-এ প্রতি সেকেন্ডে 0.56 token এবং 15.625 MHz A2 reference image-এ প্রতি সেকেন্ডে 0.25 token-এর measured throughput রিপোর্ট করা হয়েছে। এছাড়াও host-driven baseline-এর প্রতি সেকেন্ডে 0.004 token থেকে measured progression রিপোর্ট করা হয়েছে।

এই figure-গুলো নির্দিষ্ট FPGA image, clock এবং execution path বর্ণনা করে। উদ্ধৃত করার আগে FIRST_WALKED_TOKENS.md দেখুন এবং সংশ্লিষ্ট configuration ও measured label সংরক্ষণ করুন।

উন্নত টিপস

Golden Model-কে Arbiter হিসেবে ব্যবহার করুন

কোনো RTL ব্লক পরিবর্তন করার সময় প্রথমে এক্সিকিউটেবল স্পেসিফিকেশন আপডেট বা যাচাই করুন, রিপোজিটরি অনুযায়ী প্রয়োজন হলে ভেক্টর পুনরায় তৈরি বা নিশ্চিত করুন, এবং RTL আউটপুট বিট-টু-বিট তুলনা করুন। প্রকল্পের নথিবদ্ধ arithmetic contract-এ স্পষ্টভাবে প্রয়োজন না থাকলে tolerance-ভিত্তিক পরীক্ষা চালু করা এড়িয়ে চলুন।

Mutation Coverage সংরক্ষণ করুন

APEX পদ্ধতির অধীনে একটি regression পাস করাই যথেষ্ট নয়। Testbench, scoreboard, sequencer বা arithmetic block পরিবর্তন করার পর প্রাসঙ্গিক mutation gate চালান। ইচ্ছাকৃতভাবে ত্রুটিপূর্ণ কোনো implementation পাস করলে, মূল সবুজ ফলাফলের ওপর আস্থা রাখার আগে verification শক্তিশালী করুন।

পরিবেশজুড়ে একই Job পুনরায় চালান

APEX অপারেশনগুলো self-describing job descriptor ব্যবহার করে, যেখানে shapes, routing এবং quantization contract অন্তর্ভুক্ত থাকে। কোনো mismatch নির্ণয়ের সময় descriptor, scale এবং register operation সংরক্ষণ করুন। Verilator F2 twin এবং hardware-এ একই flight পুনরায় চালানোই RTL ত্রুটি থেকে synthesis বা toolchain ত্রুটি আলাদা করার পছন্দনীয় পদ্ধতি।

Tensor Data-এর সঙ্গে Scale ট্র্যাক করুন

Quantization scale hardware contract-এর অংশ, আকস্মিক metadata নয়। Job তৈরি বা পরিদর্শনের সময় seams-এর মধ্য দিয়ে প্রবাহিত scale তথ্য সংরক্ষণ করুন। সংশ্লিষ্ট scale ছাড়া কোনো tensor নির্ধারিত fixed-point operation পুনরুৎপাদন করতে পারে না।

Codec Payload এবং মোট Storage আলাদা করুন

শুধু INT4 payload ব্যবহার করে compression হিসাব করবেন না। Scale bank, tag, padding, precision metadata এবং outlier lane অন্তর্ভুক্ত করুন। প্রকাশিত ratio-এর জন্য রিপোজিটরির golden accounting gate এবং STATUS.md-কে প্রামাণ্য ভিত্তি হিসেবে ব্যবহার করুন।

Model Size এবং Execution Claim আলাদা রাখুন

  • Qwen2.5-0.5B: প্রকল্পে বর্ণিত FPGA-সমর্থিত pipeline-এর মাধ্যমে প্রদর্শিত।
  • Qwen2.5-7B: software-verified golden pipeline-এর মাধ্যমে পরীক্ষা করা হয়েছে।
  • 7B-class architecture projection: tile-কে ঘিরে বৃহত্তর system-এর জন্য analytic projection, বর্তমান FPGA implementation থেকে মাপা performance নয়।

Walker সম্প্রসারণের আগে Weight Streaming অধ্যয়ন করুন

Model weight সম্পূর্ণভাবে tile-এ ধরে না। IB-FUEL design প্রতি job-এর weight record DDR থেকে on-tile FIFO-তে stream করে, আর W4 path four-bit group পরিবহন করে সেগুলো unpack করে INT8 matrix engine-এ পাঠায়। Scheduling বা feeder behavior পরিবর্তনের আগে IB_FUEL.md এবং W4_DATAPATH.md পর্যালোচনা করুন।

রিপোজিটরি Layout দক্ষতার সঙ্গে ব্যবহার করুন

  • rtl/-এ hardware implementation রয়েছে।
  • golden/-এ bit-exact NumPy reference model রয়েছে।
  • verif/-এ testbench, assertion, scoreboard, mutation gate এবং F2 simulation twin রয়েছে।
  • eval/-এ codec-এর model-accuracy evaluation tool রয়েছে।
  • perf/-এ projected analytic performance model রয়েছে।
  • scripts/fpga/-এ build, image, DDR-loading, flight এবং token-loop script রয়েছে।
  • docs/results/-এ committed campaign evidence রয়েছে।

বর্তমান সীমাবদ্ধতা এবং রোডম্যাপ

সক্রিয় রোডম্যাপে FPGA-তে walked attention validation, দ্রুততর timing closure, sustained weight streaming, end-to-end W4 support, অতিরিক্ত measured token-rate work এবং Sky130 signoff প্রস্তুতিকে অগ্রাধিকার দেওয়া হয়েছে। বর্তমান status master table-এ বজায় রাখা হয়।

রোডম্যাপের item সম্পন্ন হয়েছে ধরে নেবেন না। বিশেষ করে, README-তে full walked-attention hardware bring-up এবং bandwidth-সংক্রান্ত কয়েকটি dependency-কে চলমান কাজ হিসেবে চিহ্নিত করা হয়েছে।

উপসংহার

APEX একটি transformer decoder tile-এর RTL implementation হওয়ার পাশাপাশি evidence-driven hardware verification-এর একটি case study। এর সবচেয়ে স্বতন্ত্র বৈশিষ্ট্য হলো একটি সমন্বিত KV-cache codec, যা key এবং value-কে compressed form-এ সংরক্ষণ করে এবং একই সঙ্গে verified attention datapath-এর অংশ হিসেবে থাকে।

Golden test দিয়ে শুরু করুন, তারপর tile ও walker verification চালান, measured evidence পরিদর্শন করুন, এবং তাদের অতিরিক্ত artifact উপলব্ধ থাকলেই model বা FPGA workflow-এ এগিয়ে যান। Measured FPGA result-কে analytic projection থেকে আলাদা রাখুন এবং কোনো claim উপস্থাপনের সময় প্রকল্পের traceability document ব্যবহার করুন।

APEX Apache License 2.0-এর অধীনে প্রকাশিত। প্রযোজ্য শর্ত ও notice-এর জন্য LICENSE দেখুন।