All articlesதமிழ்English
CUDA and the rise of NVIDIA - editorial illustration

ஜென்சன் ஹுவாங், CUDA மற்றும் NVIDIAவின் எழுச்சி

அறிமுகம்

1993ஆம் ஆண்டு ஜென்சன் ஹுவாங் (Jensen Huang) NVIDIA நிறுவனத்தைத் தொடங்கியபோது, அதன் இலக்கு கணினி விளையாட்டுகளுக்கும் பல்லூடகப் பயன்பாடுகளுக்கும் முப்பரிமாணக் காட்சிகளை (3D Graphics) உருவாக்குவது. இன்று, அதே நிறுவனத்தின் செயலிகள் செயற்கை நுண்ணறிவு (Artificial Intelligence, AI) மாதிரிகளைப் பயிற்றுவிக்கவும் இயக்கவும் பயன்படுகின்றன. இந்த மாற்றத்தைப் புரிந்துகொள்ள, ஹுவாங்கின் பொறியியல் பின்னணியிலிருந்தும் NVIDIA உருவாக்கிய CUDA மென்பொருள் தளத்திலிருந்தும் தொடங்கலாம். [1]

1. ஹுவாங்கின் பொறியியல் மற்றும் தொழில் பயணம்

தைவானில் பிறந்த ஹுவாங், 1984ஆம் ஆண்டு ஓரிகன் மாநிலப் பல்கலைக்கழகத்தில் (Oregon State University) மின் பொறியியலில் (Electrical Engineering) இளங்கலைப் பட்டம் பெற்றார். 1984 முதல் 1985 வரை AMD நிறுவனத்தில் நுண்செயலி வடிவமைப்பாளராக (Microprocessor Designer) பணியாற்றினார். பின்னர் 1985 முதல் 1993 வரை LSI Logic நிறுவனத்தில் பல்வேறு பொறுப்புகளை வகித்தார். அங்கு, ஒரு கணினி அமைப்பின் பல கூறுகளை ஒரே சிப்பில் ஒருங்கிணைக்கும் திட்டத்துக்குப் (System-on-a-Chip Strategy) பொறுப்பான Coreware பிரிவின் இயக்குநரானார். இந்தக் காலப்பகுதியில், 1992ஆம் ஆண்டு ஸ்டான்ஃபோர்ட் பல்கலைக்கழகத்தில் (Stanford University) மின் பொறியியலில் முதுகலைப் பட்டமும் பெற்றார். [2]

1993 ஏப்ரல் 5 அன்று கிறிஸ் மலக்கோவ்ஸ்கி (Chris Malachowsky), கர்டிஸ் பிரீம் (Curtis Priem) ஆகியோருடன் இணைந்து NVIDIAவைத் தொடங்கினார். தொடக்கத்திலிருந்தே நிறுவனத் தலைவராகவும் (President), தலைமை நிர்வாக அதிகாரியாகவும் (CEO), இயக்குநர் குழு உறுப்பினராகவும் பணியாற்றி வருகிறார். 1999ஆம் ஆண்டு NVIDIA தனது முதல் பொதுப் பங்கு வெளியீட்டை (Initial Public Offering, IPO) மேற்கொண்டது. அதே ஆண்டில் அறிமுகமான GeForce 256, நிறுவனத்தின் வரைகலைச் செயலி (Graphics Processing Unit, GPU) வரலாற்றில் ஒரு முக்கிய மைல்கல். [1]

2. CUDA என்றால் என்ன?

2006ஆம் ஆண்டு NVIDIA அறிமுகப்படுத்திய CUDA, அதன் GPUகளில் ஒரே நேரத்தில் பல கணக்கீடுகளைச் செய்ய உதவும் மென்பொருள் தளமும் நிரலாக்க முறையும் (Parallel Computing Platform and Programming Model) ஆகும். GPU என்பது கணக்கீடுகளைச் செய்யும் வன்பொருள். அந்த வன்பொருளில் தங்களது கணக்கீடுகளை இயக்குவதற்கான நிரலாக்கக் கருவிகளை CUDA வழங்குகிறது. இதனால், வரைகலைக்குப் பயன்பட்ட GPUகளை அறிவியல் ஆராய்ச்சி, உயர் செயல்திறன் கணினியியல் (High-Performance Computing, HPC), செயற்கை நுண்ணறிவு போன்ற துறைகளிலும் பயன்படுத்த முடிந்தது. [1]

ஒரு படத்தில் பத்து இலட்சம் பிக்சல்கள் (Pixels) இருப்பதாக வைத்துக்கொள்வோம். ஒவ்வொரு பிக்சலின் ஒளிர்வையும் அதிகரிக்கும்போது, ஒரு பிக்சலின் முடிவுக்காக மற்றொரு பிக்சல் காத்திருக்க வேண்டியதில்லை. CUDA நிரல் இந்த வேலையைப் பல சிறு கணக்கீடுகளாகப் பிரித்து GPUவில் இயக்கலாம். GPUவில் இயங்கும் நிரல் செயல்பாட்டை (Kernel) ஒரே நேரத்தில் பல நிரல் இழைகள் (Threads) இயக்குகின்றன. ஒவ்வொரு இழையும் தனக்குரிய தரவுப் பகுதியைக் கையாளலாம். பெரிய அணிகளைப் பெருக்குவது (Matrix Multiplication) போன்ற AI கணக்கீடுகளிலும், வேலையைப் பகுதிகளாகப் பிரித்து இணையாகச் செய்யும் இதே அடிப்படைக் கருத்து பயன்படுகிறது. [3]

