Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

model - Model Yönetimi

Model kaydetme, yükleme ve serileştirme işlemleri

28.8x
Daha Hızlı
882x
Sıkıştırma
LZ4
Algoritma
100%
Doğruluk

Genel Bakış

model modülü, eğitilmiş modelleri kaydetmek, yüklemek ve paylaşmak için optimize edilmiş serileştirme sağlar. LZ4 sıkıştırma algoritması ile 28.8x daha hızlı kaydetme ve 882x daha küçük dosya boyutu sunar.

Öncesi (JSON)

880ms

Kaydetme süresi

131 MB

Dosya boyutu

Sonrası (LZ4)

30ms

Kaydetme süresi

0.15 MB

Dosya boyutu

Model Kaydetme

Basit Kayıt

kullan ai/model;
kullan ai/nn;

değişken model = Sequential::yeni([
    Linear::yeni(784, 256),
    ReLU::yeni(),
    Linear::yeni(256, 10)
]);

// Model eğitimi...

// LZ4 sıkıştırma ile kaydet
model.kaydet("model.berk")?;
yazdir("Model kaydedildi!");

Sıkıştırma Seviyeleri

kullan ai/model;

// Hızlı kaydetme (Level 1 - varsayılan)
model.kaydet_sıkıştırma("model.berk", seviye: 1)?;

// Maksimum sıkıştırma (Level 9)
model.kaydet_sıkıştırma("model_compressed.berk", seviye: 9)?;

// Sıkıştırmasız (debug için)
model.kaydet_ham("model_raw.berk")?;

Model Yükleme

Basit Yükleme

kullan ai/model;
kullan ai/nn;

// Model yapısını tanımla
değişken model = Sequential::yeni([
    Linear::yeni(784, 256),
    ReLU::yeni(),
    Linear::yeni(256, 10)
]);

// Ağırlıkları yükle
model.yükle("model.berk")?;

// Inference
değişken x = Tensor::rastgele([1, 784]);
değişken pred = model.ileri(x);
yazdir("Tahmin: {}", pred.argmax());

Kısmi Yükleme

kullan ai/model;

// Sadece belirli katmanları yükle
model.yükle_kısmi("model.berk", katmanlar: ["conv1", "conv2", "fc"])?;

// Transfer learning için
model.dondur_katmanlar(["conv1", "conv2"]); // Bu katmanları eğitme
model.çöz_katmanlar(["fc"]);                 // Sadece fc'yi eğit

Binary Format

Dosya Yapısı


┌─────────────────────────────────────┐
│ Magic Number (4 bytes): "BERK"     │
├─────────────────────────────────────┤
│ Version (2 bytes): 1.0              │
├─────────────────────────────────────┤
│ Compression Type (1 byte): LZ4=1   │
├─────────────────────────────────────┤
│ Metadata Length (4 bytes)           │
├─────────────────────────────────────┤
│ Metadata (JSON):                    │
│   - model_type                      │
│   - layer_count                     │
│   - param_count                     │
│   - created_at                      │
├─────────────────────────────────────┤
│ Compressed Tensor Data (LZ4)        │
│   Layer 1 weights + biases          │
│   Layer 2 weights + biases          │
│   ...                               │
└─────────────────────────────────────┘

Model Metadata

Metadata Okuma

kullan ai/model;

değişken metadata = Model::oku_metadata("model.berk")?;

yazdir("Model tipi: {}", metadata.model_type);
yazdir("Parametre sayısı: {}", metadata.param_count);
yazdir("Oluşturulma: {}", metadata.created_at);
yazdir("Berk versiyonu: {}", metadata.berk_version);

// Dosya boyutu
yazdir("Dosya boyutu: {} MB", metadata.file_size / 1024.0 / 1024.0);

Checkpoint Yönetimi

Training Checkpoints

kullan ai/model;
kullan ai/train;

// Her 10 epoch'ta kaydet
her epoch içinde aralık(100) için yap
    trainer.eğit_epoch();
    
    eğer epoch % 10 == 0 ise yap
        model.kaydet(f"checkpoints/epoch_{epoch}.berk")?;
        yazdir("Checkpoint kaydedildi: epoch {}", epoch);
    son
son

// En iyi modeli kaydet
eğer val_loss < best_loss ise yap
    model.kaydet("checkpoints/best_model.berk")?;
    best_loss = val_loss;
son

Model Export

ONNX Export

kullan ai/model;

// ONNX formatına çevir
model.onnx_export(
    path: "model.onnx",
    input_shape: [1, 3, 224, 224],
    opset_version: 13
)?;

// TorchScript export
model.torchscript_export("model.pt")?;

// TensorFlow SavedModel
model.tensorflow_export("saved_model/")?;

Performans Optimizasyonları

LZ4 Compression

  • Level 1: Hızlı sıkıştırma (varsayılan) - 28.8x daha hızlı
  • Dictionary: Tekrar eden ağırlık paternleri için optimize
  • Parallel: Çok çekirdekli sıkıştırma desteği
  • Streaming: Büyük modeller için memory-efficient

Performans Metrikleri

İşlemJSON (Öncesi)LZ4 (Sonrası)İyileştirme
Model Kaydetme880ms30ms28.8x daha hızlı
Model Yükleme~1000ms99ms10.1x daha hızlı
Dosya Boyutu131 MB0.15 MB882x daha küçük
Doğruluk100%100%Kayıpsız

API Referansı

Model Sınıfı

  • kaydet(path: dizgi) -> Sonuç - Model kaydet (LZ4 Level 1)
  • yükle(path: dizgi) -> Sonuç - Model yükle
  • kaydet_sıkıştırma(path: dizgi, seviye: tamsayı) -> Sonuç - Özel sıkıştırma seviyesi
  • yükle_kısmi(path: dizgi, katmanlar: [dizgi]) -> Sonuç - Kısmi yükleme
  • oku_metadata(path: dizgi) -> Metadata - Sadece metadata oku
  • onnx_export(path: dizgi, ...) -> Sonuç - ONNX export

Checkpoint Sınıfı

  • kaydet_checkpoint(epoch, model, optimizer, metrics)
  • yükle_checkpoint(path) -> (epoch, model, optimizer)
  • en_iyi_checkpoint() -> dizgi - En iyi checkpoint path
  • checkpoint_listesi() -> [dizgi] - Tüm checkpoints