Bu eğitimde, DGX Spark üzerinde bir büyük dil modelini lokal olarak çalıştırıp, başka bir bilgisayarınızın tarayıcısından modelle konuşabileceksiniz.
Spark, monitör ve klavye bağlayarak doğrudan bilgisayar olarak kullanılabileceği gibi, başka bir bilgisayarla uzaktan bağlanılan bir sunucu olarak da kullanılabilir. Biz bu eğitimde Spark’a uzaktan bağlanacağız ve gerekli yazılımları kurup modeli çalıştıracağız.
Dil modeli olarak Qwen3.6-35B-A3B-FP8 (35 milyar parametreli bir Mixture-of-Experts modeli, 3 milyar parametre aktif, FP8 kuantizasyonu), çıkarım motoru olarak vLLM, web arayüzü olaraksa Open WebUI kullanacağız. vLLM, modelin eğitilmiş ağırlıklarını GPU belleğine yükleyip çalıştıracak ve dışarıdan istek kabul eden bir API sunacak. Open WebUI ise bu API’ye bağlanıp tarayıcıda bir sohbet ekranı gösterecek. İkisi de Spark üzerinde, Docker konteynerleri içinde çalışacak.
Bu eğitimde FP8 kuantizasyonlu model kullanılmıştır; aynı kurulum NVFP4 (4-bit) kuantizasyonuyla da yapılabilir. İki format arasındaki farklar için 8. bölüme bakın.
Ön Hazırlık: Spark’ın IP Adresini Bulma
Spark’a ilk kez uzaktan bağlanıyorsanız IP adresini bulmanız gerekir. Spark’a bir monitör ve klavye bağlayın, giriş yapın ve terminalden şu komutu çalıştırın:
Komut, Spark’ın varsayılan ağ arayüzünün IP adresini verir:
Bu adresi not edin; eğitim boyunca yerine bu adresi kullanacaksınız. Alternatif olarak, NVIDIA Sync uygulamasını kontrol ederek de IP adresini bulabilirsiniz.
1. Spark’a Bağlanma
Bilgisayarınızın Spark’la aynı ağa bağlı olduğundan emin olun. Ardından, bilgisayarınızdan bir terminal açın ve Spark’a ssh ile bağlanın:
İlk bağlantıda bir fingerprint uyarısı göreceksiniz. yes yazıp Enter’a basın. Ardından parola sorulduğunda Spark’ın parolasını girin:
Bağlandığınızda Spark, bu terminalden gönderdiğiniz komutları kabul etmeye başlayacak.
2. Önbelleği Temizleme
vLLM’i başlatmadan önce dosya sistemi önbelleğini boşaltın:
Bunu yapmamızın temel sebebi DGX Spark’ın birleşik bellek mimarisidir: İşletim sistemi, diskten okuduğu model dosyalarını RAM’de önbelleğe alır. vLLM, buradaki model ağırlıklarını GPU belleğine yükler. Yükleme bittikten sonra önbellekte kalan veri bir daha kullanılmayacak olsa da hemen temizlenmez. Ayrı bellek kullanan sistemlerde bu önemli değildir. Çıkarım GPU belleğinde çalıştığından RAM’in doluluğu performansı etkilemez. Spark’ta ise CPU ve GPU aynı RAM’i paylaştığından, önbellek GPU’nun kullanabileceği alanı daraltır. Komut, bu önbelleği boşaltarak vLLM için maksimum bellek sağlar.
Parola sorulduğunda Spark parolasını girin. Komut çıktı vermez, sessizce tamamlanır:
3. vLLM Sunucusunu Kurma
vLLM’i Docker imajı olarak indirin:
İndirme sırasında katmanlar sırayla yüklenecek ve ekranda ilerleme yüzdesi göreceksiniz. İmaj zaten diskte varsa Docker indirmeyi atlar. İndirme yapılıp tamamlandığında şu çıktıyı göreceksiniz:
Bu imaj, vLLM’in çalışması için gereken her şeyi içerir — PyTorch, CUDA çekirdekleri, Python kütüphaneleri…
Şimdi, vLLM sunucusunu başlatalım:
Bu komut, indirdiğiniz imajı bir konteyner olarak başlatır. Model Spark’ta kurulu değilse Hugging Face’ten otomatik olarak indirilir. Model indirme ilerledikçe ilerleme çubukları görünür ve indirme tamamlandığında dosyalar ~/.cache/huggingface/hub/ dizinine yerleşir. Model Spark’ta önceden indirilmişse (bu eğitimi daha önce uyguladıysanız) vLLM bu model indirme adımını atlar ve indirilmiş ağırlıkları doğrudan GPU belleğine yükler.
Komutun çalışması tamamlandığında bir konteyner ID göreceksiniz; bu, sunucunun arka planda başladığını ve modelin 8000 portundan sunulmaya başlandığını gösterir:
Aynı isimde (önceki denemelerinizden kalan) bir konteyner zaten varsa komut şu hatayı verecektir:
Bu durumda konteyner listesini kontrol edin, vllm-qwen36-35b-fp8 listede olmalı:
Konteynerin status sütununda “Up” yazıyorsa konteyner zaten çalışıyor ve kullanıma hazır demektir, sonraki adıma geçebilirsiniz:
Eğer status sütununda “Exited” yazıyorsa, durmuş demektir:
Durmuş konteyneri yeniden başlattıp sonraki adıma geçebilirsiniz:
4. vLLM Başlangıç Sürecini İzleme
Model indirme tamamlandıktan sonra vLLM’in servise hazır hale gelmesi birkaç dakika alabilir. Bu süreçte vLLM model ağırlıklarını GPU belleğine yükler, GPU çekirdeklerini derler ve çıkarım için bellek ayırır. Süreci izlemek için:
Loglarda şunları göreceksiniz:
Application startup complete. satırını gördüyseniz model sunucusu hazır demektir. Ctrl+C tuşlarına basarak log izlemeyi durdurun. Sunucu arka planda çalışmaya devam edecektir.
5. vLLM Sunucusunu Test Etme
Öncelikle sunucunun çalıştığını doğrulayalım:
Hiçbir hata almamanız sunucunun sağlıklı olduğunu gösterir:
Şimdi modeli test edin:
Yanıtın basitleştirilmiş hali aşağıdaki gibidir. content alanında (modelin verdiği yanıt) 204 sayısını göreceksiniz. Buradan, modelin çarpma işlemini doğru yaptığını anlayabilirsiniz. Ayrıca yanıtın bir de reasoning alanı var. Bu alan, modelin düşünce sürecini içerir. Görüldüğü kadarıyla model, cevaba ulaşmadan önce hesaplamayı iki ayrı yöntemle yapıp çözümü doğrulamış:
vLLM şu an çalışıyor ve Qwen3.6’ya soru sorup cevap alabiliyoruz. Ama her soruyu yukarıdaki gibi bir terminal komutuyla göndermek pratik değil. Tarayıcıdan sohbet edebilmek için bir arayüze ihtiyacımız var.
6. Open WebUI’yi Kurma
Open WebUI, vLLM’e bağlanan ve tarayıcınızdan kullanabileceğiniz bir arayüzdür. Dil modelinizle sohbet edebilir, görsel yükleyip hakkında sorular sorabilirsiniz. Yanıtlar, henüz üretilirken ekranda belirmeye başlar; okumaya başlamak için tümünün bitmesini beklemeniz gerekmez. Her sohbet için temperature, top_p ve max_tokens gibi ayarları değiştirebilirsiniz. İlk kurulumda küçük bir embedding modeli indirerek gelir. Bu sayede belge yükleyebilir ve hakkında soru sorabilirsiniz (RAG — Retrieval-Augmented Generation). Sohbet geçmişiniz, ayarlar ve hesap bilgileriniz Spark’ın diskinde saklanır; cihazı veya konteyneri kapansanız bile verileriniz kaybolmaz ve tekrar açtığınızda kaldığınız yerden devam edebilirsiniz.
Öncelikle, Spark’a Open WebUI Docker imajını indirin:
İmaj zaten diskte varsa Docker indirmeyi atlar. İndirme tamamlandığında şu çıktıyı göreceksiniz:
İndirme tamamlandığında konteyneri başlatın:
İlgili konteynerin status sütununda “Up” yazıyorsa konteyner zaten çalışıyor ve kullanıma hazır demektir, sonraki adıma geçebilirsiniz:
7. Open WebUI Başlangıç Sürecini İzleme
Günlükleri izlemek için:
Günlüklerde şuna benzer bir çıktı göreceksiniz:
Günlüklerde Scheduler worker started satırını gördükten sonra birkaç saniye bekleyin. Ctrl+C ile log izlemeden çıkın.
8. Tarayıcıdan Erişim
Spark ile aynı ağda olan bilgisayarınızın tarayıcısında şu adrese gidin:
İlk açılışta bir giriş ekranı gelecek. “Sign up” bağlantısına tıklayarak ad, e-posta ve parola girin. İlk oluşturulan hesap otomatik olarak yönetici hesabı olur. Hesap açmanın amacı sohbet geçmişini ve ayarları saklamaktır. Bu bilgiler Spark’ta tutulur.
Model, Open WebUI tarafından otomatik olarak algılanarak model seçim menüsünde listelenir. Menüde Qwen/Qwen3.6-35B-A3B-FP8 modelini göreceksiniz. Modeli seçin. Aynı anda birden çok model çalıştırıyorsanız, buradan modeller arasında anında geçiş yapabilirsiniz. Ayrıca sol taraftaki sohbet geçmişi sekmesi sayesinde birden fazla sohbet oturumu oluşturulabilir ve oturumlar arasında geçiş yapabilirsiniz.

