AWS Sagemaker Hyperpod-ல் உயர்-செயல்திறன் GPU நினைவகப் பரிமாற்றம்

3200 Gbps நோக்கிய பயணம்

ஆசிரியர்கள்Perplexity Research

நவீன டீப் லேர்னிங் உள்கட்டமைப்பிற்கு பெரும்பாலும் கணினிகள் முழுவதும் உள்ள GPU-க்களுக்கு இடையில் அதிக அளவு தரவுகளை மாற்ற வேண்டியுள்ளது. Perplexity-ல், நாங்கள் ஒரு தனித்துவமான தொழில்நுட்ப சவாலை எதிர்கொண்டோம்: கணினிகளுக்கு இடையில் தொடர்ச்சியற்ற GPU நினைவகப் பகுதிகளை அதிகபட்ச சாத்தியமான வேகத்தில் திறமையாக மாற்றுவது. எங்கள் இலக்கு தளமான AWS p5 இன்ஸ்டன்ஸ்கள், 32 நெட்வொர்க் கார்டுகள் மூலம் 3200 Gbps நெட்வொர்க் அலைவரிசையை வழங்குகின்றன. இந்த கட்டுரையானது, இந்த கோட்பாட்டு அலைவரிசையில் 97.1%-ஐ அடையக்கூடிய ஒரு தனிப்பயன் உயர்-செயல்திறன் நெட்வொர்க்கிங் தீர்வை உருவாக்கும் எங்கள் பயணத்தைப் பகிர்ந்து கொள்கிறது.

தொழில்நுட்ப சவால்

எங்களின் பயன்பாட்டு வழக்கு பல முக்கிய தொழில்நுட்ப தேவைகளை வழங்கியது:

  • தொடர்ச்சியற்ற நினைவக துண்டுகளின் ரிமோட் GPU-க்களுக்கு இடையேயான உயர்-அலைவரிசைப் பரிமாற்றம்
  • நடந்துகொண்டிருக்கும் செயல்பாடுகளுக்கு இடையூறு இல்லாமல் குபெர்னெட்ஸ் (Kubernetes) வரிசைப்படுத்தல்களில் இருந்து முனைகளை (nodes) மாறும் வகையில் சேர்க்கும் அல்லது அகற்றும் திறன்
  • பியர்-டு-பியர் (peer-to-peer) தகவல் தொடர்பு வடிவங்களுக்கான ஆதரவு

விநியோகிக்கப்பட்ட டீப் லேர்னிங்கிற்கான என்விடியாவின் (NVIDIA) NCCL நூலகம் நடைமுறைத் தரமாக இருந்தாலும், அது எங்கள் பயன்பாட்டு வழக்குக்கு ஏற்றதாக இல்லை:

  • NCCL கூட்டுத் தொடர்புகளில் சிறந்து விளங்குகிறது, ஆனால் இது ஒரு நிலையான "உலகத்தை" நிறுவ வேண்டும், பங்கேற்கும் முனைகளை சரிசெய்யும்போது முழு கிளஸ்டரையும் மறுதொடக்கம் செய்ய வேண்டும்.
  • NCCL இன் ஒத்திசைவான (synchronous) தொடர்பு மாதிரி எங்கள் ஒத்திசைவற்ற (asynchronous) பணிச்சுமைக்கு சிக்கலைச் சேர்க்கிறது
  • உகப்பாக்கத்திற்காக எங்கள் நினைவக பரிமாற்ற முறைகள் மீது நேரடி கட்டுப்பாடு வேண்டும் என்று நாங்கள் விரும்பினோம்
  • எங்கள் சொந்த தீர்வை உருவாக்குவது மதிப்புமிக்க கற்றல் வாய்ப்புகளை வழங்கியது

நவீன உயர்-செயல்திறன் நெட்வொர்க்குகள்

எங்கள் தீர்வை புரிந்துகொள்ள, முதலில் நவீன உயர் செயல்திறன் நெட்வொர்க்குகள் பாரம்பரிய நெட்வொர்க்கிங்கிலிருந்து எவ்வாறு வேறுபடுகின்றன என்பதை ஆராய்வோம்.

