Tymbal: مُصنِّع عصبي على شريحة واحدة
Tymbal هو مُصنِّع متعدد الأصوات في الوقت الفعلي يعمل على متحكم STM32N657 واحد (Cortex-M55 + Neural-ART NPU). يستخدم شبكة عصبية TCN كمحسّن متبقي لإضافة طابع غير خطي إلى هيكل توافقي حتمي، كل ذلك ضمن ميزانيات دورة صارمة وبدون أي نقص في التشغيل. يوضح المشروع تحسينات واسعة النطاق، من تحويلات الرسم البياني إلى إدارة الذاكرة، لتحقيق الأداء النهائي في الوقت الفعلي على الجهاز.
Tymbal هو مُركِّب صوتي实时 متعدد الأصوات على لوحة NUCLEO-N657X0-Q واحدة (STM32N657: Cortex-M55 بتردد 800 ميجاهرتز + NPU Neural-ART)، يتم التحكم فيه عبر لوحة مفاتيح MIDI، مع مخرج I2S-DAC. يتم حساب الصوت في كتل زمنية مقدارها 4 ملي ثانية؛ عند 800 ميجاهرتز، هذا يعني 3.2 مليون دورة لكل خطوة لكل شيء: الأصوات، التركيب التوافقي، الشبكة العصبية، بنك المرشحات، إزالة التوافق (detune)، والـ limiter، مع عدم حدوث أي underruns. البنية تستخدم نطاقًا رباعي النطاقات PQMF (12 كيلو هرتز لكل نطاق) لتقليل التكلفة وإعطاء الشبكة مدخلًا مضغوطًا. يتم تقديم الهيكل التوافقي مباشرة إلى النطاقات الفرعية باستخدام استجابات مرشحات معقدة، مع طبقة مضادة لصوت الشرائح (auto-unison، spectral bloom، micro-drift). شبكة TCN سببية تحتوي على 12 طبقة، توسعات 1..32، وC=88 قناة، تعمل على NPU كمحسِّن متبقٍّ، ومكممة إلى int8 عبر PTQ. النقطة الأساسية كانت أن شبكةً درِّبت بشكل ساذج على التنبؤ بالمتبقي تخسر أمام مرشح FIR خطي من 520 معاملًا؛ الحل كان تجميد الجزء الخطي كـ "طبقة صفر" (pred = FIR(x) + net(x))، بحيث تتعلم الشبكة المتبقي اللاخطي فقط. التقييم النهائي: FIR وحده يعطي تثبيطًا بمقدار +11.25 ديسيبل، FIR+net fp32 يعطي +17.16، وint8 يعطي +16.89، مع مساهمة الشبكة بمقدار +5.64 ديسيبل. تضمنت نتائج التشغيل المكثفة اكتشافات مثل محتوى عشوائي في ECC بعد إعادة الضبط، وبنوك AXISRAM معطلة، ومشاكل في مسار ذاكرة NOR-flash، وقسمة ساعة NPU غير صحيحة (400 بدلًا من 800 ميجاهرتز)، وتأكيدًا خاطئًا. بدأ تحسين الميزانية من 4.18 مليون دورة لكل خطوة، ووصل أخيرًا إلى 2.47 مليون في أسوأ حالة للوتر، مع صفر underruns. تضمنت التقنيات حلقة قياس (مقارنة دورات QEMU مع اللوحة)، وتحليل فترات NPU، والضخ (استدعاءات NPU غير المحظورة متداخلة مع العرض)، ونقل الجداول الساخنة إلى DTCM، ونسخ الذاكرة المبني على MVE لحلقة الحالة.
المصدر: Habr — хаб ML —
الأصلي
