NVIDIA CUDA Kurulumu – Ubuntu

Ubuntu kullananlar iyi bilir çok sık bir şekilde Nvidia CUDA sürücümüz bir şekilde ya crash olur ya da sistem artık kurulu olan CUDA sürümümüzü göremez, kod içerisnde print(device) dediğimiz zaman bir anda CPU ile başbaşa kalırız. Böyle durumlarda ne yapmamız gerekiyor, içeride var olan çalışmayan CUDA versiyonunu kaldırıp sıfırdan nasıl kurarız onu anlatacağım.

İlk olarak şunu belirtmeliyim eğer ki çok eski versiyonlar kullanmıyorsanız ben bu işlemleri şu an için Ubuntu 22.04 versiyonunda ve CUDA Toolkit 12.2 kurarak yapacağım.

1. İlk olarak önceki CUDA kurulumlarını kaldıracağız ve sonrasında NVIDIA sürücüsünü yükleyeceğiz.

sudo apt-get --purge remove '*cublas*' 'cuda*' 'nsight*' 'nvidia*'

sudo apt-get autoremove

sudo apt-get install nvidia-driver-535

sudo reboot

2. CUDA Repository Pin indirip, kuracağız.

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin

sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600

3. CUDA Repository Package indireceğiz.

wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2204-12-2-local_12.2.0-535.54.03-1_amd64.deb

4. CUDA Repository Package kuracağız.

sudo dpkg -i cuda-repo-ubuntu2204-12-2-local_12.2.0-535.54.03-1_amd64.deb

5. Kurulumu tamamlamak için GPG anahtarını yükleyeceğiz.

sudo cp /var/cuda-repo-ubuntu2204-12-2-local/cuda-216F19BD-keyring.gpg /usr/share/keyrings/

6. CUDA deposunu içerecek şekilde paket listelerini güncelleyeceğiz.

sudo apt-get update

7. CUDA Toolkit’i yükleyeceğiz.

sudo apt-get -y install cuda

8. Çevre değişkenlerini ayarlayacağız.

echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc

echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

source ~/.bashrc

9. Doğru şekilde kurduğumuza emin olmak için;

nvidia-smi

nvcc --version

Artık en güncel haliyle Nvidia CUDA Ubuntu ortamınıza kurulmuş oldu.

İyi çalışmalar 🙂

Harici Monitor Bağlanmıyor – Ubuntu

Ubuntu üzerinde çalışma yapıyorsanız bu tarz sorunlar ile sürekli karşılacaksınız demektir. En önemli nedenlerinden biri sürücülerinizi güncellememe durumu oluyor. Bu durumda hem sürücülerimi güncellemek istemiyorum hem de harici monitorün çalışmasını istiyorum diyorsanız aşağıdaki yönergeler ile kolayca tekrar kullanabilirsiniz.

Buradaki ilk aşama Nvidia driverlarını kaldırmak olacak. Burada telaş yapacağınız bir durum yok, bir sonraki yazımda sıfırdan nvidia cuda driver nasıl kurulur onları da madde madde açıklayacağım.

Madde 1: Daha önceden yüklemiş olduğunuz Nvidia driver’ı silin. Bu sayede temiz ortam sağlamış olacağız.