நாம் தினமும் பயன்படுத்தும் பெரும்பாலான நெட்வொர்க்குகள் TCP/IP நெறிமுறைகளை நம்பியுள்ளன, அங்கு பயன்பாடுகள் இயக்க முறைமை கர்னலைப் பயன்படுத்தி சாக்கெட்டுகள் மூலம் நெட்வொர்க் கார்டுடன் தொடர்பு கொள்கின்றன. இருப்பினும், உயர்-செயல்திறன் நெட்வொர்க்குகள் RDMA (ரிமோட் டைரக்ட் மெமரி அக்சஸ்) பயன்படுத்துகின்றன - இது CPU-ஐ ஈடுபடுத்தாமல் இயந்திரங்களுக்கு இடையே நேரடி நினைவக அணுகலைச் செயல்படுத்துவதற்கான முற்றிலும் வேறுபட்ட வன்பொருள் மற்றும் மென்பொருள் ஸ்டாக் ஆகும்.

AWS Elastic Fabric Adapter (EFA)-ஐ வழங்குகிறது, இது Amazon இன் Scalable Reliable Datagram (SRD) எனப்படும் தனிப்பயன் நெறிமுறையைச் செயல்படுத்துும் தனிப்பயன் நெட்வொர்க் இடைமுகமாகும். பயனர் ஸ்பேஸ், கர்னல் ஸ்பேஸ் மற்றும் நெட்வொர்க் பஃபர்களுக்கு இடையில் தரவு பல முறை நகலெடுக்கப்பட வேண்டிய பாரம்பரிய TCP/IP நெட்வொர்க்கிங் போலன்றி, RDMA உடன் கூடிய EFA ஆனது CPU-ஐ முழுமையாகத் தவிர்த்து, GPU நினைவகத்திற்கும் நெட்வொர்க் கார்டிற்கும் இடையே நேரடி தரவு பரிமாற்றத்தை அனுமதிக்கிறது.

உயர்-செயல்திறன் நெட்வொர்க் வடிவமைப்பின் தத்துவம்

உயர்-செயல்திறன் நெட்வொர்க்கிங் அமைப்புகளை உருவாக்குவதற்கு பல அடிப்படையான அனுமானங்களை மறுபரிசீலனை செய்ய வேண்டும்:

  1. பஃபர் உரிமை (Buffer Ownership): கர்னல் நெட்வொர்க் பஃபர்களை நிர்வகிக்கும் மற்றும் பயனர் ஸ்பேஸ் மற்றும் கர்னல் ஸ்பேஸுக்கு இடையில் நகலெடுப்பது அவசியமான பாரம்பரிய சாக்கெட்டுகளைப் போலன்றி, RDMA பயன்பாடுகள் தங்கள் சொந்த பஃபர்களை நிர்வகிக்க வேண்டும். ஒரு பயன்பாடு நெட்வொர்க் செயல்பாட்டைத் தொடங்கும்போது, அது செயல்பாடு முடியும் வரை பஃபர் உரிமையை நெட்வொர்க் கார்டுக்கு மாற்றுகிறது, இது தரவு நகலெடுக்கும் தேவையை நீக்குகிறது.
  2. நினைவகப் பதிவு (Memory Registration): பயன்பாடுகள் இயக்க முறைமை கர்னலுடன் நினைவகப் பகுதிகளைப் பதிவு செய்ய வேண்டும். CPU, GPU-கள் மற்றும் நெட்வொர்க் கார்டுகள் அனைத்தும் ஒரே மெய்நிகர் முகவரிகளைப் புரிந்துகொள்ள அனுமதிக்கும் மெய்நிகர் முகவரி மேப்பிங்குகளை கர்னல் அமைக்கிறது. இந்தப் பதிவு என்பது ஒரு முறை செய்யப்படும் செயலாகும், இது அடுத்தடுத்த ஜீரோ-காப்பி தரவு பரிமாற்றங்களைச் செயல்படுத்துகிறது.
  3. கட்டுப்பாட்டுப் பலகம் மற்றும் தரவுப் பலகம் (Control Plane vs Data Plane): உயர்-செயல்திறன் நெட்வொர்க்குகள் செயல்பாடுகளை இரண்டு வகைகளாகப் பிரிக்கின்றன:
    1. பாதுகாப்பை உறுதி செய்வதற்காக கட்டுப்பாட்டுப் பலக செயல்பாடுகள் (இணைப்பு அமைப்பு மற்றும் நினைவகப் பதிவு போன்றவை) கர்னல் வழியாகச் செல்கின்றன
    2. தரவுப் பலக செயல்பாடுகள் (உண்மையான தரவு பரிமாற்றம்) அதிகபட்ச செயல்திறனுக்காக கர்னலைத் தவிர்க்கின்றன
  4. பரப்புவதற்கு முன் பெறுதல் (Reception Before Transmission): கர்னல் நிர்வகிக்கப்படும் பஃபர்கள் இல்லாமல், உள்வரும் தரவு எங்கு வைக்கப்பட வேண்டும் என்பதைக் குறிப்பிடும் மூலம், பயன்பாடுகள் பெறுதல் செயல்பாடுகளை முன்கூட்டியே பதிவு செய்ய வேண்டும். இது பயன்பாடுகள் எப்போது வேண்டுமானாலும் தரவைப் பெறக்கூடிய சாக்கெட் மாதிரியிலிருந்து ஒரு அடிப்படை மாற்றமாகும்.
  5. போன்-அடிப்படையிலான நிறைவு (Poll-based Completion): epoll போன்ற வழிமுறைகள் மூலம் கர்னல் அறிவிப்புகளுக்காகக் காத்திருப்பதற்குப் பதிலாக, பயன்பாடுகள் நேரடியாக வன்பொருள் நிறைவு வரிசைகளைப் போலிங் செய்கின்றன. இது சிஸ்டம் கால் மேல்சுமையை நீக்குகிறது மற்றும் முடிக்கப்பட்ட செயல்பாடுகளுக்கு உடனடியாக எதிர்வினையாற்ற அனுமதிக்கிறது.
  6. வன்பொருள் டோபாலஜி விழிப்புணர்வு (Hardware Topology Awareness): அதிகபட்ச செயல்திறனை அடைவதற்கு வன்பொருள் டோபாலஜியைப் புரிந்துகொள்வதும் உகப்பாக்கம் செய்வதும் மிக முக்கியமானது.