3. CUDA செயற்கை நுண்ணறிவுக்கு எப்படி உதவியது?

ஒரு நரம்பியல் வலையமைப்பைப் (Neural Network) பயிற்றுவிக்கும்போது, மாதிரி முதலில் ஒரு கணிப்பை உருவாக்குகிறது. அந்தக் கணிப்பின் பிழையைக் கணக்கிட்டு, மாதிரியின் அளவுருக்களைத் (Parameters) திருத்துகிறோம். இந்தச் செயல் பலமுறை நடைபெறுகிறது. GPUகள் இதில் இடம்பெறும் அணிப் பெருக்கல் போன்ற கணக்கீடுகளை வேகப்படுத்துகின்றன. இதனால் ஆராய்ச்சியாளர்கள் குறுகிய நேரத்தில் கூடுதல் பரிசோதனைகளைச் செய்யவும் பெரிய மாதிரிகளைப் பயிற்றுவிக்கவும் முடிகிறது. பயிற்சி முடிந்ததும், ஒரு மொழி மாதிரி பயனருக்குப் பதில் உருவாக்கும் கட்டத்திலும் (Inference) GPU பயன்படுகிறது. [4]

2012ஆம் ஆண்டு இதற்கு ஒரு நேரடி உதாரணம் கிடைத்தது. NVIDIA GPUகளில் பயிற்றுவிக்கப்பட்ட AlexNet, ImageNet பட வகைப்படுத்தல் போட்டியில் (Image Classification Competition) வென்றது. கணினி விளையாட்டுகளுக்குப் பயன்பட்ட வரைகலைச் செயலிகள், படங்களை அடையாளம் காணக் கற்றுக்கொள்ளும் மாதிரிகளையும் பயிற்றுவிக்க முடியும் என்பதை அந்த வெற்றி வெளிப்படுத்தியது. [1]

4. CUDA எப்படி NVIDIAவுக்கு நீடித்த முன்னிலையைக் கொடுத்தது?

NVIDIA பொதுவாகத் தேவைப்படும் கணக்கீடுகளுக்கு ஏற்கெனவே மேம்படுத்தப்பட்ட மென்பொருள் நூலகங்களை (Optimised Libraries) உருவாக்கியது. அணிப் பெருக்கலுக்கு cuBLAS, நரம்பியல் வலையமைப்பின் கணக்கீடுகளுக்கு cuDNN, பல GPUகளுக்கு இடையே தரவைப் பரிமாற NCCL, பயிற்சி பெற்ற மாதிரிகளை வேகமாக இயக்க TensorRT ஆகியவை உதவுகின்றன. PyTorch போன்ற மென்பொருள் கட்டமைப்புகள் (Frameworks) CUDAவை ஆதரிப்பதால், உருவாக்குநர்கள் ஒவ்வொரு GPU செயல்பாட்டையும் புதிதாக எழுதாமலேயே இந்தத் திறன்களைப் பயன்படுத்த முடிகிறது. [5]

முடிவுரை

இந்த மென்பொருள் சூழல்தான் NVIDIAவின் வன்பொருள் வணிகத்துக்கும் வலு சேர்த்தது. ஒரு குழு சிறிய பரிசோதனையிலிருந்து பல GPUகளில் இயங்கும் பெரிய அமைப்புக்கு வளரும்போது, ஏற்கெனவே பழகிய கருவிகளையும் மென்பொருளையும் தொடர்ந்து பயன்படுத்த முடியும். வேறு வன்பொருளுக்கு மாறினால், CUDAவைச் சார்ந்த பகுதிகளைச் சரிபார்த்து, தேவைப்படும் இடங்களில் மாற்றி, செயல்திறனை மீண்டும் சோதிக்க வேண்டியிருக்கும். ஹுவாங்கின் தலைமையில் NVIDIA பல ஆண்டுகளாக வன்பொருளோடு சேர்த்து மென்பொருளிலும் முதலீடு செய்ததால், AIக்கான தேவை பெருகியபோது அதன் GPUகளைப் பயன்படுத்தத் தயாரான கருவிகளும், அவற்றைப் பயன்படுத்தத் தெரிந்த உருவாக்குநர்களும் ஏற்கெனவே இருந்தனர். [1]

References

  1. https://www.nvidia.com/en-us/about-nvidia/corporate-timeline/
  2. https://s201.q4cdn.com/141608511/files/doc_financials/annual/2013/NVDA_2013AR_Proxy_10K-FINAL.pdf
  3. https://docs.nvidia.com/cuda/cuda-programming-guide/02-basics/writing-cuda-kernels.html
  4. https://docs.nvidia.com/cuda/cuda-programming-guide/index.html
  5. https://developer.nvidia.com/machine-learning

By Keshavan Thiagaraja

Private AI Model Developer & AI Security Consultant - Helping SMEs and Enterprises Build Secure AI Solutions, Sydney, Australia

B.Sc. (Computer Science, Mathematics and Statistics) | M.Sc. (Information Technology) | E-Commerce Professional