Bu eğitimde, tek bir DGX Spark üzerinde bir büyük dil modelini Unsloth kullanarak ince ayar (fine-tuning) yapacaksınız.
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 modelin ince ayarını yapacağız.
Model olarak GPT-OSS 20B (21 milyar parametreli bir Mixture-of-Experts modeli), ince ayar framework’ü olarak Unsloth, ve eğitim yöntemi olarak Pekiştirmeli Öğrenme (Reinforcement Learning — RL) kullanacağız. Unsloth, modeli 4-bit kuantizasyonla (QLoRA) yükleyip sadece küçük LoRA adaptörlerini eğiterek %70’e varan bellek tasarrufu sağlayacak. Eğitim, dil modelinin “2048” adlı oyununu oynamayı öğrenmesini sağlayacak.
Bu eğitim üç bölümden oluşur:
- Kurulum: Docker imajı derleme ve konteyner başlatma
- Eğitim: Notebook’u çalıştırma, model yükleme ve GRPO eğitimi
- Sonuç: Eğitilmiş modeli test etme ve kapatma
Bu eğitim tek Spark üzerindendir; ince ayar çoklu Spark gerektirmez.
Kurulum
1. Spark’a Bağlanma
Spark’a ilk kez uzaktan bağlanıyorsanız IP adresini bulmanız gerekir. Spark’a bir monitör ve klavye bağlayıp 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 spark-ip yerine bu adresi kullanacaksınız. Alternatif olarak, NVIDIA Sync uygulamasını kontrol ederek de IP adresini bulabilirsiniz.
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. Eğitim boyunca karşınıza çıkan tüm komutları bilgisayarınızın bu terminaline gireceksiniz.
2. Docker İmajını Derleme
Unsloth, GB10 Grace Blackwell Superchip için özel olarak derlenmiş triton ve xformers çekirdeklerine ihtiyaç duyar. Bu çekirdekler standart Docker imajlarında bulunmaz; bu yüzden Unsloth’un DGX Spark için hazırladığı Dockerfile’ı kullanarak kendi docker imajımızı derleyeceğiz.
Önce Dockerfile’ı indirin:
Bu Dockerfile şunları içerir:
- nvcr.io/nvidia/pytorch:25.11-py3 — NGC PyTorch 25.11. Temel imaj (PyTorch 2.10, CUDA 13.0).
- triton (kaynaktan derleme) — Sürüm 3.4.0. Blackwell (SM 12.1) desteği için attention çekirdekleri.
- xformers (kaynaktan derleme) — Sürüm 0.0.33. Blackwell (SM 12.1) desteği için bellek verimli attention.
- unsloth — Sürüm 2026.7.5. İnce ayar optimizasyonu (2x hız, %70 az VRAM).
- unsloth_zoo — Sürüm 2026.7.6. Unsloth yardımcı araçları.
- bitsandbytes — Sürüm 0.50.0. 4-bit kuantizasyon (NF4).
- transformers — Sürüm 4.56.2. Model yükleme ve tokenizasyon.
- trl — Sürüm 0.22.2. GRPO eğitim döngüsü.
Şimdi imajı derleyin. Bu işlem yaklaşık 25-30 dakika sürecektir:
Derleme sırasında şu aşamaları göreceksiniz:
Derleme tamamlandığında şu çıktıyı göreceksiniz:
Önemli: UndefinedVar uyarıları zararsızdır, görmezden gelebilirsiniz.
İmajı kontrol edelim:
3. Konteyneri Başlatma
Eğitimin yapılacağı Docker konteynerini, GPU erişimi ve depolama birimi bağlama (volume mount) parametreleriyle başlatın:
Eğitim
4. Notebook’u İndirme
Unsloth’un GPT-OSS 20B modeline 2048 oynamayı öğreten RL notebook’unu indirin:
Bu Jupyter Notebook’u 60 hücreden (cell) oluşur ve şu adımları içerir:
- Modeli 4-bit QLoRA ile yükleme
- LoRA adaptörleri ekleme
- Oyun ortamını kurma
- Ödül fonksiyonları tanımlama
- GRPO (Grup Göreli Politika Optimizasyonu—Group Relative Policy Optimization) ile 1000 adımlı eğitim
- Eğitilmiş modeli kaydetme
5. Jupyter’ı Başlatma ve Notebook’u Çalıştırma
Konteyner içinde Jupyter Notebook sunucusunu başlatın:
Bu sunucu, Spark’taki .ipynb uzantılı dosyaları düzenlemenize ve çalıştırmanıza imkan veren bir web arayüzü sağlar. Arayüze erişmek için bilgisayarınızın tarayıcısından şu adrese gidin:
token kısmını terminalde gördüğünüz token (örn. 0388154bcd8cca584336b88ea9b84d09dbc302068f1e9a49) ile değiştirin. Dosya tarayıcısından gpt_oss_20B_RL_2048_Game.ipynb dosyasına tıklayarak notebook’u açın.
Model Kaydetme: Eğitim sırasında her 100 adımda bir kontrol noktası (checkpoint,) LoRA adaptör ağırlıklarıyla birlikte outputs/ dizinine otomatik kaydedilir. Fakat bu adaptör ağırlıklarının orijinal modelle birleştirilmiş (merge) halini kaydetme seçeneği devre dışıdır. Eğer eğitim sonrası modeli vLLM ile çıkarım için kullanmak üzere kaydetmek isterseniz, notebook’u çalıştırmadan önce bu seçeneği devreye almalısınız. Bunun için notebook’un son hücresine (Cell 58) gidin, bu hücredeki if False: satırlarını if True: olarak değiştirin. MXFP4 (OpenAI’nin 4-bit formatı) veya 16-bit formatından birini seçebilirsiniz:
model.save_pretrained_merged(“finetuned_model”, tokenizer, save_method = “mxfp4”)
Menü çubuğundan Cell → Run All’ı seçerek tüm hücreleri tek seferde sırayla çalıştırın. Her hücre çalışırken sol tarafında In [*]: göreceksiniz; tamamlandığında In [1]:, In [2]: şeklinde numaralanır. Eğitim sürecinin kalanını Jupyter kendisi halledecek. Dilerseniz notebook’un ilerleme sürecini web arayüzünden izleyebilirsiniz.
Önemli: Eğitim yaklaşık 4 saat sürecektir. Model indirme (~2 dk), model yükleme (~2 dk) ve 1000 adım eğitim (~3-4 saat) dahildir.
Aşağıda eğitim sonrası notebook’un web arayüzünden bazı ekran görüntüleri bulunmaktadır. Burada çeşitli kod hücrelerini ve açıklamaları görebilirsiniz:





Notebook hücreleri çalıştıkça, sırayla aşağıdaki adımlar gerçekleşecektir.
6. Model Yükleme
İlk kod hücresi (Cell 5) modeli 4-bit kuantizasyonla yükler. Bu adım modeli Hugging Face‘ten indirir (~12 GB) ve GPU belleğine yükler:
Ardından LoRA adaptörleri eklenir (Cell 7):
Bu noktada model hazırdır.
7. GRPO Eğitimi
Eğitim, trainer.train() hücresi çalıştığında başlar. GRPO (Group Relative Policy Optimization — Grup Göreli Politika Optimizasyonu) algoritması şu döngüyü 1000 kez tekrarlar:
- Modele
“2048 için bir strateji fonksiyonu yaz”promptu gönderilir. - Model 2 aday fonksiyon üretir.
- Her fonksiyon çalıştırılır:
- Geçerli Python mu? (
function_worksödülü) - Hile yapıyor mu? (
no_cheatingödülü) - 2048 oyununu kazanıyor mu? (
strategy_succeedsödülü)
- Geçerli Python mu? (
- Ödüller hesaplanır ve LoRA ağırlıkları güncellenir.
Eğitim başladığında şu çıktıyı göreceksiniz:
İlk adımlarda model çoğunlukla zaman aşımına uğrayan veya hata veren stratejiler üretir. Yaklaşık 150-200 adımdan sonra model geçerli stratejiler üretmeye başlar ve oyunları kazanmaya başlar. 1000 adım ve yaklaşık 4 saatlik eğitimden sonra model, orijinalinden çok daha iyi 2048 oynar.
Eğitim sırasında her adım için ödül değerlerini göreceksiniz:
State = success gördüğünüzde model bir strateji üretmiş ve 2048’e ulaşmıştır. Eğitim tamamlandığında şu çıktıyı göreceksiniz:
Sonuç
8. Eğitilmiş Modelin Değerlendirilmesi
Eğitim sonrası notebook, modelin yeni bir strateji (Python fonksiyonu olarak) üretmesini test eder. Eğitilmiş model, oyun tahtasını analiz eden, boş hücreleri sayan ve olası birleştirmeleri tespit eden sofistike stratejiler üretir:
Bu strateji, her hamlede boş hücre sayısını ve olası birleştirme fırsatlarını puanlar ve en yüksek puanlı hamleyi seçer. Bu, 2048 oyununda yaygın kullanılan bir sezgisel (heuristic) yaklaşımdır.
9. Kapatma
İşiniz bittiğinde konteynerden exit ile çıkın. Jupyter sunucusunu önce Ctrl+C ile durdurun. Konteyner durur ama Docker imajı, model önbelleği ve eğitim çıktıları diskte kalır. Tekrar eğitime devam etmek için 3. adımdaki docker run komutunu tekrar çalıştırmanız yeterlidir.
Eğitim sırasında kullanılan birleşik bellek (unified memory) kullanımı şu şekildedir:
- Boş Spark: ~4 GB
- Model yüklü (4-bit QLoRA): ~17 GB GPU + ~1 GB embedding offload
- Eğitim aktif: ~30 GB sistem toplam
- Boş bellek: ~90 GB
Aynı eğitim adımları GPT-OSS 120B modeli için uygulanırsa yaklaşık 68 GB birleşik bellek kullanılır — bu da DGX Spark‘ın 128 GB birleşik belleği içinde rahatça sığar.
OPENZEKA HABERLERİ
OPENZEKA HABERLERİ
Hesaplarınızda paylaşmak ister misiniz?




