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
| İşlem | JSON (Öncesi) | LZ4 (Sonrası) | İyileştirme |
|---|---|---|---|
| Model Kaydetme | 880ms | 30ms | 28.8x daha hızlı |
| Model Yükleme | ~1000ms | 99ms | 10.1x daha hızlı |
| Dosya Boyutu | 131 MB | 0.15 MB | 882x daha küçük |
| Doğruluk | 100% | 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üklekaydet_sıkıştırma(path: dizgi, seviye: tamsayı) -> Sonuç- Özel sıkıştırma seviyesiyükle_kısmi(path: dizgi, katmanlar: [dizgi]) -> Sonuç- Kısmi yüklemeoku_metadata(path: dizgi) -> Metadata- Sadece metadata okuonnx_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 pathcheckpoint_listesi() -> [dizgi]- Tüm checkpoints