Ollama 0.32.14 ਵਿੱਚ sm_86 CUDA kernels ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਜਿਸ ਕਾਰਨ RTX 30-series ਕਾਰਡਾਂ ਲਈ GPU ਸਪੋਰਟ ਖਤਮ ਹੋ ਗਈ ਹੈ। ਇਸ ਨਾਲ runtime ਚੁੱਪਚਾਪ CPU 'ਤੇ ਚੱਲਣ ਲੱਗ ਜਾਂਦਾ ਹੈ ਅਤੇ ਮਾਡਲ ਜਨਰੇਸ਼ਨ ਦੀ ਰਫ਼ਤਾਰ ਬਹੁਤ ਹੌਲੀ ਹੋ ਜਾਂਦੀ ਹੈ।

0.32.14 ਵਿੱਚ ਕੀ ਬਦਲਿਆ ਹੈ

ਨਵਾਂ binary ਸਿਰਫ਼ 7.5, 8.9, 10.0 ਅਤੇ 12.0 ਕੰਪਿਊਟ ਆਰਕੀਟੈਕਚਰਾਂ (compute architectures) ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ। ਆਰਕੀਟੈਕਚਰ 8.6 – ਜੋ NVIDIA ਦੇ RTX 30-series, A40 ਅਤੇ A6000 ਦਾ ਕੋਡ ਨੇਮ ਹੈ – ਇਸ ਵਿੱਚ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਲਾਂਚਰ ਮੈਚਿੰਗ kernel ਲੱਭਦਾ ਹੈ ਤਾਂ ਉਸਨੂੰ ਕੁਝ ਨਹੀਂ ਮਿਲਦਾ, ollama ps ਵਿੱਚ GPU "split" ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਬਿਨਾਂ ਐਕਸਲਰੇਸ਼ਨ (acceleration) ਦੇ ਅੱਗੇ ਵਧਦਾ ਹੈ।

ਪੁਰਾਣਾ fallback ਹੁਣ ਕਿਉਂ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ

ਪਹਿਲਾਂ ਵਾਲੇ ਰਿਲੀਜ਼ਾਂ ਵਿੱਚ ਇੱਕ ਸੈਕੰਡਰੀ ਪਾਥ (secondary path) ਹੁੰਦਾ ਸੀ, ਜੋ ਕਿ ਮੁੱਖ kernels ਫੇਲ ਹੋਣ ਦੀ ਸੂਰਤ ਵਿੱਚ CUDA 12 ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਲੋਡ ਕਰ ਦਿੰਦਾ ਸੀ। ਉਸ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਅਜੇ ਵੀ sm_86 ਲਈ ਕੋਡ ਮੌਜੂਦ ਸੀ, ਜਿਸ ਨਾਲ ਉਹੀ ਹਾਰਡਵੇਅਰ ਮਾਡਲ ਚਲਾ ਸਕਦਾ ਸੀ। 0.32.14 ਵਿੱਚ, fallback ਕੋਡ ਗਲਤੀ ਨਾਲ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਲਾਂਚਰ ਪੂਰੀ ਤਰ੍ਹਾਂ GPU ਨੂੰ ਛੱਡ ਦਿੰਦਾ ਹੈ ਅਤੇ ਹੋਸਟ ਪ੍ਰੋਸੈਸਰ (host processor) 'ਤੇ ਚੱਲਦਾ ਹੈ।