வன்பொருள் டோபாலஜியைப் புரிந்துகொள்ளுதல்

AWS p5 இன்ஸ்டன்ஸ்கள் ஒரு அதிநவீன உள் கட்டமைப்பைக் கொண்டுள்ளன. கீழே காட்டப்பட்டுள்ளபடி, ஒவ்வொரு இன்ஸ்டன்ஸும் இரண்டு NUMA முனைகளை உருவாக்கும் இரண்டு CPU சாக்கெட்டுகளைக் கொண்டுள்ளது, ஒவ்வொரு NUMA முனையும் நான்கு PCIe சுவிட்சுகளுடன் இணைக்கப்பட்டுள்ளது:

இரண்டு NUMA nodeகள், எட்டு GPUகள், மற்றும் 32 EFA interfaces உடன் system topology.

ஒவ்வொரு PCIe சுவிட்சின் கீழேயும், நாம் காண்பது:

  • நான்கு 100 Gbps EFA நெட்வொர்க் கார்டுகள்
  • ஒரு NVIDIA H100 GPU
  • ஒரு NVMe SSD

TCP/IP மற்றும் RDMA பரிமாற்றங்களுக்கான தரவு பாதைகள் அவற்றின் அணுகுமுறைகளில் உள்ள அடிப்படை வேறுபாடுகளைக் காட்டுகின்றன:

GPUகள், userspace applications, Linux kernels, மற்றும் network interfaces இடையே உள்ள TCP மற்றும் GPUDirect RDMA data-transfer paths.

TCP/IP உடன் (இடது பக்கம்), தரவு பல முறை நகலெடுக்கப்பட வேண்டும்:

  1. GPU நினைவகத்திலிருந்து பயனர் ஸ்பேஸில் உள்ள பயன்பாட்டு பஃபருக்கு
  2. பயனர் ஸ்பேஸ் பஃபரிலிருந்து கர்னல் பஃபருக்கு
  3. கர்னல் பஃபரிலிருந்து நெட்வொர்க் கார்டுக்கு
  4. பெறும் பக்கத்தில் எதிர் செயல்முறை நிகழ்கிறது

ஒவ்வொரு நகல் செயல்பாடும் CPU சுழற்சிகள் மற்றும் நினைவக அலைவரிசையைப் பயன்படுத்துகிறது. ஒவ்வொரு நெட்வொர்க் செயல்பாட்டிற்கும் பயன்பாடு பயனர் ஸ்பேஸ் மற்றும் கர்னல் ஸ்பேஸுக்கு இடையில் சூழல் மாறுதல் (context switch) செய்ய வேண்டும்.

இதற்கு நேர்மாறாக, RDMA (வலது பக்கம்) உண்மையான ஜீரோ-காப்பி தரவு பரிமாற்றத்தை வழங்குகிறது:

  1. நெட்வொர்க் கார்டு GPU நினைவகத்திலிருந்து நேரடியாகப் படிக்கிறது
  2. தரவு நேரடியாக ரிமோட் நெட்வொர்க் கார்டுக்குச் செல்கிறது
  3. ரிமோட் நெட்வொர்க் கார்டு இலக்கு GPU நினைவகத்தில் நேரடியாக எழுதுகிறது
  4. பரிமாற்றம் எப்போது முடிந்தது என்பதை அறிய, பயன்பாடு பயனர் ஸ்பேஸில் உள்ள ஒரு நிறைவு வரிசையை (CQ) மட்டுமே சரிபார்க்க வேண்டும்

