Okuma 8.3 dkKategoriler: AI

Açık kaynaklı üretken yapay zeka modellerindeki patlama, veri merkezlerinin ötesine geçerek fiziksel dünyada çalışan makinelere doğru genişliyor. Geliştiriciler, ağır işleri otomatikleştirmek için fiziksel yapay zeka ajanlarını ve otonom robotları etkinleştirerek bu modelleri uç noktalarda dağıtmak için sabırsızlanıyor.

Ancak temel bir zorluk var: Sınırlı belleğe sahip edge cihazlarda milyarlarca parametreli modelleri verimli bir şekilde nasıl çalıştırabiliriz?

NVIDIA Jetson platformu, popüler açık kaynaklı modelleri desteklerken güçlü bir runtime performansı sunar. Ancak bulut ortamlarının aksine, CPU ve GPU’nun kısıtlı kaynakları aynı havuzda paylaştığı edge cihazlarda memory footprint (bellek ayak izi), bir sistemin çalışıp çalışmayacağını belirleyen en temel unsurdur. Verimsiz bellek kullanımı; bottleneck’lere (darboğaz), gecikme artışlarına veya sistemin çökmesine (OOM – Out of Memory) neden olabilir.

Bu yazıda, NVIDIA Jetson sistemlerinde performansı ve verimliliği en üst düzeye çıkarmak için kullanabileceğiniz 5 katmanlı bellek optimizasyon stratejilerini NVIDIA’nın sunduğu veriler eşliğinde inceleyeceğiz.

Şekil 1. Bir NVIDIA donanım platformundaki tipik Edge AI yazılım yığını

1. Temel Katmanlar: BSP ve JetPack Optimizasyonları

NVIDIA Jetson Board Support Package (BSP) ve JetPack katmanı yazılım yığınının temelini oluşturur. Bu katmanda, kullanılmayan servisleri devre dışı bırakarak çekirdek işlevselliği etkilemeden çok ciddi miktarda RAM’i yapay zeka modelleriniz için serbest bırakabilirsiniz.

Aşağıdaki tablo, Jetson Orin NX ve Orin Nano cihazlarında uygulanabilecek bazı temel optimizasyonları ve kazandırdıkları bellek miktarlarını göstermektedir:

Optimizasyon Ayarı Geri Kazanılabilecek Bellek Uygulama Komutu / Yöntemi
GUI’yi Kapatmak: Ekran ve UI ile ilgili hizmetleri devre dışı bırakır.  865 MB’a kadar sudo systemctl set-default multi-user.target
Gereksiz Servisleri Kapatmak: Ağ bağlantısı, journaling gibi temel olmayan hizmetler. 32 MB’a kadar sudo systemctl disable <servis-adi>

Tablo 1: BSP ve JetPack seviyesindeki bellek optimizasyon ayarları

Özellikle sistemde arayüz gerekmeyen (headless) durumlarda masaüstünü kapatmak, sadece tek bir komutla neredeyse 1 GB’a yakın bellek kazandırır.

2. “Carveout” (Ayrılmış Bellek) Optimizasyonu

NVIDIA Jetson cihazları başlatılırken, belirli donanım motorları, kameralar ve ekran alt sistemleri için ayrılmış fiziksel bellek alanları (Carveout) yaratılır. Bu alanlara Linux veya CUDA tarafından erişilemez. Eğer projenizde ekran veya kameraya ihtiyaç yoksa, Device Tree üzerinden bu alanları devre dışı bırakarak sisteme fazladan bellek kazandırabilirsiniz.