Mesaj kutusuna bir soru yazın ve Enter’a basın. Model yanıt verirken üstte daraltılabilir bir düşünce süreci bölümü, altta ise yanıt belirecek.
Aşağıda, modelin ve web arayüzünün neler yapabildiğini göstermek için yaptığımız birkaç deneme var:
İlk olarak, modelin Türkçe anlama becerilerini görmek amacıyla modelden Türkiye’nin en büyük üç şehrini sıralayarak her biri hakkında kısa bilgi vermesini istedik.

Takiben, modele yapay zekânın sağlık sektöründeki faydalarını istenen şekilde üç paragraf hâlinde açıklattık.

Sonrasında, modelin programlama becerilerini deneyimlemek için, bir metnin palindrom olup olmadığını kontrol eden Python fonksiyonu oluşturmasını istedik.

Mesaj alanındaki dosya ekleme düğmesini kullanarak modele bir doğa görseli gönderdik. Model, yüklenen görseldeki çiçek, yapraklar, su damlaları ve arka plan gibi unsurları betimledi.

Aynı dosya ekleme kısmından, bu kez modele DGX Spark’ın datasheet’ini verip analiz etmesini istedik.

Spark’la lokal LLM kurulumunuz hazır! Aynı ağ üzerindeki tüm cihazlarınızdan, Qwen3.6’yla konuşabilirsiniz.
| Özellik | FP8 | NVFP4 |
|---|---|---|
| Bit genişliği | 8 bit / parametre | 4 bit / parametre |
| Bellek kullanımı | Orta | FP8’in yaklaşık yarısı |
| Hassasiyet | Daha yüksek | Daha düşük, ancak pratik kullanımda yeterli |
| Donanım desteği | Blackwell GPU’larda hızlandırılmış | Blackwell 5. nesil Tensor Çekirdekleri |
| Kullanım senaryosu | Kalite öncelikli çıkarım | Daha büyük model veya daha uzun bağlam |
Spark’ın 128 GB birleşik belleğiyle her iki format da sorunsuz çalışır. FP8 daha yüksek kalite sunarken, NVFP4 aynı modeli daha az bellekle çalıştırmanıza veya bellekte kalan alanı KV cache için kullanmanıza imkân verir.
NVFP4 ile çalıştırmak için, 3. adımda kullandığınız docker run komutunda şu değişiklikleri yapmanız yeterlidir: model adını nvidia/Qwen3.6-35B-A3B-NVFP4 olarak değiştirin, –gpu-memory-utilization 0.4 (NVFP4 daha az bellek kullanır) ve –max-model-len 262144 (daha uzun bağlam) kullanın. Ayrıca –attention-backend flashinfer ve –moe-backend marlin parametrelerini ekleyin.
9. Kapatma
İşiniz bittiğinde her iki konteyneri de durdurmak için:
Durdurulan konteyner çalışmayı bıraksa da verileri ve yapılandırması diskte saklanır. Konteyneri kaldığı yerden tekrar başlatmak için:
Konteynerleri tamamen kaldırmak içinse:
Konteynerleri kaldırsanız bile Docker imajları ve model dosyaları diskte kalır. Bu nedenle tekrar başlatmak için yeniden indirme yapmanız gerekmez. 3. ve 6. adımlardaki docker run komutlarını tekrar çalıştırmanız yeterli. Sohbet geçmişi ve hesap bilgileri open-webui-data volume’unda saklanır; konteyner kaldırılsa bile bu veriler Spark’ta korunur. Bu verileri de silmek isterseniz docker volume rm open-webui-data komutunu kullanabilirsiniz.
OPENZEKA HABERLERİ
OPENZEKA HABERLERİ
Hesaplarınızda paylaşmak ister misiniz?