sudo apt-get install build-essential dkms linux-headers-$(uname -r) sudo apt-get install libc6-dev libglvnd-dev pkg-config

    Madde 2: Gerekli olan bağımlılıkları yükleyelim.

    sudo apt-get install build-essential dkms linux-headers-$(uname -r)

    sudo apt-get install libc6-dev libglvnd-dev pkg-config

    Madde 3: Grafik sürücüleri ekleyin ve güncelleyin.

    sudo add-apt-repository ppa:graphics-drivers/ppa

    sudo apt-get update

    Madde 4: Nvidia Driver’larını yükleyelim.

    sudo apt-get install nvidia-driver-535

    Madde 5: Değişikliklerin uygulanması için Initramfs’yi güncelleyin ve sistemi yeniden başlatın.

    sudo update-initramfs -u

    sudo reboot

    Madde 6: Bilgisayarınızı yeniden başlatın. Buraya ek not olarak şunu ekleyebilirim; hala bir sorun ile karşılaşırsanız BIOS ayarlarınızdan Secure Boot’u devre dışı bırakın ve sistemi tekrar başlatın.

    Bir sonraki yazımda özellikle Ubuntu kullananlarda büyük bir sorun olan Nvidia CUDA kuruluma değineceğim.

    Herkese iyi çalışmalar 🙂

    Chatbot’lar neden önemlidir?

    Günümüz hizmetlerine dönüp baktığımız zaman hantal işleyen yapılar olduğunu net bir şekilde görebiliriz. Hantal yapıyı daha iyi bir hale getirmek için tek çare yeni bir insan gücü, yeni bir tane daha ve yeniden bir tane daha… İstek ve ihtiyaçların bu denli arttığı günümüz koşullarında aynı paralellikte artan insan gücü ile de çözüm sağlıklı bir şekilde yapılamamaktadır. Sektör bağımsız olarak değerlendirirsek, verilen hizmet ve ödenen para eğrisinin artık ters orantıya doğru kaydığı görülmektedir. Durum işin içinden çıkılamaz bir hal almaya giderken, yepyeni bir teknoloji ve akabinde teknolojinin farklı bir dalı ile karşılaştık. Yapay zeka ve chatbot’lar…

    Araştırmalar bize gösteriyor ki; aldığımız telefonlar teknoloji alanında müthiş bir ilerleme kaydederken, telefonun asıl varoluş nedeni olan arama özelliği git gide azalmaktadır. Bu kırılıma bakmak gerekirse; insanların ihtiyaçlarını karşılayan bir takım özellikleri artık arayarak giderme yerine, browser üzerinde araştırma, twitter içerisinde ilgili konu ile alakalı tweetlere bakmak veya kendi konuşma gruplarında arkadaşlarına sorarak danışma olarak bulabiliriz. En son çare olarak ilgili firmayı arayarak danışma hizmeti alınmaktadır ki bu dünümüz Z kuşağının kesinlikle tercih etmek istediği bir yöntem değildir. Bu durum kullanıcıların gözünden ticari firmalar…

    Peki firmaların gözünden müşterileri değerlendirmek gerekirse; firmalar verilen hizmeti daha iyiye götürmek için bir dizi yenilik getirmek için hem kendi aralarında hemde global alanda ciddi bir rekabet içindeler. Artan müşteri istekleri ve ihtiyaçlarına karşılık verebilmek için ilk aşama teknolojinin gücüne, yetmediği yerde insan gücüne sahip olmaya çalışmaktalar. Firmaların ortak kanısı, müşteriler hizmet ve destek beklediği yerde ciddi bir memnuniyetsizlik duyuyor ve bunu gidermek için personel alımı ve aynı zamanda teknolojiye anlık çözümler için devasa yatırımlar devam etmek zorunda olduklarıydı.

    Hem müşteri hem de firmalar gözünden durumu değerlendirdikten sonra chatbot’lar bu alanın neresinde sorusu aklımıza geliyor. Bu konu bu kadar kısa sürede neden bu denli önemli bir noktaya geldi? Genel olarak yukarıda bahsetmiş olduğum açıkların hepsini kapatabilen bir teknoloji olduğu için iş dünyasında bu kadar sahiplenilen bir teknoloji oldu.

    Sadece yaz! Chatbot’lar sayesinde artık insanların yazmış olduğu yazılardan yazmak istedikleri niyeti anlayabiliyor, aynı zamanda niyetine en uygun çözümü insanlara sunabiliyor. Sürekli manuel olarak bir müdahale gerektirmiyor. Kendi kendine öğrenen sistemlerle yapılar kendini sürekli eğitmekte, geliştirmektedir. Gelişim sayesinde insanlarda değişen ihtiyaçlara daha doğru cevaplar üretebilmekte.

    Kişilleştirilebilmekte! Chatbot’lar aynı zamanda insanların konuşma tarz ve üslüplerine göre yanıt dönebiliyor. Onlara onlar gibi davranabiliyor. Danışmanlı eğitim yaparak istemiş olduğumuz şekilde bot’larımızı yönlendirebiliyoruz.

    Zamanla seni tanıyor! Chatbot’lar ile konuşmaya başladığınız andan itibaren chatbot’lar sizin davranışlarınızı izliyor. Konuşma tarzınızı ve yapmak istediğiniz tüm işlemleri takip ediyor. Bir sonraki sohbette sizi daha çok tanıyan bir chatbot ile karşılaşmanız muhtemel olacak. Her bir konuşmada size karşı tecrübelerinde artış olduğu için sürekli aynı işlemi yapan kişiye, bir sonraki gelişinde “yeniden bu işlemi yapmak ister misiniz?” gibi bir soru ile kendi kendine karar vererek müşteriyi karşılayabiliyor.

    Seni anlıyor! Kurmuş olduğun cümlenin niyetini ayrı, içeriğini ayrı anlıyor ve bunları sonrasında tümceyi geri birleştirip bir anlam üretiyor. En sonunda senin için en doğru olan yanıtı sana geri dönüyor. Hizmet aldığın firmadan daha özel bir bilgi almak istediğin zaman gerekli güvenlik adımlarını geçtikten sonra sana istediğin her türlü bilgiyi anlık olarak sana sağlayabiliyor. Evet, bu teknoloji tam olarak bunu sağlıyor. Telefonun başında hiç bir zaman “Sizi kısa süre bekletiyorum.” mesajını almayacağına garanti verebilirim.

    Zaman değerli! Yapmak istediğin işlem her ne ise bunu tek bir cümle halinde chatbot’lara sorduğun zaman alacağın yanıt, oran olarak eski sisteme göre yarı yarıya fark ediyor.

    Günümüz ihtiyaçlarına baktığınız zaman, hangi sektör olduğu önemsiz olarak diyebilirim ki bu teknolojiyi kendi bünyesine entegre etmeyen firmalar için hazin son sandığımızdan daha yakın olabilir…

    Yapay Sinir Ağlarında Öğrenme

    Yapay sinir sistemlerinde öğrenme en basit hali ile dışarıdan bilgi girişi giriş katmanına aktarılır, girişi yapılan datalar işlenir ve aktivasyon fonksiyonundan geçirilerek bir veya daha fazla çıkış üretilir. Sistemden çıkan sonuç ile beklenen sonuç karşılaştırılır. Aradaki fark oransal olarak daha önceden belirlenen orandan büyük ise, bu işlem değişen algoritma ile tekrar sağlanır. Bu süreç belirlenen hata oranını yakalayana kadar devam eder. Algoritma üzerindeki değişikler çoğunlukla var olan ağın ağırlıkları üzerinden yapılır. Ağırlıklar üzerinde oynanarak aktivasyon fonksiyonu daha efektif bir şekilde kullanılması sağlanmak istenir. Yaşanılan duruma göre oynanan ağırlıklar sonucunda gelinmesi istediğimiz sonuca ulaşma evresine yapay sinir ağlarında öğrenme adını veririz.

    Beklediğimiz sonuca ağırlıkların oynanması ile ulaştıktan sonra, bir sonraki aşamada dış dünyadan edindiğimiz dataların değişimi izlemektedir. Giriş katmanına verilen data değiştirilir ve önceki datadan farklı bir data deseni ile tekrar ağırlıkların doğruluğu hesaplanır. Belirlenen hata oranı bir başka data deseni verildiği zamanda tutuyorsa makinanın istemiş olduğumuz kuralı öğrendiği anlamına gelir.

    Bir ağın öğrenme sürecini maddeler halinde ele alırsak;

    1. Sisteme girilmesini istediğimiz verilerin toplanması gerekmektedir. Veriler sisteme tek tek girilerek ağın problemi öğrenmesi sağlanır. Ağ dışarıdan almış olduğumuz verilerle öğrenmesini tamamladıktan sonra birde test datası oluştururuz. Bu test datası ile ağın ne kadar öğrenip öğrenemediğini test etmemize yarar.
    2. Ağın topolojik yapısı belirlenir. İstenilen sonuca göre uyarlanır. Giriş, gizli katmanlar, çıkış katmanları belirlenir, bu katmanlar arasında hücrelerin ne kadar olacağı bu aşamada belirlenir.
    3. Ağın öğrenme katsayısını toplama ve aktivasyon fonksiyonları, momentum katsayısı, ağırlıkların doğru belirlenmesi gibi parametrelere bağlıdır.
    4. Ağırlıklar başlangıç aşamasında tahmin edilen şekilde verilir. Ağın öğrenmeye başlaması ile ağırlıkların sonuca göre güncellenmesi evresi de başlar.
    5. Ağın ağırlık katsayılarını belirlemek adına test verileri ağın giriş katmanına verilir. Bu sayede ağırlık katsayıları oluşan sonuçlara göre sürekli güncellenir.
    6. Geri hesaplama metodu ile hatanın azaltılması için ağırlıklar güncellenir.
    7. Beklenen sonuç ile çıkan sonuç arasındaki oran istenilen orana yakın olduğu zaman ağın öğrenmesi tamamlanmış olarak kabul edilir.
    8. Öğrenme sürecini tamamlayan ağ yapısına bu sefer dış dünyadan daha farklı veri setleri verilir. Yeni verilen veri setlerinde de ağırlık güncellemesi gerekmez ise ağ yapısı öğrenme sürecini tam anlamı ile tamamlamış kabul edilir.

    Ağa sunulan girdiler için istenen çıktının üretilmesi için belirlenen ağırlık değerleri ilk seferde rastgele verilir. Ağın öğrenme sürecine başlaması ile bu ağırlık değerleri üzerinde sürekli bir güncelleme gerekir.

    Ağın öğrenme sürecinde beklenen hata payı hiç yakalanmayabilir. Bu durum ile karşılaşıldığı zaman ağırlık katsayılarından çok ağın topolojisi, katman mimarisi veya ağa sunulan verilere bakılması gerekir. Altyapıda bir değişiklik yapmak bu durumlarda daha doğru olacaktır.

    Dış dünyadan aldığımız verileri ağ yapısında giriş katmanına veririz ve çıkan çıktıda ağın öğrenmiş olduğunu bekleriz. Öğrenme süreci tamamlanana kadar güncellemeler yapar, ağ yapısından en verimli sonucu almayı amaçlarız. Bir yapay sinir ağ yapısının temelde üç tane öğrenme algoritması vardır. Bunlar; danışmanlı, danışmansız ve takviyeli öğrenmedir.

    1. Danışmanlı Öğrenme

    Bu tip öğrenme sürecinde herhangi bir şekilde öğretenin bulunması gerekmektedir. Var olan probleme ait girdiler ile beraber çıktı değerlerinin de ağ yapısına verilmesi gerekir. Girdi-çıktı karşılıkların tutarlı olabilmesi için modelde bulunan ağırlıklar katsayıları buna göre güncellenmelidir. En uygun değer bulunana kadar ağırlıklar girdi-çıktı verileri baz alınarak güncellenir.

    2. Danışmansız Öğrenme

    Bu öğrenme yönteminde çıktı değerleri sisteme verilmez, sadece dış dünyadan alınan girdi verileri ağ yapısına aktarılır. Ağ yapısından verilen girdileri birbirine yakınlığı baz alınarak sınıflandırması beklenir. Ağırlıklar bu sınıflandırmayı yapabilecek şekilde güncellenir. Ağ yapısı yapması gereken sınıflandırmayı verilen ağırlık katsayılarından anlar. Güncelleme tamamlandığında ağ yapısının öğrenmesi de tamamlanmış sayılır.

    3. Takviyeli Öğrenme

    Bu öğrenme yöntemi çok kullanılmamakla beraber bir öğretici takviyeli öğrenme yönteminde de yoktur. Danışmanlı öğrenme ile kıyaslanırsa bu öğrenme metodolojisinde sisteme çok detay verilmemektedir. Girilen bilgiler karşısında çıkan çıktıya bakılarak, ağ yapısına çıkardığı sonucun doğru veya yanlış ya da iyi veya kötü olduğu söylenir. Verilen bu bilgiyi ağın kullanıp tekrar öğrenmesi amaçlanmaktadır.

    Anaconda’da psutil.AccessDenied (pid=607) hatası

    Çok sıkı bir Anaconda ürünü kullanıcısı olarak geçenlerde aşağıdaki şekilde bir hata aldım ve nedeni hakkında hiç fikrim yoktu. Aslında çok basit olan bu hatanın çözümü de bir hayli basitmiş. Bunu sizlerle paylaşmak istedim.Anaconda üzerinde şu şekilde bir hata alıyorsanız;

    Traceback (most recent call last):
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/psutil/_psosx.py", line 293, in wrapper
    return fun(self, *args, **kwargs)
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/psutil/_psosx.py", line 356, in cmdline
    return cext.proc_cmdline(self.pid)
    PermissionError: [Errno 13] Permission deniedDuring handling of the above exception, another exception occurred:Traceback (most recent call last):
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/anaconda_navigator/exceptions.py", line 75, in exception_handler
    return_value = func(*args, **kwargs)
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/anaconda_navigator/app/start.py", line 108, in start_app
    if misc.load_pid() is None: # A stale lock might be around
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/anaconda_navigator/utils/misc.py", line 384, in load_pid
    cmds = process.cmdline()
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/psutil/__init__.py", line 701, in cmdline
    return self._proc.cmdline()
    File "/Users/deanimal77/anaconda/lib/python3.6/site-packages/psutil/_psosx.py", line 306, in wrapper
    raise AccessDenied(self.pid, self._name)
    psutil.AccessDenied: psutil.AccessDenied (pid=607)

    Bu hatanın nedeni uzun süredir Anaconda’yı restart etmediğinizden dolayı alınan bir hata.

    Bunun için;

    $ anaconda-navigator — reset

    komutu çalıştırmanız sizler için yeterli olacaktır.

    Ek olarak Anaconda’yı da arada update etmenizi öneririm.

    $ conda update anaconda-navigator