Carveout Alanı Ne Zaman Kapatılmalı? Nasıl Kapatılmalı? Geri Kazanılan Bellek (DRAM)
CARVEOUT_DCE_TSEC Ekrana (Display) ihtiyaç duyulmadığında Not 1’i referans alın ve cihazı yeniden flaşlayın. Toplam ~68 MB
CARVEOUT_DCE Ekrana (Display) ihtiyaç duyulmadığında Not 1’i referans alın ve cihazı yeniden flaşlayın. Toplam ~68 MB
CARVEOUT_DISP_EARLY_BOOT_FB Ekrana (Display) ihtiyaç duyulmadığında Not 1’i referans alın ve cihazı yeniden flaşlayın. Toplam ~68 MB
CARVEOUT_TSEC_DCE Ekrana (Display) ihtiyaç duyulmadığında Not 1’i referans alın ve cihazı yeniden flaşlayın. Toplam ~68 MB
CARVEOUT_CAMERA_TASKLIST Kameraya ihtiyaç duyulmadığında Not 2’yi referans alın ve cihazı yeniden flaşlayın. Toplam ~33 MB
CARVEOUT_RCE Kameraya ihtiyaç duyulmadığında Not 2’yi referans alın ve cihazı yeniden flaşlayın. Toplam ~33 MB

Tablo 2: Çeşitli Carveout’lar için bellek optimizasyon ayarları

Not 1: Ekran gerekmediğinde bellek optimizasyonunun nasıl yapılabileceği aşağıda gösterilmektedir.

Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts dosyasındaki /misc/carveout/ düğümünün içine şu kod parçasını ekleyin:

Copy to Clipboard

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi dosyasındaki /mb2-misc/auxp_controls@3/ düğümünün içeriğini şu şekilde güncelleyin:

Copy to Clipboard

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi dosyasındaki /mb2-misc/auxp_ast_config@6 ve /mb2-misc/auxp_ast_config@7 düğümlerini tamamen kaldırın. Çekirdek dtb dosyasını dts dosyasına dönüştürmek için dtc aracını kullanın, /display@13800000 düğümünün durumunu disabled olarak işaretleyin ve ardından dts’yi tekrar çekirdek dtb dosyasına derleyin:

Copy to Clipboard
Not 2: Bir kameraya ihtiyaç duyulmadığında kullanıcının nasıl bellek optimizasyonu yapabileceği aşağıda gösterilmektedir.

Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb1-bct-misc-p3767-0000.dts dosyasının /misc/carveout/ düğümü içine aşağıdaki kod parçasını ekleyin:

Copy to Clipboard

Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi dosyasındaki /mb2-misc/auxp_controls@2/ düğümünün içeriğini şu şekilde güncelleyin:

Copy to Clipboard

3. Kullanıcı Alanı ve Kernel Optimizasyonları

Jetson üzerinde toplam bellek hem CPU hem de GPU (donanım/NvMap) tahsislerini içerir.

  • CPU Tarafı: procrank aracını derleyip çalıştırarak fiziksel bellek kullanımını (PSS) detaylıca görebilirsiniz. gnome-shell, Xorg veya açık unutulmuş Python süreçlerini sonlandırmak önemlidir.
  • Donanım/GPU Tarafı: sudo cat /sys/kernel/debug/nvmap/iovmm/clients komutu ile NvMap (CUDA, video pipeline’ları) tarafından rezerve edilen belleği görebilirsiniz. Gereksiz grafik pipeline’larını sonlandırmak AI iş yüklerine alan açacaktır.
  • SWIOTLB Ayarı (Kernel): Donanımsal IOMMU’ya sahip Orin platformlarında genellikle gereksiz olan SWIOTLB rezervasyonunu, kernel başlatma parametresi olan “swiotlb=” değerini düzenleyerek küçültebilir ve belleği optimize edebilirsiniz.

4. Inference Pipeline Optimizasyonu

Video ve sensör akışlarını işleyen NVIDIA DeepStream gibi framework’ler üzerinden gerçekleştirilen süreçlerde uygulanacak doğru mühendislik kararları memory footprint’i büyük ölçüde düşürür.

Optimizasyon Ayarı Geri Kazanılabilecek Bellek
BareMetal yerine Container Kullanımı 70 MB’a kadar
Python yerine C++ Kullanımı 84 MB’a kadar
Pipeline Ayarları: Tiler/OSD kapatmak ve FakeSink kullanmak 258 MB’a kadar
TOPLAM POTANSİYEL TASARRUF 412 MB

Tablo3: DeepStream tarzı inference pipeline’ında belleği azaltmaya yardımcı olan yöntemler

5. Inference Framework’leri ve Model Niceleme (Quantization)

