Ollama 0.32.14 பதிப்பில் sm_86 CUDA kernels நீக்கப்பட்டதால், RTX 30-series கார்டுகளுக்கான GPU ஆதரவு இழக்கப்பட்டுள்ளது. இதனால் runtime அமைதியாக CPU-க்கு மாறிவிடுகிறது, மேலும் மாடல் உருவாக்கம் (model generation) மிகவும் மந்தமாகிவிடுகிறது.
0.32.14-இல் என்ன மாறியுள்ளது
புதிய binary ஆனது 7.5, 8.9, 10.0 மற்றும் 12.0 ஆகிய compute architectures-களுக்காக மட்டுமே உருவாக்கப்பட்டுள்ளது. NVIDIA-இன் RTX 30-series, A40 மற்றும் A6000 ஆகியவற்றின் குறியீட்டுப் பெயரான (code name) Architecture 8.6 இதில் விடுபட்டுள்ளது. லான்ச்சர் (launcher) பொருத்தமான kernel-ஐத் தேடும்போது அதைக் கண்டறியவில்லை என்றால், ollama ps-இல் GPU “split” என்று அறிக்கையிட்டு, பின்னர் முடுக்கம் (acceleration) இன்றி இயங்கத் தொடங்கும்.
பழைய fallback ஏன் இப்போது வேலை செய்யவில்லை
முந்தைய பதிப்புகளில் ஒரு மாற்று வழிமுறை (secondary path) இருந்தது; முதன்மை kernels தோல்வியடைந்தால், அது CUDA 12 library-ஐ ஏற்றும். அந்த library-இல் sm_86-க்கான குறியீடுகள் இருந்ததால், அதே வன்பொருளைக் கொண்டு மாடலை இயக்க முடிந்தது. ஆனால் 0.32.14 பதிப்பில், அந்த fallback code எதிர்பாராமல் நீக்கப்பட்டுவிட்டது, எனவே லான்ச்சர் GPU-வை முற்றிலும் தவிர்த்துவிட்டு host processor-இல் இயங்குகிறது.
இதனால் யார் பாதிக்கப்படுவார்கள்
RTX 3080, 3080 Ti, 3090, 3090 Ti, A40, A6000 அல்லது compute capability 8.6 அடிப்படையிலான வேறு எந்த கார்டைப் பயன்படுத்துபவர்களும் இந்த வேகக் குறைவை உணர்வார்கள். இந்த மாற்றம் கண்ணுக்குத் தெரியாது – பிழைச் செய்திகளோ (error message) அல்லது செயலிழப்போ (crash) ஏற்படாது – ஆனால் செயல்திறனில் (throughput) குறிப்பிடத்தக்க வீழ்ச்சி ஏற்படும்.
நீங்கள் CPU-இல் இயங்குகிறீர்களா என்பதை எவ்வாறு சரிபார்ப்பது
- ஒரு generation-ஐத் தொடங்கிவிட்டு, மற்றொரு terminal-இல்
nvidia-smiகட்டளையை இயக்கவும். “Memory-Used” நெடுவரிசை (column) 0 MiB-இல் இருந்தால், வேலை CPU-இல் நடக்கிறது என்று அர்த்தம். - Ollama logs-இல்
library=CUDA compute=8.6என்ற வரி உள்ளதா என்று பார்க்கவும். அந்த வரி இல்லை என்றால், fallback முறை செயல்படவில்லை என்பது உறுதி செய்யப்படுகிறது. - ஒரு தெரிந்த GPU baseline-உடன் token-per-second எண்களை ஒப்பிட்டுப் பார்க்கவும்; முந்தைய பதிப்புகளில் சில நிமிடங்களில் முடிந்த பெரிய மாடல், இப்போது பல பத்து நிமிடங்கள் எடுக்கலாம்.
CUDA_VISIBLE_DEVICES போன்ற environment variables-களை அமைப்பதன் மூலம் இந்தப் பிரச்சனையைச் சரிசெய்ய முடியாது, ஏனெனில் விடுபட்ட kernels என்பது compile-time-இல் விடுபட்ட ஒன்று, runtime flag அல்ல.
விரைவான தீர்வு: 0.32.13 பதிப்பிற்குத் திரும்பவும்
Windows
- தற்போதைய Ollama installation-ஐ நீக்கவும் (Uninstall).
- திட்டத்தின் GitHub releases பக்கத்திலிருந்து 0.32.13 installer-ஐப் பதிவிறக்கவும்.
- installer-ஐ இயக்கி, Ollama service-ஐ மறுதொடக்கம் (restart) செய்யவும்.
Linux
sudo systemctl stop ollama
# replace <package> with the 0.32.13 .deb or .rpm you downloaded
sudo dpkg -i <package> # for Debian-based
# or sudo rpm -Uvh <package> # for RPM-based
sudo systemctl start ollama
பதிப்பைக் குறைத்த பிறகு (downgrade), மீண்டும் nvidia-smi மூலம் சரிபார்க்கவும்; இப்போது VRAM பயன்பாடு பூஜ்ஜியத்திற்கு மேல் இருப்பதையும், generation வேகம் அதிகரிப்பதையும் நீங்கள் காணலாம்.
எதிர்கால பதிப்புகளில் கவனிக்க வேண்டியவை
sm_86 விடுபட்டது வேண்டுமென்றே நீக்கப்பட்ட ஒன்றல்ல, மாறாக build script-இல் ஏற்பட்ட ஒரு கவனக்குறைவாகத் தோன்றுகிறது. பராமரிப்பாளர்கள் (maintainers) விடுபட்ட kernels-களை மீண்டும் சேர்க்கும் வரை அல்லது CUDA 12 fallback-ஐ மீண்டும் செயல்படுத்தும் வரை, 0.32.13-க்கு மேல் எந்தப் பதிப்பிற்கு upgrade செய்தாலும் இதே ஆபத்து இருக்கும். 8.6 kernels-களை மீண்டும் சேர்க்கும் patch-க்காகத் திட்டத்தின் issue tracker-ஐக் கவனித்து வரவும், மேலும் ஒவ்வொரு update-க்குப் பிறகும் GPU பயன்பாட்டை உடனடியாகச் சோதிக்கவும்.
சுருக்கமாக: 0.32.14 பதிப்பு எதிர்பாராமல் RTX 30-series முடுக்கத்தை (acceleration) முடக்குகிறது. nvidia-smi மூலம் GPU செயல்பாட்டைச் சரிபார்க்கவும், நீங்கள் அந்த கார்டுகளைப் பயன்படுத்துபவர் என்றால், விடுபட்ட kernels மீண்டும் சேர்க்கப்படும் வரை 0.32.13 பதிப்பிற்குத் திரும்பவும் (roll back).
