ஊகம் மூலம் Sonar-ஐ விரைவுபடுத்துதல்
வரைவு மாதிரி சரிபார்ப்பு மூலம் ஊக டிகோடிங் Sonar LLM-களை விரைவுபடுத்துகிறது
பெரிய மொழி மாதிரிகளின் (LLMs) உருவாக்கும் வேகத்தை ஊக டிகோடிங் விரைவுபடுத்துகிறது. பெரிய இலக்கு மாதிரியால் சரிபார்க்கப்படும் நிறைவு வேட்பாளர்களை உருவாக்க, விரைவான மற்றும் சிறிய வரைவு மாதிரியைப் பயன்படுத்துகிறது. இந்தத் திட்டத்தின் கீழ், விலை உயர்ந்த இலக்கின் ஒரு இயக்கம் ஒற்றைத் டோக்கனை உருவாக்குவதற்குப் பதிலாக, ஒரே படியில் பல உருவாக்கப்படுகின்றன. Sonar மாதிரிகளில் டோக்கன்களுக்கு இடைப்பட்ட தாமதத்தைக் குறைக்க Perplexity-ல் பயன்படுத்தப்படும் பல்வேறு வகையான ஊக டிகோடிங்கின் செயல்படுத்துதல் விவரங்களை இங்கே நாங்கள் வழங்குகிறோம்.
ஊக டிகோடிங்
டோக்கன் உருவாக்கத்தை விரைவுபடுத்த, ஊக டிகோடிங் என்பது இயற்கை மொழிகளின் கட்டமைப்பையும் டிரான்ஸ்பார்மர்களின் தன்னியக்க பின்னடைவு (auto-regressive) தன்மையையும் பயன்படுத்துகிறது. Llama-70B போன்ற பெரிய மாதிரிகள், Llama-1B போன்ற சிறிய மாதிரிகளை விட அதிக அறிவைக் கொண்டிருந்தாலும், சில எளிய பணிகளில் அவை ஒரே மாதிரியாகச் செயல்படுகின்றன. இந்த ஒன்றுடன் ஒன்று சேருவது சில வரிசைகளை விலை குறைவான மாதிரிகள் சிறப்பாக உருவாக்குகின்றன என்பதைப் பரிந்துரைக்கிறது, மேலும் சிக்கலான சிக்கல்களைப் பெரிய மாதிரிகளுக்கு விட்டுவிடுகிறது. எந்த முடிவுகள் சிறந்தவை என்பதையும், சிறிய மாதிரியின் உருவாக்கம் பெரிய மாதிரியின் தரத்திற்குச் சமமானதா என்பதையும் தீர்விடுவதில் சவால் உள்ளது.
அதிர்ஷ்டவசமாக, LLM-கள் தன்னியக்க பின்னடைவு டிரான்ஸ்பார்மர்கள் ஆகும்: டோக்கன்களின் வரிசை கொடுக்கப்படும்போது, அவை அடுத்த டோக்கனின் நிகழ்தகவு பரவலை வெளியிடுகின்றன. கூடுதலாக, உள்ளீட்டு வரிசையில் உள்ள டோக்கன்களுடன் தொடர்புடைய இடைநிலை அம்சங்களிலிருந்து பெறப்பட்ட லாஜிட்களும், அந்தத் துல்லியமான டோக்கன்களை மாதிரி வெளியிடுவதற்கான வாய்ப்பு எவ்வளவு என்பதைட்டுக் காட்டுகின்றன. இந்தப் பண்பு ஊகத்தை இயக்க உதவுகிறது: உள்ளீட்டு முன்னொட்டிலிருந்து தொடங்கி சிறிய மாதிரியால் டோக்கன்களின் வரிசை உருவாக்கப்பட்டால், இலக்கு மாதிரியுடன் அது எவ்வளவு நன்றாகப் பொருந்துகிற என்பதைத் தீர்மானிக்க அதை பெரிய மாதிரி மூலம் இயக்கலாம். வேட்பாளர்களின் ஒவ்வொரு முன்னொட்டியும் ஒரு நிகழ்தகவுடன் மதிப்பிடப்படுகிறது மற்றும் ஏற்பு வரம்புக்கு மேல் உள்ள நீண்டது தேர்ந்தெடுக்கப்படுகிறது. ஒரு போனஸாக, இலக்கு மாதிரி அடுத்தடுத்த டோக்கனை இலவசமாக வழங்குகிறது: வரைவு மாதிரி n டோக்கன்களை உருவாக்கினால், n + 1 வரை ஒரே படியில் வெளியிடப்படலாம்.
உள்ளீட்டு நேரத்தில், ஊக மாதிரி உருவாக்கும் செயல்முறையை தோராயமாக 4 நிலைகளாகப் பிரிக்கலாம்:
ப்ரீஃபில் (Prefill): KV கேச் உள்ளீடுகளை நிரப்ப இலக்கு மற்றும் வரைவு மாதிரிகள் இரண்டும் உள்ளீட்டு வரிசையில் இயக்கப்பட வேண்டும். மெடுசா (Medusa) போன்ற சில திட்டங்கள் முன்கணிப்புக்கு எளிய அடர்ந்த அடுக்குகளைப் பயன்படுத்தினாலும், இந்தப் பதிவில் நாங்கள் டிரான்ஸ்பார்மர் அடிப்படையிலான வரைவுகளில் கவனம் செலுத்துகிறோம், அவற்றுக்கு அவற்றின் சொந்த KV கேக்குகள் தேவைப்படுகின்றன.
வரைவு உருவாக்கம்: பல நிலையான டோக்கன்களை உருவாக்க வரைவு மாதிரி மீண்டும் மீண்டும் செயல்படுகிறது. வரைவு வரிசை நேர்கோட்டில் இருக்கலாம் அல்லது மாதிரி கொடுக்கப்பட்ட ஆழம் வரை (EAGLE, Medusa) மரம் போன்ற கட்டமைப்பை ஆராயலாம். இங்கே, நாங்கள் நேர்கோட்டு வரிசைகளில் கவனம் செலுத்துகிறோம்.
ஏற்பு: வரைவு வரிசையில் இலக்கு மாதிரி இயங்குகிறது, ஒவ்வொரு வரைவு டோக்கனுக்கும் ஏற்ப லாஜிட்களை உருவாக்குகிறது. ஏற்றுக்கொள்ளக்கூடிய நீண்ட வரிசையின் நீளம் தீர்மானிக்கப்படுகிறது.
இலக்கு உருவாக்கம்: இலக்கு லாஜிட்களை உருவாக்கியுள்ளதால், பொருந்தாத நிலையில் அல்லது வரிசையின் முடிவில் லாஜிக்குகள் அடுத்தடுத்த டோக்கனுடன் ஒத்திருக்கும். வரிசையை முடித்து வைக்க, இலக்கிலிருந்து வலுவான டோக்கனை வழங்க இந்த லாஜிட்கள் மாதிரி எடுக்கப்படலாம்.
ஊக டிகோடிங்கைச் செயல்படுத்த பல்வேறு முறைகள் உள்ளன. இந்தப் பதிவில், உள் 1B மாதிரியைப் பயன்படுத்தி Sonar மாதிரிகளை விரைவுபடுத்த நாங்கள் பயன்படுத்திய திட்டங்கள் மற்றும் DeepSeek அளவில் மாதிரிகளை விரைவுபடுத்த நாங்கள் உருவாக்கும் முன்கணிப்பு வழிமுறைகள் ஆகியவற்றில் கவனம் செலுத்துவோம்.
இலக்கு-வரைவு (Target-Draft)
வேட்பாளர் வரிசைகளை உருவாக்க இலக்கு மாதிரிக்கு வரைவு மாதிரியாக ஏற்கனவே இருக்கும் சிறிய LLM-ஐ இணைப்பதன் மூலம் ஊக டிகோடிங்கை அடையலாம். உற்பத்தியில், இலக்கின் அதே தரவுத்தொகுப்பில் ஃபைன்-டியூன் செய்யப்பட்ட Llama-1B மாதிரியைப் பயன்படுத்தி Sonar-ஐ விரைவுபடுத்தியுள்ளோம். இந்த அணுகுமுறை புதிதாக ஒரு வரைவைப் பயிற்றுவிக்கத் தேவையில்லை என்றாலும், சிறிய மாதிரி இன்னும் குறிப்பிடத்தக்க KV கேச் கொள்ளளவைப் பயன்படுத்துகிறது மற்றும் சிறிது ப்ரீஃபில் ஓவர்ஹெட்டை அறிமுகப்படுத்துகிறது, இதனால் TTFT அதிகரிக்கிறது.
இந்தத் திட்டத்தின் கீழ், டிகோட்-மட்டுமே உள்ள தொகுதிகளில் மட்டுமே டிகோடர் ஊகிக்கிறது, ப்ரீஃபில் அல்லது கலப்பு ப்ரீஃபில்-டிகோட் தொகுதிகளின் போது நிலையான மாதிரி உருவாக்கம் மூலம் டோக்கன்களை உருவாக்குகிறது. ப்ரீஃபில் கட்டத்தில், வரைவின் KV கேச்சில் புதிதாக உருவாக்கப்பட்ட டோக்கனை ப்ரீஃபில் செய்யவும் இலக்கு லாஜிட்கள் உடனடியாக மாதிரி எடுக்கப்படுகின்றன. வரைவு இன்னும் மாதிரி எடுக்கப்படவில்லை, ஆனால் அது உருவாக்கும் லாஜிக்குகள் டிகோட் கட்டத்திற்கு எடுத்துச் செல்லப்படுகின்றன.
டிகோட் செய்யும்போது, வரைவு மாதிரி முன்னேற்றப்பட்டு, ஒவ்வொரு கட்டத்திலும் மேல் டோக்கன் மாதிரி எடுக்கப்படுகிறது. விரும்பிய வரைவு நீளம் அடைந்தவுடன், ஏற்புச் சீர்ப்படுத்தி ஏற்றுக்கொள்ளப்பட்ட வரிசை நீளத்தை அடையாளம் காணும் லாஜிட்களை உருவாக்க இலக்கு மாதிரி மூலம் டோக்கன்கள் இயக்கப்படுகின்றன. வரைவு மற்றும் இலக்கின் முழு நிகழ்தகவு பரவல்களை ஒப்பிடுவதன் மூலம் ஏற்பு தீர்மானிக்கப்படுகிறது. ஏற்றுக்கொள்ளப்பட்ட வரைவு வரிசையைப் பின்பற்றி இலக்கு எப்போதும் ஒரு தொகுதி லாஜிட்களை வெளியிடுவதால், கூடுதல் வெளியீட்டை உருவாக்க அது மாதிரி எடுக்கப்படுகிறது. வரைவு மாதிரி இன்னும் அந்த ஏற்றுக்கொள்ளப்பட்ட டோக்கனைக் காணவில்லை என்பதால், அடுத்த டிகோட் படிநிலைக்குத் தயாராகும் வகையில் அதன் தொடர்புடைய KV கேச் உள்ளீடுகளை நிரப்ப அது மீண்டும் இயக்கப்படுகிறது, மேலும் லாஜிட்களை மீண்டும் எடுத்துச் செல்கிறது.
EAGLE
EAGLE என்பது ஊக டிகோடிங் திட்டமாகும், இது சாத்தியமான வரைவு டோக்கன்களின் மரப் போன்ற (tree-like) உலாவுதல் மூலம் உருவாக்கப்பட்ட பல வரைவு வரிசைகளை ஆராய்கிறது. நேர்கோட்டு வரிசையில் அதிக மதிப்பெண் பெறும் டோக்கனைப் பின்பற்றுவதற்குப் பதிலாக, ஒவ்வொரு முனையிலும் Top-K வேட்பாளர்களைக் கருத்தில் கொண்டு, வரைவு டோக்கன்களின் தொடர்ச்சியான செயலாக்கங்களைப் பயன்படுத்தி நிலையான (EAGLE) அல்லது மாறும் வடிவ (EAGLE-2) மரம் ஆராயப்படுகிறது. வரிசைகள் பின்னர் மதிப்பிடப்பட்டு, தொடர்வதற்கு பொருத்தமான நீண்ட வரிசை தேர்ந்தெடுக்கப்படுகிறது, மேலும் இலக்கிலிருந்து கூடுதல் டோக்கனும் இணைக்கப்படுகிறது.
மிகத் துல்லியமான முன்கணிப்பை அடைய, ஒரு EAGLE வரைவு மாதிரி டோக்கன்களின் அடிப்படையில் மட்டுமல்லாமல், இலக்கு மாதிரியின் இலக்கு அம்சங்கள் (கடைசி அடுக்கு மறைக்கப்பட்ட நிலைகள்) ஆகியவற்றைப் பயன்படுத்தியும் கணிக்கிறது. EAGLE இன் குறைபாடு என்னவென்றால், குறைந்த தாமத வரம்பிற்குள் பொருத்தமான வேட்பாளர்களை உருவாக்க போதுமான துல்லியமான தனிப்பயன், சிறிய வரைவு மாதிரிகளைப் பயிற்றுவிக்க வேண்டிய அவசியம் உள்ளது. பொதுவாக, வரைவு மாதிரி என்பது அசல் மாதிரியின் டிகோடர் அடுக்குக்கு ஒத்த ஒற்றை டிரான்ஸ்பார்மர் அடுக்கு ஆகும், இது அதன் உட்போதிப்புகள் (embeddings) மற்றும் lm_head கணிப்புகளுடன் இணைப்பதன் மூலம் இலக்குடன் இறுக்கமாக இணைக்கப்பட்டுள்ளது. இதற்கு குறைந்த KV கேச் கொள்ளளவு தேவைப்படுவதால், EAGLE குறைந்த நினைவகச் செயல்பாட்டைக் கொண்டுள்ளது.
இலக்கு மாதிரியில் மரம் போன்ற வரிசைகளைச் சரிபார்க்க, தனிப்பயன் கவன முகமூடுகள் (attention masks) பயன்படுத்தப்பட வேண்டும். துரதிர்ஷ்டவசமாக, முழு வரிசைக்கும் தனிப்பயன் கவன முகமூட்டைப் பயன்படுத்துவது யதார்த்தமான உள்ளீட்டு நீளங்களுக்கு கவனத்தை கணிசமாக மெதுவாக்குகிறது (50% வரை), ஊகம் மூலம் அடையக்கூடிய சில வேகத்தை இது ரத்து செய்கிறது. இந்த காரணத்திற்காக, முழு மர ஆய்வை நாங்கள் இன்னும் உற்பத்தியில் பயன்படுத்தவில்லை, அதற்கு பதிலாக DeepSeek-V3 தொழில்நுட்ப அறிக்கையில் வழங்கப்பட்ட MTP போன்ற திட்டங்கள் மூலம் ஒற்றை-டோக்கன் முன்கணிப்பின் சிறப்பு வழக்கில் கவனம் செலுத்துகிறோம்.
MTP
இந்தத் திட்டம் வரைவு-இலக்கு டிகோடிங்கைப் போன்றது, முன்கணிப்புக்கு டோக்கன்களுடன் மறைக்கப்பட்ட நிலைகளும் (hidden states) பயன்படுத்தப்படுகின்றன என்பதைத் தவிர. வழக்கமான வரைவு-இலக்கு ஊகத்துடன் ஒப்பிடும்போது ப்ரீஃபில் மற்றும் டிகோட் நிலைகள் இரண்டிலும் சற்று கூடுதல் வேலை செய்யப்பட வேண்டும். வரைவு மாதிரி டோக்கன்கள் மற்றும் மறைக்கப்பட்ட நிலைகள் இரண்டையும் பயன்படுத்துகிறது: டோக்கன் t_i உடன் தொடர்புடைய லாஜிட்கள் L_i இலிருந்து டோக்கன் t_{i+1} மாதிரி எடுக்கப்படுகிறது, அவை மறைக்கப்பட்ட நிலைகள் H_i இலிருந்து பெறப்படுகின்றன. இதன் விளைவாக, இலக்கு வெளியிட்ட மறைக்கப்பட்ட நிலை திசையன்களுடன் ஒப்பிடும்போது உள்ளீட்டு டோக்கன் பஃபர்கள் ஒரு படி இடதுபுறமாக மாற்றப்பட வேண்டும். பயிற்சிக்குப் பயன்படுத்தப்படும் தொடர்புகளையும், ஊகத்தின் போது ஏற்படும் மாற்றத்தையும் கீழே உள்ள படம் குறிக்கிறது.
டிகோடிங் ஓட்டம் வரைவு-இலக்கு டிகோடிங்கைப் போலவே உள்ளது, மறைக்கப்பட்ட நிலைகள் மற்றும் லாஜிட்கள் இரண்டும் எடுத்துச் செல்லப்படுவதைத் தவிர. எங்கள் செயல்படுத்தல் தொடர்புடைய அனைத்து மாதிரி எடுத்தல் மற்றும் லாஜிக் செயலாக்க லாஜிட்களையும் பகிர்ந்து கொள்கிறது, மாதிரி முன்னோக்கி அழைப்புகளை மட்டும் பிரத்தியேகமாகச் செய்கிறது. பல டோக்கன்கள் கணிக்கப்படும் போது, வரைவு மாதிரி முன்கணிப்புக்கு வரைவு மறைக்கப்பட்ட நிலைகளைப் பயன்படுத்துகிறது, மேலும் அதன் சொந்த அம்சங்களின் அடிப்படையில் KV கேச் உள்ளீடுகளையும் நிரப்புகிறது. நீண்ட காலத்திற்கு, இது துல்லியத்தைக் குறைக்கலாம். அதைத் தொடர்ந்து, இலக்கு முன்கணிப்புக்கான KV கேச் உள்ளீட்டை நிரப்ப வரைவு மாதிரியை இயக்கும்போது, மிகவும் துல்லியமான இலக்கு மறைக்கப்பட்ட நிலைகளை உள்ளீடுகளாக எடுத்துக்கொண்டு முழு வரிசையிலும் அதை இயக்குகிறோம். இந்த வரைவு மாதிரிகள் சிறியவை என்பதால், கூடுதல் டோக்கன்களை செயலாக்குவதற்கான கூடுதல் செலவு மிகக் குறைவு.
MTP தலைகளைப் பயிற்றுவித்தல் (Training MTP Heads)
MTP-யிலிருந்து பயனடைய, Perplexity இன் தரவுத்தொகுப்புகளில் எங்கள் ஃபைன்-டியூன் செய்யப்பட்ட மாதிரிகளுடன் இணைக்கப்பட்ட MTP தலைகளைப் பயிற்றுவிக்கத் தேவையான உள்கட்டமைப்பை நாங்கள் உருவாக்கினோம், இது 8xH100 சாதனங்களைக் கொண்ட ஒரு முனையில் இயங்குகிறது. ஏறக்குறைய ஒரு நாளில், Llama-1B முதல் Llama-70B மற்றும் DeepSeek V2-Lite வரையிலான மாதிரிகளுக்கான தலைகளை நம்மால் உருவாக்க முடியும். பெரிய மாதிரிகளுக்கு, ஃபைன்-டியூன் செய்யும் செயல்பாட்டின் போது உருவாக்கப்பட்ட MTP தலைகளை நாங்கள் நம்பியுள்ளோம்.
MTP பயிற்சியின் இலக்கு என்னவென்றால், இலக்கு மறைக்கப்பட்ட நிலைகளிலிருந்து வெளிப்படுத்தப்பட்ட வரைவு மறைக்கப்பட்ட நிலைகளையும் லாஜிட்களையும், அடுத்த டோக்கன் லாஜிட்கள் மற்றும் இலக்கின் மறைக்கப்பட்ட நிலைகளுடன் பொருத்துவதாகும். மறைக்கப்பட்ட நிலைகளுக்கான ஊகம் விலை உயர்ந்தது என்பதால், பயிற்சியின் போது பயன்படுத்துவதற்காக இலக்கு மாதிரியின் ஊக-உகந்த செயல்படுத்தலைப் பயன்படுத்தி அவற்றை முன்பே கணக்கிடுகிறோம். இருப்பினும், ஊக MTP செயல்படுத்தலைச் சரிபார்க்கவும், குவாண்டமைசேஷன் அல்லது உகப்பாக்கங்கள் காரணமாக ஏற்படும் எண் வேறுபாடுகள் முடிவுகளைத் தடுக்காது என்பதை உறுதிப்படுத்தவும், சரிபார்ப்பு இழப்பு மற்றும் துல்லியமான மதிப்பீட்டிற்கு இலக்கு மற்றும் வரைவு மாதிரிகள் இரண்டின் ஊகச் செயலாக்கத்தை நாங்கள் முழுமையாக மீண்டும் பயன்படுத்துகிறோம்.
அசல் தாளில் பயன்படுத்தப்பட்ட ShareGPT தரவுத்தொகுப்பிலிருந்து பெரிய மாதிரிகளுக்கு அளவிடும் போது, EAGLE தாளில் கோடிட்டுக் காட்டப்பட்டு செயல்படுத்தப்பட்ட MTP தலை கட்டமைப்பு 70B அளவுள்ள மாதிரிகளுக்குப் பயிற்றுவிக்கத் தவறியதை நாங்கள் கவனித்தோம். பெரிய எண்ணிக்கையிலான குறுகிய வரிசைகளைக் கொண்டிருந்த ShareGPT ஐப் போலன்றி, நாங்கள் சற்று குறைவான எண்ணிக்கையிலான கணிசமாக நீண்ட ப்ராம்ப்ட்களில் பயிற்சி செய்கிறோம். அசல் EAGLE தலைகள் வழக்கமான டிரான்ஸ்பார்மரிடமிருந்து கட்டமைப்பில் சிறிது வேறுபட்டிருந்ததால், அகற்றப்பட்ட சில RMS இயல்பாக்க அடுக்குகளை (RMS Normalization layers) நாங்கள் மீண்டும் அறிமுகப்படுத்தினோம். இது பயிற்சி ஒன்றிணைய அனுமதிக்கிறது மட்டுமல்லாமல், தலைகளின் துல்லியத்தை சில சதவீத புள்ளிகளால் அதிகரிப்பதையும் நாங்கள் கண்டறிந்தோம்.
அடுக்கு இயல்பாக்கங்கள் பயிற்சியை எளிதாக்குவது மட்டுமல்லாமல், இயல்பாக்கங்களை மீண்டும் அறிமுகப்படுத்துவது கணித ரீதியாகவும் உள்ளுணர்வுடன் கூடியது. MTP தலைகள் இலக்கு மாதிரியின் உட்போதிப்புகள் மற்றும் லாஜிக் கணிப்புகளை மீண்டும் பயன்படுத்துகின்றன, ஏனெனில் அவை அளவில் கணிசமானவையாக இருக்கலாம் (Llama 70B-க்கு தோராயமாக 2 GB). பயிற்சியின் போது, இவை முடக்கப்படுகின்றன, மேலும் அசல் மாதிரியின் கணிப்பு அடுக்கு பயிற்சியின் போது கற்றுக் கொண்ட அதே திசையன் ஸ்பேஸில் (vector space) கணிப்புகளை உட்போதிக்க MTP அடுக்கு கற்றுக்கொள்கிறது என்று எதிர்பார்க்கப்படுகிறது. இயல்பாக்கங்களை விடுவதன் மூலம், ஒரு ஒற்றை MLP ஆனது இயல்பாக்கத்தைத் தொடர்ந்து வரும் MLP போன்ற அதே செயல்பாட்டைக் கற்றுக் கொள்ளும் என்று எதிர்பார்க்கப்படுகிறது, இது வரைவு மற்றும் இலக்கு மாதிரிகளின் மறைக்கப்பட்ட நிலைகளுக்கு இடையிலான பொருத்தத்தைத் தடுக்கிறது.
ஊக டிகோடிங்குடன் கூடிய ஊகம் (Inference)
ஊக எஞ்சினில், உள்ளீட்டு வரிசைகளுக்கான டோக்கன்களை உருவாக்க, அவை முதலில் நியாயமான அளவிலான தொகுதிகளாகக் குழுவாக்கப்பட வேண்டும், பின்னர் அடுத்த டோக்கன்களுக்காக KV கேச்சில் பக்கங்கள் ஒதுக்கப்பட வேண்டும். உள்ளீட்டு டோக்கன்கள் மற்றும் KV பக்கத் தகவல் பின்னர் மாதிரியை இயக்கும் அனைத்து இணை வரிசைகளுக்கும் ஒளிபரப்பப்படும் பஃபரில் தொகுக்கப்படுகின்றன. இறுதியாக, மெட்டாடேட்டா GPU நினைவகத்தில் நகலெடுக்கப்படுகிறது மற்றும் அடுத்த டோக்கன் மாதிரி எடுக்கப்படும் லாஜிட்களை உருவாக்க மாதிரி செயல்படுத்தப்படுகிறது.
வழக்கமான செயலாக்கங்களைப் போலன்றி, வரைவு மற்றும் இலக்கு ஊக சேவையகத்தை அவற்றுக்கிடையேயான கோரிக்கைகளை ஒழுங்குபடுத்தும் ரேப்பர் மூலம் தளர்வாக இணைக்கும் சில செயலாக்கங்களைப் போலன்றி, எங்கள் வரைவு-இலக்கு ஜோடிகள் இறுக்கமாக இணைக்கப்பட்டு உருவாக்கத்தின் மூலம் ஒரே நேரத்தில் செயல்படுகின்றன. அனைத்து வகையான ஊக டிகோடிங்கிற்கும் மாதிரி திட்டமிடல் மற்றும் KV பக்க ஒதுக்கீடு ஆகியவை மாதிரிகளுக்கு இடையில் பகிரப்படுகின்றன: இது ஒரு மாதிரியை பரந்த ஊக சேவையகத்துடன் இணைக்கும் தர்க்கத்தை ஒருங்கிணைக்கிறது, ஏனெனில் அவை அனைத்தும் ஒரே இடைமுகத்தை வெளிப்படுத்துகின்றன.
Perplexity-ல் உள்ள ஊக ரன்டைம் (runtime) FlashInfer-ஐ மையமாகக் கொண்டுள்ளது, இது கவன கர்னலை (attention kernel) கட்டமைக்கவும் திட்டமிடவும் உருவாக்கப்பட வேண்டிய மெட்டாடேட்டாவைத் தீர்மானிக்கிறது. ஒரு தொகுதியை உருவாக்கும் சில உள்ளீட்டு வரிசைகள் கொடுக்கப்பட்டால், ப்ரீஃபில், டிகோட் அல்லது சரிபார்ப்புக்கு, இடைநிலை பஃபர்களை ஒதுக்க மற்றும் கவனத்தில் பயன்படுத்தப்படும் சில மாறிலி பஃபர்களை நிரப்ப CPU பக்க வேலை செய்யப்பட வேண்டும். இந்த வேலை தொகுதி திட்டமிடல் மற்றும் KV பக்க ஒதுக்கீட்டின் செலவுடன் கூடுதலாக உள்ளது, இது GPU பயன்பாட்டை அதிகரிக்க மறைக்கப்பட வேண்டிய தாமதங்களையும் ஏற்படுத்துகிறது.
ஊகம் இல்லாமல் ஊகத்திற்குக் CPU-பக்க மற்றும் GPU-பக்க வேலையை நாங்கள் முழுமையாக இணைத்திருந்தாலும், ஊக டிகோடிங்கிற்கான CPU-GPU சமநிலை மிகவும் சிக்கலானது என்பதைக் கண்டறிந்தோம். ஏற்றுக்கொள்ளப்பட்ட டோக்கன்களின் எண்ணிக்கை அடுத்தடுத்த இயக்கத்திற்கான வரிசை நீளத்தைத் தீர்மானிக்கிறது என்பதிலிருந்து முக்கிய சவால் எழுகிறது, இது தவிர்க்க கடினமான GPU-to-CPU ஒத்திசைவு புள்ளியை அறிமுகப்படுத்துகிறது. CPU வேலையின் தாமதத்தை மிகச் சிறப்பாக மறைக்க பல்வேறு திட்டமிடல் திட்டங்களுடன் பரிசோதனை செய்தோம்.
வரைவு-இலக்கு அட்டவணை (Draft-Target Schedule)
இலக்கு மாதிரியை விடச் சிறியதாக இருந்தாலும், முழு LLM-ம் வரைவாகப் பயன்படுத்தப்படும்போது, அது இன்னும் GPU-வில் குறிப்பிடத்தக்க தாமதத்தை ஏற்படுத்துகிறது, விலையுயர்ந்த CPU செயல்பாடுகளை மறைக்க சில ஹெட்ரூமை வழங்குகிறது. சிறிய மாதிரிகள் டென்சார் இணக்கத்தன்மையிலிருந்து (tensor parallelism) பயனடையாது என்பதால், இலக்கு மற்றும் வரைவு பிரிக்கப்பட்டுள்ள (sharded) வரிசைகளின் எண்ணிக்கைக்கு இடையில் பொருந்தமின்மை உள்ளது. எங்கள் செயலாக்கத்தில், வரைவு மாதிரி TP குழுவின் லீடர் ரேங்கில் மட்டுமே இயங்கும்.
முன்னர் சுட்டிக்காட்டியபடி, ஒரு டிகோட் படிநிலையானது லாஜிட்களை அடுத்த இயக்கத்திற்கு எடுத்துச் செல்கிறது. வரைவு மாதிரியின் ஒரு செயலாக்கத்தை CPU-பக்க தொகுதி திட்டமிடல் வேலையுடன் ஒன்றுடன் ஒன்று இணைக்க இது நம்மை அனுமதிக்கிறது. தொகுதி ஒன்றாக வைக்கப்பட்ட பிறகு, மாதிரி எடுப்பான் (sampler) மற்றும் வரைவுக்கான தொடர்ச்சியான அழைப்புகள் வரைவு டோக்கன்களை உருவாக்குகின்றன. இணையாக, சரிபார்ப்புக்கான தொகுதி இலக்கு மாதிரிக்கு ஒன்றாக வைக்கப்பட்டு இணைப் பணியாளர்களுடன் ஒத்திசைக்கப்படுகிறது. ஏற்றுக்கொள்ளப்பட்ட வரிசை நீளங்களைத் தீர்மானிக்க இலக்கு லாஜிட்கள் சரிபார்க்கப்பட்டு மாதிரி எடுக்கப்படுகின்றன. இந்த கட்டத்தில், அடுத்தடுத்த வரிசை நீளங்களைத் தீர்மானிக்க GPU-to-CPU ஒத்திசைவு அவசியமாகும். வரைவு மாதிரி லீடர் நோடில் மட்டுமே இயக்கப்படுவதால், அதன் தொகுதி தொடர்ச்சியாக அமைக்கப்பட்டு, இலக்கு உருவாக்கிய கூடுதல் டோக்கனுடன் அதன் KV கேச் உள்ளீடுகளை நிரப்ப அதன் செயலாக்கம் தொடங்கப்படுகிறது. தற்போதைய இயக்கத்தில் இந்த வரைவு இயக்கத்தால் உருவாக்கப்பட்ட லாஜிக்குகள், அடுத்தடுத்த இயக்கத்தில் முதல் வரைவு டோக்கனை மாதிரி எடுக்கப் பயன்படுத்தப்படும். மிக முக்கியமாக, வரைவு இயங்கிக் கொண்டிருக்கும் போது, அடுத்த தொகுதியை திட்டமிடலாம்.
ஒற்றை டோக்கனுக்கான MTP அட்டவணை (MTP Schedule for a Single Token)
ரன்டைம் இன்னும் ஈகிள்-பாணி (Eagle-style) வரைவு மர ஆய்வை வழங்கவில்லை என்றாலும், ஒற்றை டிரான்ஸ்பார்மர் டிகோடர் அடுக்கின் அளவுள்ள மாதிரியால் உருவாக்கப்பட்ட வரைவு டோக்கன்களின் நேர்கோட்டு வரிசையைக் கருத்தில் கொண்டு, இந்தத் திட்டத்தின் சிறப்பு வழக்கை நாங்கள் செயல்படுத்தினோம். DeepSeek R1 இன் ஓப்பன் சோர்ஸ் எடைகளைப் பயன்படுத்தி வரைவு முன்கணிப்புக்கு இந்தப் திட்டத்தைப் பயன்படுத்தலாம். ஒற்றை டோக்கனைக் கணிக்கும் துணை வழக்கு சுவாரஸ்யமானது, ஏனெனில் பெரிய MTP அடுக்குகள் அவற்றின் ஓவர்ஹெட்டை நியாயப்படுத்த போதுமான உயர் ஏற்பு விகிதங்களை அடைகின்றன.
MTP திட்டமிடல் மிகவும் சிக்கலானது, ஏனெனில் வரைவு மாதிரி மிகவும் வேகமானது, குறைந்த CPU-பக்க தாமதத்தை மறைக்கிறது. கூடுதலாக, வரைவு இலக்கு மாதிரியுடன் சேர்த்து பிரிக்கப்பட்டுள்ளது (sharded), தொகுதி தகவலுக்கு பகிரப்பட்ட நினைவக இடமாற்றங்கள் தேவைப்படுகின்றன. முந்தைய திட்டத்தைப் போலவே, தொகுதித் தகவலை மாற்றுவதன் மூலமும், கேரி-ஓவர் லாஜிட்களிலிருந்து முதல் டோக்கனை மாதிரி எடுப்பதன் மூலமும் ஒரு இயக்கம் தொடங்குகிறது. அடுத்து, டோக்கன்களைச் சரிபார்க்க இலக்கு இயக்கப்படுகிறது, D என்பது டிகோட் தொகுதி அளவு ஆகும், இது 2 * D டோக்கன்களை செயலாக்குகிறது. உள்கட்டமைப்புகளை விட மெதுவான இன்ஃபினிபேண்ட் (InfiniBand) போன்ற இணைப்புகளில் கலவை-நிபுணர் (MoE) மாதிரிகளில் மைக்ரோ-பேட்சிங்கிற்கு இது சரியானது, ஏனெனில் தொகுதி சமமாக இரண்டு பாதிகளாகப் பிரிகிறது. இலக்கின் மறைக்கப்பட்ட நிலைகள் அடுத்த வரைவு இயக்கத்திற்கு எடுத்துச் செல்லப்படுகின்றன, அதே நேரத்தில் சரிபார்ப்பதற்காக லாஜிக்குகள் மாதிரி எடுப்பானுக்கு அனுப்பப்படுகின்றன.
GPU-வில் குறைந்த அளவு கூடுதல் வேலை செய்வதன் மூலம், டிராஃப்ட் வரிசை ஏற்றுக்கொள்ளப்பட்ட பின் CPU-இலிருந்து GPU-க்கு ஒத்திசைவைத் தவிர்க்கிறோம். இலக்குகளின் உள்ளீட்டு டோக்கன்கள் நகர்த்தப்பட்ட பிறகு, ஒரு kernel அடுத்த இலக்கு டோக்கன்களை அவற்றின் தொடர்புடைய இடங்களில் செருகுகிறது. பின்னர் டிராஃப்ட், இலக்குடன் ஒரே batch தகவலுடன் மீண்டும் இயக்கப்படுகிறது; KV cache பதிவுகளை நிரப்பி, அடுத்த இயக்கத்திற்கான logits மற்றும் hidden states-ஐ உருவாக்குகிறது, ஏற்றுக்கொள்ளப்படாத டோக்கன்களில் சில மீள்செயல் பணியைச் செய்கிறது. இவ்வகை சூழல்களில், டிராஃப்ட் மாடல் சிறிய அளவிலிருப்பதால் பயன்படுத்தப்படாத பணியின் latency கிட்டத்தட்ட அளவிட முடியாததாக இருக்கும். டிராஃப்ட் இயக்கத்துடன் இணையாக, sequence lengths CPU-வில் தீர்மானிக்கப்படுகின்றன, மேலும் GPU பணி முடிவடைய காத்திருக்காமல் அடுத்த batch-இன் scheduling தொடங்கப்படுகிறது.
கவனத்தில் வரைவு அடுக்கில் கூடுதல் வேலையின் ஓவர்ஹெட் கவனிக்கத்தக்கதல்ல, இருப்பினும் MLP அடுக்குகள் மிகவும் சிக்கலானவை. டோக்கன்களின் எண்ணிக்கையின் பரிமாணத்துடன் 64 இன் எல்லைக்கு மேட்ரிக்ஸ் பெருக்கல் அறிவுறுத்தல்கள் பேட் (pad) செய்வதால், இரட்டிப்பாக்குவதற்கு கணிசமாக அதிக தொகுதிகள் தேவையில்லை என்றால், ஓவர்ஹெட் மறைக்கப்படுகிறது. நீண்ட வரைவு வரிசைகளுக்கு ஓவர்ஹெட் மிகவும் விலை உயர்ந்தது மற்றும் வழக்கமான வரைவு-இலக்கு மாதிரிகளுக்குப் பயன்படுத்தப்படும் திட்டம் சிறப்பாகச் செயல்படுகிறது.
குறிப்புகள் (References)
அடுக்கு இயல்பாக்கம் (Layer Normalization)
DeepSeek-V3 தொழில்நுட்ப அறிக்கை (DeepSeek-V3 Technical Report)
மேற்கோள்
@online{perplexity2025AcceleratingSonarThroughSpeculation,
author = {{Perplexity} and Nandor Licker and Erin McKnight},
title = {{Accelerating Sonar through speculation}},
date = {2025-06-10},
url = {https://perplexity.coolkeypoint.com/hub/blog/accelerating-sonar-through-speculation}
}