RDMA மற்றும் முறையான வன்பொருள் இணைத்தலுடன், இரண்டு GPU-களுக்கு இடையில் தரவை மாற்றுவதற்கு உள்ளூர் PCIe சுவிட்ச் மற்றும் நெட்வொர்க் வழியாக செல்வது மட்டுமே தேவைப்படுகிறது:

PCIe Gen5 x16 மற்றும் நான்கு 100Gbps EFA links மூலம் இணைக்கப்பட்ட local மற்றும் remote GPU ஜோடிகள்.

இதற்கு நேர்மாறாக, TCP/IP பரிமாற்றங்கள் பிரதான நினைவகம் வழியாக தரவை பல முறை நகலெடுக்க வேண்டும், இதனால் குறிப்பிடத்தக்க PCIe பஸ் நெரிசல் ஏற்படுகிறது:

main memory, CPU, நான்கு PCIe switches, மற்றும் நான்கு GPUகள் இடையே உள்ள TCP transfers மூலம் system bus congestion.

libfabric உடன் உருவாக்குதல்

நாங்கள் libfabric-ஐப் பயன்படுத்தினோம் - இது ஃபேப்ரிக் சேவைகளுக்கான பொதுவான இடைமுகத்தை வழங்கும் ஒரு கட்டமைப்பாகும். எங்கள் செயலாக்கம் இரண்டு வகையான RDMA செயல்பாடுகளைப் பயன்படுத்துகிறது:

  • நினைவகப் பகுதிகள் பற்றிய மெட்டாடேட்டாவைக் (எ.கா., ஆஃப்செட்டுகள் மற்றும் அளவுகள்) கொண்டு செல்லும் கட்டுப்பாட்டுச் செய்திகளுக்கான இருபக்க RDMA (SEND/RECV).
  • உண்மையான தரவு பரிமாற்றத்திற்கான ஒரு பக்க RDMA WRITE, இதில் ஒவ்வொரு WRITE செயல்பாடும் ஒரு தொடர்ச்சியான நினைவக துண்டைக் கையாளுகிறது.

உச்ச செயல்திறனுக்கான பயணம்

எங்கள் வளர்ச்சி பல நிலைகளில் முன்னேறியது:

  1. SEND/RECV-ஐப் பயன்படுத்தி அடிப்படை திசையற்ற செய்திப் பரிமாற்றத்தைச் செயல்படுத்தியது
  2. இருதிசைத் தொடர்புக்கு நீட்டிக்கப்பட்டது
  3. நேரடி GPU-GPU பரிமாற்றத்திற்காக GPUDirect RDMA WRITE சேர்க்கப்பட்டது
  4. பல ஒத்திகையான பரிமாற்றங்களைக் கையாள விரிவாக்கப்பட்டது
  5. உறுதித்தன்மைக்காக செயல்பாட்டு வரிசையாக்கம் (queuing) அறிமுகப்படுத்தப்பட்டது
  6. ஒற்றை நெட்வொர்க் கார்டில் 97.4% அலைவரிசை பயன்பாடு அடையப்பட்டது