ਕਿਸ 'ਤੇ ਇਸਦਾ ਪ੍ਰਭਾਵ ਪਵੇਗਾ

ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਜੋ RTX 3080, 3080 Ti, 3090, 3090 Ti, A40, A6000 ਜਾਂ ਕੰਪਿਊਟ ਕੈਪੇਬਿਲਟੀ (compute capability) 8.6 'ਤੇ ਅਧਾਰਤ ਕੋਈ ਹੋਰ ਕਾਰਡ ਵਰਤ ਰਿਹਾ ਹੈ, ਉਹ ਰਫ਼ਤਾਰ ਵਿੱਚ ਕਮੀ ਮਹਿਸੂਸ ਕਰੇਗਾ। ਇਹ ਬਦਲਾਅ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦਾ – ਕੋਈ ਐਰਰ ਮੈਸੇਜ ਨਹੀਂ, ਕੋਈ ਕ੍ਰੈਸ਼ ਨਹੀਂ – ਬੱਸ ਥਰੂਪੁੱਟ (throughput) ਵਿੱਚ ਇੱਕ ਮਹਿਸੂਸਯੋਗ ਗਿਰਾਵਟ ਆਉਂਦੀ ਹੈ।

ਇਹ ਕਿਵੇਂ ਪਤਾ ਲਗਾਇਆ ਜਾਵੇ ਕਿ ਤੁਸੀਂ CPU 'ਤੇ ਚੱਲ ਰਹੇ ਹੋ

  1. ਇੱਕ ਜਨਰੇਸ਼ਨ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ, ਦੂਜੇ ਟਰਮੀਨਲ ਵਿੱਚ, nvidia-smi ਚਲਾਓ। ਜੇਕਰ “Memory-Used” ਕਾਲਮ 0 MiB 'ਤੇ ਰਹਿੰਦਾ ਹੈ, ਤਾਂ ਕੰਮ CPU 'ਤੇ ਹੋ ਰਿਹਾ ਹੈ।
  2. Ollama ਲੌਗਸ (logs) ਵਿੱਚ library=CUDA compute=8.6 ਵਾਲੀ ਲਾਈਨ ਦੀ ਜਾਂਚ ਕਰੋ। ਇਸਦਾ ਨਾ ਹੋਣਾ ਇਸ ਗੱਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਕਿ fallback ਕਦੇ ਚੱਲਿਆ ਹੀ ਨਹੀਂ।
  3. ਟੋਕਨ-ਪ੍ਰ-ਸੈਕੰਡ (token-per-second) ਦੀਆਂ ਸੰਖਿਆਵਾਂ ਦੀ ਤੁਲਨਾ ਕਿਸੇ ਜਾਣੇ-ਪਛਾਣੇ GPU ਬੇਸਲਾਈਨ ਨਾਲ ਕਰੋ; ਇੱਕ ਵੱਡਾ ਮਾਡਲ ਜੋ ਪਹਿਲਾਂ ਵਾਲੇ ਰਿਲੀਜ਼ਾਂ ਵਿੱਚ ਕੁਝ ਮਿੰਟ ਲੈਂਦਾ ਸੀ, ਹੁਣ ਦਸਾਂ ਮਿੰਟ ਲਵੇਗਾ।

CUDA_VISIBLE_DEVICES ਵਰਗੇ ਐਨਵਾਇਰਨਮੈਂਟ ਵੇਰੀਏਬਲ (environment variables) ਸੈੱਟ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਨਹੀਂ ਹੁੰਦਾ ਕਿਉਂਕਿ ਗੁੰਮ ਹੋਏ kernels ਕੰਪਾਈਲ-ਟਾਈਮ (compile-time) ਦੀ ਕਮੀ ਹੈ, ਨਾ ਕਿ ਰਨ-ਟਾਈਮ ਫਲੈਗ (runtime flag)।

ਜਲਦੀ ਹੱਲ: 0.32.13 'ਤੇ ਪਿੰਨ (pin) ਕਰੋ

Windows

  • ਮੌਜੂਦਾ Ollama ਇੰਸਟਾਲੇਸ਼ਨ ਨੂੰ ਅਨਇੰਸਟਾਲ (uninstall) ਕਰੋ।
  • ਪ੍ਰੋਜੈਕਟ ਦੇ GitHub ਰਿਲੀਜ਼ ਪੇਜ ਤੋਂ 0.32.13 ਇੰਸਟਾਲਰ ਡਾਊਨਲੋਡ ਕਰੋ।
  • ਇੰਸਟਾਲਰ ਚਲਾਓ ਅਤੇ Ollama ਸਰਵਿਸ ਨੂੰ ਰੀਸਟਾਰਟ ਕਰੋ।

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

