OpenTPU - یک شتاب دهنده هوش مصنوعی منبع باز، توسعه یافته توسط AI
آدرس مقاله: https://github.com/FeSens/openTPU آدرس نظرات: https://news.ycombinator.com/item?id=49980715 امتیاز: 210 # نظر: 275
یک شتاب دهنده هوش مصنوعی منبع باز، توسعه یافته توسط AI.
openTPU درس های مسابقات خودکار آرش را برای شتاب دهنده های هوش مصنوعی به ارمغان می آورد. دو سوال مطرح میکند: عوامل هوش مصنوعی تا کجا میتوانند در طراحی سختافزار پیش بروند، و آیا میتوانند تراشهای بسازند که استنتاج خودشان را اجرا کند؟
otpu-chat در حال اجرا LFM2.5-230M روی کارت FPGA (سمت چپ)، با otpu-smi استفاده از کارت و پهنای باند DRAM (راست) را نشان می دهد.
openTPU نیز یک پروژه آموزشی است. کل شتاب دهنده در یک monorepo کوچک زندگی می کند که می توانید آن را از انتها به انتها بخوانید: طراحی سخت افزار (SystemVerilog)، مجموعه دستورالعمل، یک شبیه ساز کمی دقیق، یک زبان هسته و کامپایلر آن، و نرم افزار میزبان که یک کارت PCIe واقعی را هدایت می کند. اگر می خواهید بدانید که چگونه یک شتاب دهنده هوش مصنوعی کار می کند، از matmul در پایتون گرفته تا سیم ها، این مکان خوبی برای شروع است.
این طرح ده مدل مدرن را با وزن واقعیشان بر روی کارت Inspur YPCB-00338 (Xilinx Kintex-7 xc7k480t، دو کانال DDR3) اجرا میکند، و کارت همان توکنهای شبیهساز را، بیت به بیت تولید میکند.
اندازه گیری شده روی کارت: سه مدل اول در تاریخ 29/09/2026 با تصویر تولیدی deploy_champ_e698dcd7. LFM2-2.6B، SmolLM3-3B و Phi-4-mini در 30-09-2026، و Qwen3.5-2B و 4B و Gemma 4 در 01-10-2026، با ساخت B، deploy_fused133c_79c5707a تولید شد. Build B LFM2-2.6B، SmolLM3 و Phi-4-mini را 8-9٪ سریعتر از e698dcd7 (Gemma 4 E2B 10٪) رمزگشایی می کند، به جای 82-87٪، در 91-94٪ اوج DRAM. تصویر int8 Qwen3.5-4B بیش از 4 گیگابایت است.
هنگامی که کارت در حال اجرا است، لاجیتها به عقب برمیگردند ( tools/decode_profile.py، 96 توکن)، رمزگشایی 4 بیتی سریعتر است، در دستگاه / wall tok/s:
تصویر تولید قبلی، se-cand3، با Xilinx MIG، یک واحد ماتریس دو ستونی و یک ساعت 120.755 مگاهرتز ساخته شد. به همین ترتیب، تصویر جدید اندازه گیری شد:
تصاویر قبلی و شماره آنها در docs/board.md، بخش 5 آمده است.
مدلهای ترکیبی از متخصصان بزرگتر از کارت 4 گیگابایتی است که کارشناسان آنها از فضای ذخیرهسازی میزبان پخش میشوند (docs/offload.md، بخش 10). کارت هر توکن را مسیریابی می کند و هر متخصص را محاسبه می کند، و متخصصان را در اسلات های هر لایه در DRAM خود نگه می دارد. میزبان فقط کارشناسان گم شده را از یک فایل pool در آن شکاف ها، با نرخ پیوند کپی می کند (بخش 10.1). اندازهگیری در 01/10/2026 با ساخت B (79c5707a)، حلقه رمزگشایی خود کارت که هر توکن را انتخاب میکند، متخصصان 4 بیتی، هد int8:
وزنهای 4 بیتی (docs/quant.md) از مقادیر FP4 با مقیاسهای بلوک دو سطحی، 4.25 بیت در هر وزن استفاده میکنند و برای دقت، هد LM را در int8 نگه میدارند. آنها بایت های هر توکن را حدود یک سوم کاهش می دهند و سرعت رمزگشایی را 40٪ (Qwen3.5) به 45٪ (Qwen3، LFM2) افزایش می دهند، با هزینه قابل اندازه گیری در گیجی که docs/quant.md برای هر مدل گزارش می دهد.
میزبان تقریبا از راه است. برای LFM2 و Qwen3 کارت یک برنامه رمزگشایی را اجرا میکند که یک بار کامپایل شده است، که موقعیت را از یک ثبات میخواند و ردیفهای تعبیهشده و RoPE خود را جستجو میکند، و در حالی که کارت هنوز در حال اجرا است، logits برمیگردد: میزبان 0.17 تا 0.30 میلیثانیه به هر توکن در omarchy (0.45 تا 0.45 میلیثانیه باز) اضافه میکند. Qwen3.5 به همین روش برای رمزگشایی اجرا می شود. پیش پر کردن آن هنوز هم برنامه هر بخش را در میزبان، قبل از کارت کامپایل می کند.
دستگاه عمدا ساده است. یک ترتیبدهنده یک دستور را در هر چرخه به چند واحد صادر میکند: DMA دادهها را جابهجا میکند، واحد ماتریس وزنهای int8 را که از DRAM جریان مییابد ضرب میکند، واحد برداری ریاضی fp32 را انجام میدهد و کوانتایزر نتایج را به int8 برمیگرداند. هیچ حافظه پنهان و زمانبندی پنهانی وجود ندارد: هر حرکت داده یک دستورالعمل است، بنابراین یک ردیابی دقیقا نشان میدهد که چرخهها کجا میروند. docs/isa.md کل مجموعه دستورالعمل را توصیف می کند.
از آنجا که هر حرکت داده یک دستورالعمل است، ردی از یک اجرا سرعت آن را توضیح می دهد. لنز، نمایهگر، یک اجرا را از RTL، شبیهساز یا کارت ضبط میکند و آن را با یک خط سقف، جدول زمانی و جداول هر دستورالعمل (docs/lens.md) در مرورگر باز میکند.
لنز در حال پخش بخشی از مرحله رمزگشایی Qwen3. رنگها نشان میدهند که هر واحد در هر چرخه چه کاری انجام میدهد: مشغول، منتظر روی DRAM یا انتظار برای دستورالعمل دیگری.
با یک کارت، بیت استریم را بسازید (بیت در تابلوها/ypcb-00338 بسازید)، آن را روی JTAG بارگذاری کنید، سپس sudo otpu-setup و otpu-chat --backend board را اجرا کنید. docs/board.md از طریق آوردن به بالا قدم می زند.
مشکلات و درخواست های کششی مورد استقبال قرار می گیرند، و بیشتر کارها فقط به پایتون و Verilator نیاز دارند، نه FPGA. تغییرات در ISA، شبیهساز یا RTL باید پایتون3 -m pytest -q را پاس کند و ادعاهای عملکرد باید نحوه اندازهگیری آنها را بیان کنند.
متن اصلی (انگلیسی)
OpenTPU – An open-source AI accelerator, developed by AI
Article URL: https://github.com/FeSens/openTPU Comments URL: https://news.ycombinator.com/item?id=49980715 Points: 210 # Comments: 275