32 நெட்வொர்க் கார்டுகளுக்கு அளவிடும்போது, நாங்கள் பல முக்கியமான உகப்பாக்கங்களைச் செயல்படுத்தினோம்:

  1. செயல்பாட்டு வரிசையாக்கம் (Operation Queuing): நெட்வொர்க் கார்டுகளுக்கு நேரடியாக செயல்பாடுகளைச் சமர்ப்பிப்பதற்குப் பதிலாக, நாங்கள் பயன்பாட்டு மட்டத்தில் ஒரு வரிசையைப் பராமரிக்கிறோம். இது நெட்வொர்க் நெரிசலுக்கு எதிராக உறுதித்தன்மையை வழங்குகிறது மற்றும் நிரலாக்க மாதிரியை எளிதாக்குகிறது.
  2. நெட்வொர்க் வார்ம்அப் (Network Warmup): இணைப்புகளை முன்கூட்டியே நிறுவுவது தொடக்க செயல்திறனை மேம்படுத்தியது.
  3. மல்டி-த்ரெட்டிங்: ஒவ்வொரு GPU-இன் நெட்வொர்க் செயல்பாடுகளுக்கும் அர்ப்பணிக்கப்பட்ட த்ரெட்டுகள்.
  4. CPU கோர் பின்னிங் (CPU Core Pinning): NUMA விளைவுகள் மற்றும் கேச் மிஸ்களைத் தவிர்க்க குறிப்பிட்ட CPU கோர்களில் த்ரெட்டுகளை இணைத்தல்.
  5. ஸ்டேட் ஷார்டிங் (State Sharding): த்ரெட்டுகளுக்கு இடையேயான முரண்பாட்டைக் குறைத்தல்.
  6. செயல்பாட்டுத் தொகுப்பு (Operation Batching): பல செயல்பாடுகளை ஒன்றாகச் சமர்ப்பித்தல்.
  7. லேசி ஆபரேஷன் போஸ்டிங் (Lazy Operation Posting): செயல்பாடுகள் முதலில் பயன்பாட்டில் வரிசைப்படுத்தப்படுகின்றன. நிறைவு வரிசையை போலிங் செய்த பிறகு, நிலுவையில் உள்ள செயல்பாடுகளை நெட்வொர்க் கார்டுக்குச் சமர்ப்பிக்க முயற்சிக்கிறோம், இது நெட்வொர்க் வளங்களின் திறமையான பயன்பாட்டை உறுதி செய்கிறது.
  8. NUMA-அறிமுக வம்ச ஒதுக்கீடு (NUMA-aware Resource Allocation): நினைவக அணுகல் தாமதத்தைக் குறைக்க சரியான NUMA முனையில் நிறைவு வரிசைகள் போன்ற libfabric வளங்களை ஒதுக்கீடு செய்யுங்கள்.

இந்த உகப்பாக்கங்கள் மூலம், கோட்பாட்டு அதிகபட்ச அலைவரிசையில் 97.1% ஆன 3,108 Gbps இறுதி செயல்திறனை அடைந்தோம்.

கீழே உள்ள வீடியோ எங்கள் கட்டளை வரி (command-line) நிரலைச் செயல்பாட்டில் காட்டுகிறது. இது தொடர்ச்சியற்ற GPU நினைவகத் துண்டுகளை ரிமோட் முனைகளுக்கு மாற்றுகிறது, 3108.283 Gbps பரிமாற்ற வேகத்தை அடைகிறது - இது நெட்வொர்க் உள்கட்டமைப்பின் கோட்பாட்டிற்கு அருகிலுள்ள அலைவரிசை பயன்பாட்டைக் காட்டுகிறது:

முடிவுரை

உயர்-செயல்திறன் நெட்வொர்க்கிங் அமைப்பை உருவாக்குவதற்கு வன்பொருள் கட்டமைப்பு மற்றும் அமைப்பு வடிவமைப்பு கொள்கைகள் இரண்டையும் புரிந்துகொள்ள வேண்டும். NCCL போன்ற நூலகங்கள் பொதுவான வடிவங்களுக்கு சிறந்த தீர்வுகளை வழங்கும் அதே வேளையில், சில குறிப்பிட்ட தேவைகளுக்கு தனிப்பயன் தீர்வுகள் அவசியமாகின்றன.

அமைப்பு கட்டமைப்பு, வன்பொருள் டோபாலஜி மற்றும் பல்வேறு உகப்பாக்க நுட்பங்களில் கவனமாக கவனம் செலுத்துவதன் மூலம் கோட்பாட்டிற்கு அருகிலுள்ள நெட்வொர்க் செயல்திறனை அடைய முடியும் என்பதை எங்கள் பயணம் நிரூபிக்கிறது. தனிப்பட்ட கூறுகளைப் புரிந்துகொள்வது மட்டுமல்லாமல், அவை எவ்வாறு ஒன்றிணைந்து ஒரு முழுமையான அமைப்பை உருவாக்குகின்றன என்பதுதான் முக்கியம்.

செயலாக்க விவரங்கள் மற்றும் குறியீட்டு எடுத்துக்காட்டுகள் உட்பட இந்தப் பயணத்தின் முழுமையான தொழில்நுட்ப ஆழமான ஆய்வு, எங்களின் ஓப்பன் சோர்ஸ் களஞ்சியத்தில் (open source repository) கிடைக்கிறது.

மேற்கோள்

BibTeX
@online{perplexity2025HighPerformanceGpuMemoryTransferOnAwsSagemakerHyperpod,
  author = {{Perplexity} and Lequn Chen and Phi Hoang},
  title = {{High-performance GPU memory transfer on AWS Sagemaker Hyperpod}},
  date = {2025-02-10},
  url = {https://www.perplexity.ai/hub/blog/high-performance-gpu-memory-transfer-on-aws-sagemaker-hyperpod}
}