ساختن یه توکنایزر بهینه برای مدلهای زبانی
خلاصهٔ کاملتر
توکنایزر چیزیه که متن رو به دنبالهٔ عددهایی به اسم توکن تبدیل میکنه؛ هر توکن به یه رشته از بایتها اشاره میکنه که معمولاً به کلمههای پرتکرار میخورن. این نگاشت توکن به بایت، یعنی «واژگان» (vocabulary)، قبل از اینکه اصلاً مدل آموزش ببینه ثابت میشه و هدف اینه که یه واژگان با اندازهٔ معین انتخاب بشه که داده رو با کمترین تعداد توکن کد کنه. روش غالب برای این کار byte-pair encoding (BPE) هست که یه الگوریتم فشردهسازی حریصانه و قدیمیه.
به گفتهٔ نویسنده، در یه مقالهٔ اخیر، Tempus و همکاران توکنسازی رو به برنامهریزی خطی عددصحیح (ILP) وصل کردن. تو این مدل برای هر زیررشتهٔ یکتای داده یه متغیر «رنگ» (color) هست که میگه اون رشته تو واژگان هست یا نه، و برای هر بار تکرار یه رنگ هم یه متغیر «یال» (edge) که نشون میده اون توکن دقیقاً تو همون جا استفاده شده یا نه. هدف، کمکردن مجموع یالهاست، یعنی کل تعداد توکنها. چون حل ILP دلخواه بهصرفه نیست، اونا مسئله رو به یه LP پیوسته شل (relax) میکنن، ولی جواب LP پیوسته معمولاً عددصحیح نیست و باید گرد بشه که جواب رو زیربهینه میکنه.
نویسنده میگه چون قبلاً روی مسئلهٔ فروشندهٔ دورهگرد (TSP) کار کرده، به این فکر افتاده که همون ترفند cutting plane رو روی ILP توکنسازی پیاده کنه. ایده اینه: اول LP رو حل میکنیم تا یه کران بالا و پایین بگیریم، بعد مدام قید (constraint) معتبر اضافه میکنیم و دوباره حل میکنیم تا این دو کران به هم برسن و جواب بهینه پیدا بشه. قید معتبر یعنی قیدی که هیچوقت توسط جوابهای عددصحیح واقعی نقض نمیشه ولی جواب کسری فعلی رو نقض میکنه.
نویسنده تعریف میکنه که این کار رو به Codex سپرده. اولش Codex چیز خاصی پیدا نکرد، ولی بعد با روش جستجوی فراگیر (brute force) قیدهای خوبی پیدا شد که خیلی کند بود. ترفند بعدی این بود که Codex به خود قیدهای پیداشده نگاه کنه و الگوهای کارآمدتری در بیاره. مؤثرترین خانوادهای که Codex بهش رسید چیزیه که خودش اسمش رو «قیدهای چرخه» (cycle constraints) گذاشته: یه گراف میسازه که گرههاش رنگها هستن و هر جفت رنگی که بهصورت یال کسری با هم تداخل دارن رو وصل میکنه، بعد با DFS دنبال چرخه میگرده و از اون چرخه یه قید معتبر میسازه.
نویسنده میگه از نظر سختافزاری محدود بوده و فقط با Mac Studio و Mac mini کار کرده، برای همین بیشتر روی solver تکهستهای HiGHS تکیه کرده و سراغ کتابهای تکی رفته تا LPها کوچیک بمونن. نتیجهٔ اصلی که بهش افتخار میکنه یه توکنایزر بهینهٔ اثباتشده با اندازهٔ واژگان ۵۱۲ برای کتاب «غرور و تعصب» (Pride and Prejudice) بوده که تو حدود یه دوجین تکرار و کمی بیشتر از یه روز همگرا شده. برای واژگان ۱۰۲۴ هنوز قیدهای چرخه بهتنهایی کافی نبودن.
خود نویسنده تأکید میکنه این نتیجه باحاله ولی لزوماً کاربردی نیست: روشهای فعلی همین الان هم اغلب تا حدود ۱٪ به بهینه نزدیکن، توکنایزر بهینه روی دادهٔ آموزش ممکنه روی دادهٔ تست خوب جواب نده، و در عمل میشه ناکارآمدی توکنایزر رو با کمی بزرگکردن واژگان جبران کرد. به گفتهٔ نویسنده گلوگاه اصلی، کندی حل LP هست و دوست داره بقیه این کار رو روی متنهای بزرگتر ادامه بدن. کد پروژه هم روی GitHub موجوده.
نکات کلیدی:
- توکنسازی بهینه از نظر تئوری حلنشدنیه ولی در عمل تو بعضی حالتها قابلحله
- ایدهٔ اصلی: مدلکردن توکنسازی بهصورت ILP با متغیرهای «رنگ» و «یال»
- تکنیک cutting plane از مسئلهٔ TSP قرض گرفته شده تا کران بالا و پایین به هم برسن
- Codex با کمی راهنمایی، خانوادهٔ «قیدهای چرخه» رو پیدا و پیاده کرد
- نتیجهٔ شاخص: توکنایزر بهینه با واژگان ۵۱۲ برای کتاب «غرور و تعصب»
- نویسنده میگه نتیجه باحاله ولی خیلی کاربردی نیست، چون روشهای فعلی همین الان هم نزدیک بهینهن




