🛠 بهینهسازی توکنایزر Unigram توسط Perplexity AI
شرکت Perplexity AI یک پیادهسازی جدید و متنباز از توکنایزر Unigram را منتشر کرده است که توانسته مصرف CPU را تا 5-6 برابر در محیط عملیاتی کاهش دهد. این بهبود عمدتاً به دلیل رفع گلوگاههای موجود در بخش توکنیزاسیون بوده است، نه خود مدل.
🔹 توکنیزاسیون CPU، نه مدل، گلوگاه اصلی بود، به خصوص برای مدلهای کوچکتر که زمان پردازش GPU آنها بسیار کوتاه است.
🔸 پیادهسازی مرجع دارای الگوهای پرهزینهای بود: بیش از 7000 تخصیص حافظه (heap allocation) برای هر encode و استفاده از HashMap در هر گره از ساختار Trie که منجر به افزایش نرخ miss در کش L2 میشد.
💡 با رفع مشکل تخصیص حافظه قبل از هرگونه تغییر در ساختار Trie، زمان پردازش از 326 میکروثانیه به 155 میکروثانیه کاهش یافت.
⚡ سه بهینهسازی کلیدی منجر به نتیجه نهایی شدند: استفاده از Double-array trie، بستهبندی دادهها با Bitmap و cache-line packing، و استفاده از huge pages (2MB) برای کاهش دسترسی به حافظه.
🚀 در نهایت، توکنایزر جدید Perplexity با حدود 63 میکروثانیه و بدون تخصیص حافظه، عملکردی 3.5 برابر بهتر نسبت به پیادهسازی Hugging Face (349 میکروثانیه و 7295 تخصیص) در پردازش 514 توکن نشان داد.
🔗 تحلیل کامل
🔗 مخزن GitHub
🔗 جزئیات فنی Perplexity
#خبر #PerplexityAI
شرکت Perplexity AI یک پیادهسازی جدید و متنباز از توکنایزر Unigram را منتشر کرده است که توانسته مصرف CPU را تا 5-6 برابر در محیط عملیاتی کاهش دهد. این بهبود عمدتاً به دلیل رفع گلوگاههای موجود در بخش توکنیزاسیون بوده است، نه خود مدل.
🔹 توکنیزاسیون CPU، نه مدل، گلوگاه اصلی بود، به خصوص برای مدلهای کوچکتر که زمان پردازش GPU آنها بسیار کوتاه است.
🔸 پیادهسازی مرجع دارای الگوهای پرهزینهای بود: بیش از 7000 تخصیص حافظه (heap allocation) برای هر encode و استفاده از HashMap در هر گره از ساختار Trie که منجر به افزایش نرخ miss در کش L2 میشد.
💡 با رفع مشکل تخصیص حافظه قبل از هرگونه تغییر در ساختار Trie، زمان پردازش از 326 میکروثانیه به 155 میکروثانیه کاهش یافت.
⚡ سه بهینهسازی کلیدی منجر به نتیجه نهایی شدند: استفاده از Double-array trie، بستهبندی دادهها با Bitmap و cache-line packing، و استفاده از huge pages (2MB) برای کاهش دسترسی به حافظه.
🚀 در نهایت، توکنایزر جدید Perplexity با حدود 63 میکروثانیه و بدون تخصیص حافظه، عملکردی 3.5 برابر بهتر نسبت به پیادهسازی Hugging Face (349 میکروثانیه و 7295 تخصیص) در پردازش 514 توکن نشان داد.
📌 جزئیات فنی: پیادهسازی جدید از ساختار Double-array trie استفاده میکند که به جای 4 بار بارگذاری وابسته در هر بایت، تنها به 2 بار خواندن آرایه و 1 اضافه کردن نیاز دارد.
📌 بهینهسازی حافظه: استفاده از 2MB huge pages باعث میشود کل Trie (50MB) در 25 صفحه قرار گیرد، در حالی که حالت قبل در 12000 صفحه پخش میشد و کاملاً در TLB (Translation Lookaside Buffer) جای میگیرد.
📌 مقایسه عملکرد: در تست با 514 توکن روی پردازنده Intel Xeon Platinum 8488C، توکنایزر Perplexity (حدود 63 میکروثانیه) از SentencePiece (128 میکروثانیه) و IREE (112 میکروثانیه) نیز سریعتر عمل کرد.
🔗 تحلیل کامل
🔗 مخزن GitHub
🔗 جزئیات فنی Perplexity
📊 Data➕Science — هوش مصنوعی و علم داده به فارسی
📩 ارتباط با ما
#خبر #PerplexityAI