Merhabalar, bugün sizlere PyTorch kütüphanesini nasıl Linux sisteminize kurabileceğinizi ve kurulum ve kullanım esnasında ortaya çıkan hataların çözümünü anlatmaya çalışacağım.
PyTorch Nedir?
PyTorch, Meta’nın Yapay Zeka Araştırma Kurumu tarafından geliştirilen, bu kütüphane ile çeşitli yapay zeka sinir ağlarını veya modellerini kullanarak yeni modeller üretmenizi veya kendi modellerinizi oluşturabilmenizi sağlayan, ayrıca bu işlemler esnasında GPU’nuzun hızlı hesaplama özelliklerini kullanarak eğitimi hızlandırabilmemize olanak sağlayan, Google’ın Tensorflow kütüphanesinin alternatifidir.
Neden PyTorch da Tensorflow Değil?
Tensorflow, az önce de bahsettiğim gibi Google tarafından geliştirilmiş bir kütüphane. Bizim burada Tensorflow’u kullanmamamız için bazı sebepler var. Öncelikle ve en önemlisi AMD grafik kartlarıyla olan uyumluluğunun PyTorch’dan daha az olması diyebiliriz. Ben denediğimde hala bazı grafik kartlarının(benimki de dahil) sürücüleri eksik. Bu yüzden en başta kurulumdan sonra sistemde neler var dediğimizde işlemcimizi gösteriyor ve altına bir uyarı ekliyor: Benim listemde senin kartın yok bu yüzden bu kartı saymıyorum işlemci ile devam. Halbuki ROCm için özel derlenmiş sürümü kullanıyorum. Diğer sebep ise geliştiricilerinin veya topluluğunun geniş olması bu sayede kolayca destek bulabilirsiniz.
Kurulum Öncesi Gereksinimler
- Öncelikle GNU/Linux bir sisteme ihtiyacınız var. Bir önceki yazımda sebeplerini anlatmıştım.
- İkincisi ise güncel ROCm kurulumu
- Üçüncüsü ise 7-10GB önerilen boş alan.
Burada iki farklı kurulum şeklimiz olacak. Önce birincisini deneyelim:
Nasıl Kuracağız? 1. Yöntem
Bu benim size önerdiğim ve bence ilk denemeniz gereken kurulum şekli. PIP ile .whl dosyaları ile sisteme kurulum yapacağız. Ben bir Python sanal ortamı oluşturdum-bu şekilde kullanmanız normal sistem dosyalarının çalışmasında istikrarsızlığa sebep olmaz- ve şu komut ile kurulumu başlatıyoruz:
sudo apt update
sudo apt install libjpeg-dev python3-dev python3-pip
pip3 install wheel setuptools
Bu komutla .whl kurulumu için gerekli paketleri kurmuş olduk. Ardından kurulumu eğer ki benim bir önceki yazımdaki ROCm kurulumuma göre yaptıysanız:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm7.0
Eğer sizin ROCm versiyonunuz farklıysa resmi siteden linki değiştirebilirsiniz veya ROCm kurulumunuzu bir önceki yazımdan bakarak yeniden kurabilirsiniz. Ardından şu kod ile test edebilirsiniz:
python3 -c "import torch; print(f'Kart Adı: {torch.cuda.get_device_name(0)} | Erişilebilir: {torch.cuda.is_available()}')"
Çıktınız buna benzer olmalı:
Kart Adı: AMD Radeon™ RX 7600S | Erişilebilir: True
Eğer ki bu çıktı hatalı olursa bir önceki ROCm kurulumunu tekrar gözden geçirmenizi tavsiye ederim.
Gelgelelim asıl kontrole. Şimdi basit bir matrix çarpımı:
import torch
import time
if not torch.cuda.is_available():
print("GPU bulunamadı")
exit()
device = torch.device("cuda")
print(f"Cihaz: {torch.cuda.get_device_name(0)}")
print("Yük testi başlıyor (Matris Boyutu: 10000x10000)...")
try:
a = torch.randn(10000, 10000, device=device)
b = torch.randn(10000, 10000, device=device)
start_time = time.time()
for i in range(100):
res = torch.matmul(a, b)
if i % 10 == 0:
print(f"{i}/100 tamamlandı")
end_time = time.time()
print(f"\nTest Başarıyla Tamamlandı")
print(f"Toplam Süre: {end_time - start_time:.2f} saniye.")
except Exception as e:
print(f"Hata: {e}")
Çıktı buna benzerse kurulumunuz tamamlanmıştır demektir. Eğer ki hatalıysa bir sonraki kurulum adımını takip edeceksiniz:
Cihaz: AMD Radeon™ RX 7600S
Yük testi başlıyor (Matris Boyutu: 10000x10000)…
0/100 tamamlandı
10/100 tamamlandı
20/100 tamamlandı
30/100 tamamlandı
40/100 tamamlandı
50/100 tamamlandı
60/100 tamamlandı
70/100 tamamlandı
80/100 tamamlandı
90/100 tamamlandı
Test Başarıyla Tamamlandı
Toplam Süre: 0.16 saniye.
Nasıl Düzelteceğiz? İkinci Yöntem
Çalşımadıysa hata aldıysanız vsvs bu diğer kurulum aracılığıyla sorunlarınız gidecektir.
Öncelikle yakaşık 15GB’lık indirme yapacak kodu çalıştırıyoruz:
docker pull rocm/pytorch:latest
İnternet hızınıza göre süre değişebilir. Neredeyse 3 tane ISO indirmek gibi. Neyse ardından şu komutlar aracılığıyla artık Docker’i kullanabiliriz:
docker run -it --rm
--device=/dev/kfd
--device=/dev/dri
--group-add video
--shm-size 8G
-v (bağlanmasını istediğiniz klasörün tam yolu):/workspace
-w /workspace
rocm/pytorch:latest
Bu kodu çalıştırdığınızda komut isteminizin başına root@45t5rt435b68 gibi bir kullanıcı gelecek. İçerdesiniz ve kurulumu tamamladınız demektir!
Nasıl Kullanacağız?
Bu Docker’i nerede açtıysanız ordasınızdır başka hiçbir yere hareket edemezsiniz. Bu yüzden eğer ki proje klasörünüzde değilseniz oraya gidip tekrar açmanızı tavsiye ediyorum. Ayrıca bu Docker’i her açtığınızda kendileri sıfırlanır yani eğer ki bunun içindeyken ortam değişkeni falan güncellerseniz PIP ile bir şeyler indirirseniz bir sonraki açılışta olmaz. Ona göre…
Testler & Olmazsa Olmaz Hatalar => Çözümler
Evet gelelim hatalar ve onların çözümlerine. Şunu rahatlıkla söyleyebilirim ki eğer ekran kartınız benimki kadar yeni değilse(birazdan komut isteminde göstereceğim) hiçbir sorunla karşılaşma ihtimaliniz yok. Her şey bunun için optimize edilmiş. Şimdi birkaç basit kontrol yapalım. Bu kodu direk Docker’in içindeyken komut isteminize yazın:
python3 -c "import torch; print(f'Kart Adı: {torch.cuda.get_device_name(0)} | Erişilebilir: {torch.cuda.is_available()}')"
Bunu bir Dockeri açtığınız klasördeki bir .py dosyasına kaydedin ve çalıştırın:
python gpu_test.py
Bu kodu çalıştırdıktan sonra sakın penceren ayrılmayın. Toplam Süreyi gördükten sonra hemen Ctrl+C tuşlarına basın. Aksi taktirde bilgisayarınızın başka bir grafik kartı yoksa görüntü ile alakalı sorunlar çıkabiliyor. Diğer kodlarda bir sorun olmaz.
Şimdi eğer ki çıktınız böyle ise:
root@72f7f013cee4:/workspace# python gpu_test.py
Cihaz: AMD Radeon™ RX 7600S
Yük testi başlıyor (Matris Boyutu: 10000x10000)…
0/100 tamamlandı
10/100 tamamlandı
20/100 tamamlandı
30/100 tamamlandı
40/100 tamamlandı
50/100 tamamlandı
60/100 tamamlandı
70/100 tamamlandı
80/100 tamamlandı
90/100 tamamlandı
Test Başarıyla Tamamlandı
Toplam Süre: 0.16 saniye.
^C
root@72f7f013cee4:/workspace#
Hayırlı olsun. Artık Torch’u rahatlıkla kullanabilirsiniz. Ama eğer bir hata aldıysanız ki hata hiç fark etmez “Parçalama Hatası(Segmentation Fault), invalid device funtion, no drivers for it” veya bunlara benzer ise biraz yapacak işimiz var. Terminale rocminfo yazın ve orada gfx ile başlayan sürüm numaranızı bulun:
ISA Info:
*******
Agent 2
*******
Name: gfx1102
Uuid: GPU-XX
Marketing Name: AMD Radeon™ RX 7600S
Vendor Name: AMD
Feature: KERNEL_DISPATCH
Profile: BASE_PROFILE
Gördüğünüz üzere benimki gfx11.0.2. Büyük ihtimalle sizinki de gfx11.0.0 dan büyüktür. Eğer büyükse:
export HSA_OVERRIDE_GFX_VERSION=11.0.0
Bu komutu komut isteminize girin(Docker’da). Ve tekrar GPU test kodunu çalıştırın. Sorununuz çözülmüştür. Ama bu kod her yeniden açılışta yazılmalı çünkü Docker her şeyi siler. Eğer ki gfx modeliniz 11.0.0’ın altındaysa büyük ihitmalle yukarıdaki kodun 11.0.0 değerini 10.3.0 ile değiştirmek ve ardından testi çalıştırmak sorunu çözecektir. Bir de eskilik yenilik mevzusu var, mesela benimki RX7600 yani gfx1102 döndürüyor, ama RX7900 var o da gfx1100 diyor. Yani aslında yeni ve güçlü olan 7900 ama mimarisi eski benimki ise bir tık tam tersi.
Şimdilik bu kadar. İnşallah ilerleyen zamanda bu tür yazılara devam edeceğim. Aklınıza takılan bir soru veya bir hata olursa yorumlardan iletebilirsiniz. Okuduğunuz için teşekkür ederim!
PyTorch falan boş iş, sen önce C öğren paşam