2 வினாடிகளுக்குள் RL போஸ்ட்-டிரெய்னிங்கிற்கான எடை இடமாற்றம்
மிகவேகமான குறுக்கு-GPU மாதிரி ஒத்திசைவு
நாங்கள் சமீபத்தில் Kimi-K2 (1T அளவுருக்கள்) க்கான 1.3-வினாடி எந்திரங்களுக்கு இடையேயான அளவுரு புதுப்பிப்புகளை அடைந்துள்ளோம், 256 பயிற்சி GPU-க்களிலிருந்து (BF16) 128 அனுமான GPU-க்களுக்கு (FP8) எடைகளை மாற்றியுள்ளோம்.
ஒத்திசைவற்ற வலுவூட்டல் கற்றல் ஃபைன்-டியூனிங்கில், பயிற்சியும் அனுமானமும் தனித்தனி GPU-க்களில் இயங்குகின்றன. ஒவ்வொரு பயிற்சி படிநிலைக்குப் பிறகும், புதிய எடைகள் அனுமான முனைகளுக்குத் தள்ளப்பட வேண்டும். டிரில்லியன் கணக்கான அளவுரு மாதிரிகளுக்கு பல தற்போதைய கட்டமைப்புகள் பல வினாடிகள்—அல்லது நிமிடங்கள் கூட—எடுத்துக்கொள்கின்றன.
RDMA பாயிண்ட்-டூ-பாயிண்ட் தொடர்பு மூலம், அனுமான இயந்திரத்தை மாற்றாமல், எடை மாற்றத்தை மிக வேகமாகச் செய்ய முடிகிறது, மேலும் குறியீட்டை எழுதுவதற்கும் பராமரிப்பதற்கும் எளிதாக்குகிறது.
RDMA WRITE: ஒரு பக்க இடமாற்றங்கள்
எங்கள் தீர்வு RDMA WRITE இன் அடிப்படையில் கட்டமைக்கப்பட்டுள்ளது, இது மூலமானது நேரடியாக இலக்கின் GPU நினைவகத்தில் எழுதும் ஒரு பக்க ப்ரிமிடிவ் ஆகும்.
def rdma_write(src_ptr, dst_ptr, size, src_mr, dst_mr):
# Write from local [src_ptr, src_ptr+size) to remote [dst_ptr, dst_ptr+size).
# src_mr and dst_mr contains Memory Region metadata of both sides.
...இலக்கு தரப்பு இடமாற்றத்திற்கான அறிவிப்பைக் கூட பெறாது. இது அனுமான முனைகளில் எந்தக் கட்டுப்பாட்டு தர்க்கமும் இல்லாமல், பயிற்சி முனைகளால் இயக்கப்படும் குறைந்த தாமதம், உயர்-செயல்திறன், பூஜ்ஜிய-நகல் இடமாற்றங்களை நமக்கு வழங்குகிறது.
உயர் மட்ட பணிப்பாய்வு
மெட்டாடேட்டா சேகரிப்பு – கன்ட்ரோலர் அனைத்து பயிற்சி மற்றும் அனுமான GPU-க்களிலிருந்தும் அளவுரு மெட்டாடேட்டாவைச் சேகரிக்கிறது.
அட்டவணை கணக்கீடு – கன்ட்ரோலர் ஒரு நிலையான எடை இடமாற்ற அட்டவணையைக் கணக்கிடுகிறது, எந்த பயிற்சி GPU எந்த அளவுருவை எந்த அனுமான GPU க்கு அனுப்புகிறது மற்றும் என்ன வரிசையில் என்பதை மேப்பிங் செய்கிறது.
அட்டவணை விநியோகம் – கன்ட்ரோலர் அனைத்து பயிற்சி GPU-க்களுக்கும் அட்டவணையை அனுப்புகிறது.
செயல்படுத்தல் – ஒவ்வொரு பயிற்சி படியும் முடிந்ததும், கட்டுப்படுத்தி பயிற்சி GPUகள் மாற்றங்களைத் தொடங்கச் சிக்னல் அனுப்புகிறது.
எடை இடமாற்றச் செயல்படுத்துதல்
உயர் மட்ட பணிப்பாய்வு வரையறுக்கப்பட்ட நிலையில், டிரில்லியன் அளவுரு அளவில் எடை இடமாற்றங்களை திறம்பட எவ்வாறு செயல்படுத்துவது என்பதுதான் முக்கிய சவாலாகும். இங்கே நாம் செயல்படுத்துவதற்கான பாதையின் விவரங்களை விவரிக்கிறோம்.
DeviceMesh மற்றும் Mesh குழுக்கள்
பயிற்சியில் உள்ள அளவுருக்கள் FSDP இடங்களுக்கு ஏற்ப விநியோகிக்கப்படுகின்றன. full_tensor() ஐப் பயன்படுத்தி, DeviceMesh இல் உள்ள அனைத்து GPU-க்களும் முழு அளவுருவையும் மீண்டும் உருவாக்க முடியும், எனவே அனைத்துமே எடை மாற்றத்திற்கான மூலமாகச் செயல்படலாம்.
பல தனித்தனி DeviceMesh-கள் ஒரு மெஷ் குழுவை உருவாக்குகின்றன. ஒரே குழுவில் உள்ள DeviceMesh-கள் தனித்தனியாக இருப்பதால், அவற்றின் இடமாற்றங்கள் ஒன்றையொன்று பாதிக்காது மற்றும் முழுமையாக இணையாக இயங்கலாம். மெஷ் குழுக்களுக்கு இடையில், வரிசையைச் செயல்படுத்த உலகளாவிய தடை ஒன்றைச் செருகுகிறோம்.
பணி பைப்லைன்
ஒவ்வொரு அளவுரு டென்சரின் இடமாற்றத்தையும் ஒரு பணியாகக் கருதுகிறோம். எடை இடமாற்றச் செயல்முறை பல வகையான வன்பொருள் மூலங்களைப் பயன்படுத்துகிறது, எனவே நாங்கள் ஒரு எடை இடமாற்றப் பணியை வெவ்வேறு பைப்லைன் நிலைகளாகப் பிரிக்கிறோம், அவை நேரத்தில் மேற்பொருந்துகின்றன:
ஹோஸ்ட் முதல் சாதனம் வரை memcpy — FSDP எடையை CPU-க்கு ஆஃப்லோட் செய்தால்
அளவுரு தயாரிப்பு — full_tensor() மூலம் முழு எடையை மீண்டும் உருவாக்குதல், ப்ரொஜெக்ஷன் இணைப்பைப் பயன்படுத்துதல், தேவைப்பட்டால் குவாண்டமைஸ் செய்தல்.
RDMA இடமாற்றம் — தொலைநிலை அனுமான GPU நினைவகத்திற்கு பூஜ்ஜிய-நகல் எழுதுதல்
உலகளாவிய தடை — அனைத்து full_tensor() அழைப்புகளும் முடிந்ததும், ஈதர்நெட் வழியாக GLOO ஐப் பயன்படுத்தி மெஷ் குழுக்களில் ஒத்திசைக்கவும்.
செயல்படுத்தலில், ஒவ்வொரு பைப்லைன் நிலைக்கும் FIFO வரிசையைப் பராமரிக்கிறோம். வரிசையின் தலைப் பணி அந்த நிலையை முடிக்கும் போதெல்லாம், அது அடுத்த நிலை வரிசையின் முடிவுக்கு நகர்த்தப்படுகிறது.
GPU நினைவக பயன்பாட்டுக் கட்டுப்பாடு
full_tensor() மற்றும் பிற GPU செயல்பாடுகள் கூடுதல் GPU நினைவக பயன்பாட்டை அறிமுகப்படுத்துகின்றன. நினைவக பற்றாக்குறை பிழையைத் தவிர்ப்பதற்காக, தற்போதைய on-the-fly பணிகள் கட்டமைக்கக்கூடிய வாட்டர்மார்க்கை விட குறைவான தற்காலிக GPU நினைவகத்தை ஆக்கிரமித்திருந்தால் மட்டுமே ஒரு பணியின் செயலாக்கத்தைத் தொடங்குகிறோம்.
இது ஏன் வேகமானது மற்றும் எளிமையானது
பல வடிவமைப்புத் தேர்வுகள் பொதுவான ஓப்பன் சோடையூஉ தீர்வுகளை விட எங்கள் அமைப்பை இயக்க கணிசமாக வேகமானதாகவும் பராமரிக்க எளிதானதாகவும் ஆக்குகின்றன.
பாயிண்ட்-டூ-பாயிண்ட் தொடர்பு
அனைத்து அளவுருக்களையும் rank-0 GPU-க்கள் வழியாகச் செலுத்துவது ஒரு பொதுவான வடிவமாகும்: பயிற்சி rank-0 இல் சேகரித்து, அனுமான rank-0 க்கு அனுப்பி, பின்னர் மீண்டும் சிதறடிக்கவும். இது விரைவில் ஒரு நெரிசல் புள்ளியாக மாறுகிறது, இது ஒற்றை GPU-யின் PCIe அலைவரிசை மற்றும் NIC (எ.கா., 400 Gbps ≈ 50 GB/s) ஆகியவற்றால் வரம்பிடப்படுகிறது.
இதற்கு நேர்மாறாக, எங்கள் பாயிண்ட்-டூ-பாயிண்ட் அமைப்பு ஒவ்வொரு பயிற்சி GPU-வையும் ஒவ்வொரு அனுமான GPU-க்கும் நேரடியாக அனுப்ப அனுமதிக்கிறது, இது ஒற்றை இணைப்பைக் காட்டிலும் முழு நெட்வொர்க் ஃபேப்ரிக்-ஐயும் நிறைவு செய்கிறது.
ஒரு பக்க தரவு இடமாற்றம்
சில அமைப்புகள் ஒவ்வொரு டென்சருக்கும் அனுமான இயந்திரத்தின் update_weight() முறையை அழைப்பதை நம்பியுள்ளன. இதன் பொருள் அனுமானக் குறியீட்டில் ஊடுருவும் மாற்றங்கள், மேலும் RPC-கள், சீரியலைசேஷன் மற்றும் கன்ட்ரோல்-பிளேன் ஒருங்கிணைப்பு ஆகியவற்றிலிருந்து மேல்நிலை.
RDMA WRITE ப்ரிமிடிவ் மூலம், கூடுதல் நகல்கள் இல்லாமல், அனுமான GPU நினைவகத்தில் எடைகளை அமைதியாகப் புதுப்பிக்கிறோம். கன்ட்ரோல் பிளேன் செய்தி மற்றும் CPU கட்டுப்பாட்டு தர்க்கம் எதுவும் இதில் இல்லை. அனுமான இயந்திரத்தில் எந்த மாற்றமும் தேவையில்லை.
பைப்லைனிங்
எடை இடமாற்றச் செயல்முறை நான்கு வகையான வன்பொருள் வளங்களைப் பயன்படுத்தலாம்: (1) ஹோஸ்ட்-சாதன தரவு இயக்கம் (2) ப்ரொஜெக்ஷன் இணைவு மற்றும் குவாண்டமைசேஷனுக்கான GPU கணக்கீடு (3) தரவுத் தளத்திற்கான RDMA நெட்வொர்க் (4) கட்டுப்பாட்டுத் தளத்திற்கான ஈதர்நெட்.
எங்கள் வடிவமைப்பு எடை இடமாற்றப் பணிகளை பைப்லைன் நிலைகளாகப் பிரிக்கிறது, இது வெவ்வேறு வன்பொருள் வளங்கள் முழுவதும் எளிதாக மேற்பொருந்த அனுமதிக்கிறது.
நிலையான அட்டவணை
சில செயலாக்கங்கள் ஒவ்வொரு பயிற்சி படிநிலையிலும் இடமாற்ற அட்டவணையை மீண்டும் கணக்கிடுகின்றன, மீண்டுமாக மெட்டாடேட்டாவைச் சேகரித்து அறிவுறுத்தல்களை விநியோகிக்கின்றன. இது தேவையற்ற கன்ட்ரோல்-பிளேன் தாமதத்தைச் சேர்க்கிறது.
எங்கள் அட்டவணை தொடக்கத்தில் ஒருமுறை கணக்கிடப்படுகிறது. ஒவ்வொரு பயிற்சி இடரேஷனும் திட்டத்தை வெறுமனே மீளவாசிப்பதே: கட்டுப்படுத்தி “go” சிக்னலை அனுப்புகிறது, மேலும் GPUகள் தங்களுக்கு முன்கூட்டியே ஒதுக்கப்பட்ட பாதைகளைப் பின்பற்றுகின்றன. செயல்படுத்தல் கணிக்கக்கூடியதும் இலகுவானதும் ஆகும்.
சுத்தமான பிரிப்பு
முழு எடை புதுப்பிப்புச் செயலையும் ஒரு ஒற்றைக்கல்லான செயல்பாட்டில் இணைப்பது தூண்டக்கூடியது: மெட்டாடேட்டாவைச் சேகரித்தல், பெயர் பொருத்துதல், முனைகளுக்குள்ளான சேகரிப்பு, ப்ரொஜெக்ஷன் இணைவு, குவாண்டமைசேஷன், தொடர்பு உலகைச் சப்சிசிங் செய்தல், முனைகளுக்கு இடையேயான நெட்வொர்க் இடமாற்றம். இதை சரியாக நிரலாக்குவது கடினம், மேம்படுத்துவது அதைவிடக் கடினம்.
எங்கள் பொறியியலில், இந்த படிகளை தனிப்பட்ட கூறுகளாகப் பிரிக்கிறோம். ஒவ்வொரு கூறுகளையும் தனித்தனியாக அலகு சோதனை செய்யப்படலாம், பகுப்பாய்வு செய்யப்படலாம் மற்றும் உகந்ததாக்கப்படலாம்.
முடிவுரை
வேகமான, நம்பகமான எடை இடமாற்றம் என்பது பெரிய அளவிலான RL ஃபைன்-டியூனிங்கிற்கான ஒரு முக்கியமான கட்டடத் தொகுதியாகும். RDMA WRITE ப்ரிமிடிவ், ஒரு நிலையான இடமாற்ற அட்டவணை, மற்றும் பைப்லைன் செய்யப்பட்ட செயலாக்கம் ஆகியவற்றை இணைப்பதன் மூலம், Kimi-K2 இல் டிரில்லியன் அளவுரு புதுப்பிப்புகளை வெறும் 1.3 விடிகளாக குறைத்துள்ளோம். இந்த அணுகுமுறை பகுப்பாய்வு செய்ய எளிமையானது, பராமரிக்க எளிதானது மற்றும் பாரம்பரிய வடிவமைப்புகளின் தடைகளைக் தவிர்க்கிறது.
மேற்கோள்
@online{perplexity2025WeightTransferForRlPostTrainingInUnder2Seconds,
author = {{Perplexity} and Lequn Chen and Erin McKnight and Vivian Wang},
title = {{Weight transfer for RL post-training in under 2 seconds}},
date = {2025-09-24},
url = {https://www.perplexity.ai/hub/blog/weight-transfer-for-rl-post-training-in-under-2-seconds}
}