ਡਾਊਨਗ੍ਰੇਡ ਕਰਨ ਤੋਂ ਬਾਅਦ, nvidia-smi ਚੈੱਕ ਨੂੰ ਦੁਬਾਰਾ ਕਰੋ; ਤੁਹਾਨੂੰ ਨਾਨ-ਜ਼ੀਰੋ (non-zero) VRAM ਵਰਤੋਂ ਅਤੇ ਜਨਰੇਸ਼ਨ ਦੀ ਰਫ਼ਤਾਰ ਵਿੱਚ ਵਾਧਾ ਦਿਖਾਈ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।

ਭਵਿੱਖ ਦੇ ਰਿਲੀਜ਼ਾਂ ਵਿੱਚ ਕਿਸ ਚੀਜ਼ ਦਾ ਧਿਆਨ ਰੱਖਣਾ ਹੈ

sm_86 ਨੂੰ ਹਟਾਉਣਾ ਜਾਣਬੁੱਝ ਕੇ ਕੀਤਾ ਗਿਆ ਬਦਲਾਅ ਨਹੀਂ, ਸਗੋਂ ਬਿਲਡ ਸਕ੍ਰਿਪਟ (build script) ਵਿੱਚ ਇੱਕ ਗਲਤੀ ਜਾਪਦੀ ਹੈ। ਜਦੋਂ ਤੱਕ ਮੇਨਟੇਨਰਸ (maintainers) ਗੁੰਮ ਹੋਏ kernels ਨੂੰ ਵਾਪਸ ਨਹੀਂ ਲਿਆਉਂਦੇ ਜਾਂ CUDA 12 fallback ਨੂੰ ਦੁਬਾਰਾ ਚਾਲੂ ਨਹੀਂ ਕਰਦੇ, 0.32.13 ਤੋਂ ਅੱਗੇ ਕੋਈ ਵੀ ਅੱਪਗ੍ਰੇਡ ਉਹੀ ਜੋਖਮ ਪੈਦਾ ਕਰੇਗਾ। ਅਜਿਹੇ ਪੈਚ (patch) ਲਈ ਪ੍ਰੋਜੈਕਟ ਦੇ ਇਸ਼ੂ ਟ੍ਰੈਕਰ (issue tracker) 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ ਜੋ 8.6 kernels ਨੂੰ ਦੁਬਾਰਾ ਜੋੜਦਾ ਹੈ, ਅਤੇ ਹਰ ਅੱਪਡੇਟ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ GPU ਦੀ ਵਰਤੋਂ ਦੀ ਜਾਂਚ ਕਰੋ।

ਸਾਰ ਦੀ ਗੱਲ: 0.32.14 ਰਿਲੀਜ਼ ਅਣਜਾਣੇ ਵਿੱਚ RTX 30-series ਐਕਸਲਰੇਸ਼ਨ ਨੂੰ ਡਿਸੇਬਲ (disable) ਕਰ ਦਿੰਦਾ ਹੈ। nvidia-smi ਨਾਲ GPU ਦੀ ਗਤੀਵਿਧੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਅਤੇ ਜੇਕਰ ਤੁਸੀਂ ਉਹਨਾਂ ਕਾਰਡਾਂ 'ਤੇ ਨਿਰਭਰ ਹੋ, ਤਾਂ ਜਦੋਂ ਤੱਕ ਗੁੰਮ ਹੋਏ kernels ਵਾਪਸ ਨਹੀਂ ਆ ਜਾਂਦੇ, ਉਦੋਂ ਤੱਕ 0.32.13 'ਤੇ ਵਾਪਸ ਚਲੇ ਜਾਓ।