Son ve belki de en kritik adım, modelin kendisini cihazın kaynaklarına uydurmaktır. Modelleri çalıştırmak için vLLM, SGLang veya özellikle edge cihazlarda belleği harika yöneten Llama.cpp (veya TensorRT Edge-LLM) gibi inference altyapıları kullanılabilir.

Quantization: Ağırlıkları ve aktivasyonları yüksek hassasiyetli veri tiplerinden (örneğin FP16) daha düşük hassasiyetli veri tiplerine (örneğin INT4) dönüştürme işlemidir. NVIDIA mühendislerinin Orin Nano 8GB üzerinde Cosmos Reason 2 (2B parametreli VLM) ile yaptığı testler, quantization’ın etkisini açıkça göstermektedir:

Model Formatı Gerekli Bellek (VLM Çıkarımı) 8GB Jetson Orin Nano Sonucu
FP16 (Orijinal) 6.6 GB Sistem çökmesi / OOM (Uygulamanın kalanı çalışamaz)
Q4_K_M (4-bit Quantization) 2.2 GB Başarılı. Uygulama ~4.4 GB kazanım ile sorunsuz çalışır.

Tablo 4: 8GB bir cihazda donanım limitleri içinde kalmak için Quantization’ın önemi

Niceleme işlemi, hedeflenen kullanım senaryosu için belirgin doğruluk ve performans gereksinimlerine göre yönlendirilmelidir. Bir niceleme şeması seçmeden önce şunları tanımlayın:

  • Kabul edilebilir minimum model kalitesi veya görev doğruluğu.
  • Hedeflenen veri çıkışı (throughput) ve gecikme (latency).
  • Dağıtım kısıtlamaları, özellikle de kullanılabilir GPU belleği.

Bu gereksinimler netleştikten sonra önerilen yaklaşım, daha düşük hassasiyetli niceleme seçeneklerini kademeli olarak değerlendirmektir. En yüksek doğruluklu temel seviyeden başlayın ve model artık gereken kalite eşiğini karşılamayana kadar desteklenen niceleme formatları boyunca aşağı doğru ilerleyin. Seçilen niceleme noktası, kullanım senaryosunun doğruluk gereksinimini hala karşılayabilen en düşük hassasiyet seviyesi olmalıdır; zira bu, genellikle en iyi bellek tasarrufunu ve verimliliği sağlar.

Şekil 2. Llama.cpp üzerinde Qwen3 4B modeli için INT4 ve BF16 karşılaştırması (Jetson Orin NX 16 GB)

Sonuç

Geliştiriciler olarak edge cihazlarda büyük dil modelleri ve otonom sistemler geliştirirken donanımın sınırlarına takılmak zorunda değiliz. Arka planda çalışan gereksiz bir GUI’yi kapatarak, kullanılmayan “Carveout” donanım alanlarını işletim sistemine geri döndürerek, pipeline’daki görselleştirme eklentilerinden kurtularak ve en önemlisi Quantization uygulayarak 8 GB’lık bir NVIDIA Jetson’da bile yüksek kapasiteli modelleri sorunsuzca koşturabiliriz.

Bu yaklaşımlar yalnızca modellerin sığmasını sağlamaz, aynı zamanda güç tüketimini (watt başına performansı) iyileştirir ve gecikmeyi azaltarak gerçek zamanlı stabilite sağlar.

👉 İhtiyacınıza uygun NVIDIA Jetson platformlarını incelemek ve satın almak için mağazamızı ziyaret edebilirsiniz.

Mağaza >>

Edge AI ve Jetson ekosistemiyle ilgili daha fazla optimizasyon taktiği ve rehber için OpenZeka blogunu takip etmeye devam edin!

OPENZEKA HABERLERİ

Abone olmak ister misiniz?

Hemen ilgilendiğiniz alanları seçerek bültenimizden haberdar olabilirsiniz.

Kategoriler

OPENZEKA HABERLERİ

Abone olmak ister misiniz?

Hemen ilgilendiğiniz alanları seçerek bültenimizden haberdar olabilirsiniz.

Kategoriler

Hesaplarınızda paylaşmak ister misiniz?

İlgili Yazılar