Bu eğitimde, GLM-5.2 büyük dil modelini 4 adet DGX Spark üzerinde paylaştırarak çalıştıracağız. Bunun için sparkrun kullanacağı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 modeli çalıştıracağız.
Dil modeli olarak GLM-5.2 (744 milyar parametreli bir Mixture-of-Experts modeli, ~40 milyar parametre aktif, int4/int8 kuantizasyonu), çıkarım motoru olarak vLLM, ve yönetim aracı olarak sparkrun 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. sparkrun ise komut satırı üzerinden Docker konteynerlerini ve Spark’lar arasında model dağıtımını yönetecek. Bu sayede imaj senkronizasyonu, model aktarımı ve cluster yapılandırması gibi işlemleri otomatik olacak. İkisi de ana Spark üzerinde, Docker konteynerleri içinde çalışacak.
Bu eğitim üç bölümden oluşur:
- Kurulum: Docker imajı indirme ve recipe hazırlama
- Çalıştırma: Modeli 4 Spark üzerinde başlatma, izleme, test etme ve kapatma
- Benchmark: Farklı eşzamanlılık seviyelerinde performans ölçümü
Eğitim boyunca ana cihaza Main Spark, diğer cihazlara ise Worker Spark denileceğini unutmayın.
Kurulum
Önceki eğitimlerde Spark’a bağlanma, ve sparkrun kurulumu ve çoklu Spark küme yapılandırma süreçleri adım adım anlatıldı. Bu eğitimde tüm bu adımların yapılmış ve kurulumunuzun hazır olduğunu varsayıyoruz.
Bu eğitim 4 DGX Spark gerektirir. Ana cihaza main-spark-ip, diğer üç cihaza ise worker-spark-ip-1, worker-spark-ip-2 ve worker-spark-ip-3 diyeceğiz. Her cihazın IP adresini önceden not edin.
1. Docker İmajını İndirme
GLM-5.2’nin DeepSeek Sparse Attention (DSA) mimarisi, GB10 (SM 12.1) için derlenmiş çekirdeklere ihtiyaç duyar. Standart vLLM imajları bu çekirdekleri içermez. Bu yüzden, gereken yamaları içeren özel bir Docker imajı kullanacağız.
OpenZeka tarafından hazırlanmış docker imajını indirmek için şu komutu çalıştırın:
İmajı doğrulayın:
2. Recipe Hazırlama
Recipe, sparkrun’ın modeli nasıl çalıştıracağını tanımlayan bir YAML dosyasıdır. Model, Docker imajı, vLLM bayrakları ve bellek ayarları tek dosyada toplanır. GLM-5.2 için bu recipe, 4 düğümde tensor parallelism (model ağırlık matrisleri paylaşımı) ve decode context parallelism (KV önbelleği ve attention hesaplaması paylaşımı) kullanır.
Aşağıdaki komutu kullanarak recipe dosyasını kaydedin.
Dosyayı doğrulayın:
Çalıştırma
1. Önbelleği Temizleme
vLLM’i başlatmadan önce her Spark’ta dosya sistemi önbelleğini boşaltın. Bunu yapmamızın temel sebebi DGX Spark’ın birleşik bellek mimarisi (UMA) olmasıdır: İş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.
Main Spark’ta önbelleği temizleyin:
Main Spark’tan SSH ile Worker Spark’larda da aynı temizliği uygulayın:
2. Başlatma Öncesi Kontroller
sparkrun’ın recipe’yi doğru ayrıştırdığını ve bellek bütçesinin uygun olduğunu doğrulayın:
sparkrun, recipe’yi doğru ayrıştırdı, vllm-distributed’ı seçti ve ‘DGX Spark fit: YES’ onayını verdi. Bilinmeyen dtype uyarılarını görmezden gelebilirsiniz — bunlar b12x/DCP’ye özel tiplerdir ve sparkrun tanıyamaz.
Şimdi başlatma planını önizleyin:
Dry run başarılı. Recipe geçerli, ‘Mode: cluster (4 nodes)’ görüldü ve serve command tüm bayrakları içeriyor. Model Spark’ta kurulu değilse, sparkrun ilk başlatmada modeli Hugging Face’ten otomatik indirecektir. Dry run bu indirmeyi tetiklemez, indirme yalnızca gerçek başlatmada olur.
3. Modeli Başlatma
Şimdi modeli başlatalım:
–no-follow bayrağı, sparkrun’ın konteynerleri başlattıktan sonra komut satırına dönmesini sağlar. sparkrun otomatik olarak imajı Worker’lara senkronize eder (aynı ID ise atlar), modeli head node’a indirir ve Worker’lara dağıtır (zaten varsa atlar), NCCL yapılandırmasını CX-7 arayüzleri için ayarlar ve her Spark’ta konteyner başlatır.
sparkrun 6 adımı başarıyla tamamladı. ‘Mode: cluster (4 nodes)’ görüldü. sparkrun, imajı 3 Worker’a CX-7 ağı üzerinden senkronize etti ve modeli Hugging Face’ten indirip 4 düğüme dağıttı. Serve command içinde tüm bayraklar doğru çözüldü.
4. 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.
vLLM loglarını 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.
Başlangıç süreci yaklaşık 10 dakika sürer. Bu süreçte:
- Mimari GlmMoeDsaForCausalLM olarak çözümlenir (DeepSeek Sparse Attention + MoE)
- MTP draft modeli (DeepSeekMTPModel) başlatılır — speculative decoding aktif (k=4)
- B12X_MLA_SPARSE attention backend’i seçilir — DeepGEMM atlanır
- 128 safetensors shard yüklenir (~5 dakika, düğüm başına 96.71 GiB)
- Draft modeli 4 shard olarak yüklenir (~8 saniye)
- torch.compile ~38 saniye (backbone) + ~6 saniye (eagle head) sürer
- CUDA graph capture FULL + PIECEWISE modlarda başarıyla yakalanır (14 saniye)
- KV cache: 8.38 GiB, 657,664 token, 131K token için 5.02x eşzamanlılık
5. Modeli Test Etme
Öncelikle sunucunun çalıştığını doğrulayın:
‘HTTP 200’ yanıtı sunucunun sağlıklı olduğunu gösterir. Şimdi sparkrun konteyner durumunu kontrol edin:
Dört konteyner de çalışıyor.
Kayıtlı modelleri listeleyin:
Model glm-5.2 olarak kayıtlı.
Şimdi modeli, tek cümlelik “2+2 kaç eder?” promptuyla test edin:
Yanıtın basitleştirilmiş hali aşağıdaki gibi olacaktır. content alanında (modelin verdiği yanıt) “2+2, 4 eder.” ifadesini göreceksiniz. Buradan, modelin toplama 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:
LLM şu an çalışıyor ve Main Spark’ın 8210 portundan servis sağlıyor. GLM-5.2’ye soru sorup cevap alabiliyoruz. Dilerseniz, modeli bir web arayüzü (ör. Open WebUI) veya ajan mimarisiyle (ör. OpenCode) kullanabilirsiniz.
6. Kapatma
İşiniz bittiğinde modeli durdurun:
Bu komutla konteyner durdurulur ve bellek alanı boşalır. Ama konteyner, Docker imajı ve model dosyaları diskte kalır. Böylelikle tekrar başlatmak için yeniden indirme yapmanız gerekmez. 3. adımdaki sparkrun run komutunu tekrar çalıştırmanız yeterli.
Benchmark
GLM-5.2 modelini farklı eşzamanlılık (concurrency) seviyelerinde test ettik. Ölçümlerde ortalama TTFT (Time to First Token — ilk token’ın üretime başlama süresi) ve TPS (Tokens Per Second — saniye başına üretilen token sayısı) değerleri kaydedilmiştir. Görüldüğü üzere, saniyede 27 token değerinin üzerine çıkılmıştır.
| Eşzamanlılık | TTFT Ort. (ms) | TPS ort. (tok/s) |
|---|---|---|
| 1 | 490 | 27.4 |
| 2 | 717 | 20.0 |
| 4 | 955 | 14.3 |
| 8 | 6560 | 8.5 |
Ölçümler, CordatusAI LLM Benchmark Tool kullanılarak alınmıştır. Bu araç, CordatusAI tarafından geliştirilen ve OpenAI uyumlu API’lere sahip LLM sunucularını test eden bir benchmarking uygulamasıdır. Aşağıda, benchmark aracımızın web arayüzünü ve ürettiği çeşitli grafikleri görebilirsiniz:



OPENZEKA HABERLERİ
OPENZEKA HABERLERİ
Hesaplarınızda paylaşmak ister misiniz?





