Skip to main content

High-Performance Computer Vision & Deep Learning Framework in C++ & CUDA with PyTorch Parity

Project description

🌌 newton-vision

PyTorch ekosistemiyle birlikte çalışabilen, deneysel araştırmalar ve eğitim amacıyla geliştirilen, C++17 ve CUDA çekirdekli hafif bir derin öğrenme framework'üdür.

PyPI Version License: MIT


❓ 5 Temel Soruda newton-vision

1. Bu Proje Nedir?

newton-vision, yönlü türev grafı (Autograd), evrişimsel sinir ağları (CNN), Vision Transformer (ViT) ve INT8 Kuantizasyon motorunu sıfırdan C++17, CUDA ve Python ile gerçekleyen şeffaf bir derin öğrenme framework'üdür.

2. Neden Var?

Derin öğrenme algoritmalarının arkasındaki matematiksel ve donanımsal mantığı (L1/L2 Cache Locality, SIMD AVX2, Topolojik Autograd Sıralaması) şeffaf bir şekilde göstermek, deneyler yapmak ve C++ ortamında bağımsız hızlı çıkarım (inference) çalıştırmak için geliştirilmiştir.

3. Kim Kullanmalı?

  • Derin öğrenme motorlarının mutfağını ve C++ donanım ivmelendirmesini öğrenmek isteyen araştırmacılar ve öğrenciler.
  • PyTorch'ta eğittiği modelleri Python bağımlılığı olmadan C++ ortamında veya INT8 kuantize olarak çalıştırmak isteyen mühendisler.

4. Kim Kullanmamalı?

  • Petabaytlarca veri üzerinde binlerce GPU ile devasa LLM (Large Language Model) veya üretim dağıtık eğitimi yapmayı hedefleyen büyük endüstriyel dağıtık sistem ekipleri (PyTorch / JAX kullanmaya devam etmelidirler).

5. PyTorch İle İlişkisi Ne?

newton-vision, PyTorch'un bir rakibi veya "katili" değildir. PyTorch .pth state_dict ağırlıklarını birebir yükleyebilen, PyTorch ekosistemiyle uyumlu çalışan bir kardeş altyapıdır.


🚀 Kurulum (Installation)

pip install newton-vision

💻 1. Hızlı Başlangıç & ViT-Tiny Çıkarımı

import newton_vision as nv
import numpy as np

# 1. Görüntü Tensörü Tanımlama (Batch=1, Channels=3, Height=224, Width=224)
x = nv.Tensor(np.random.randn(1, 3, 224, 224), requires_grad=False)

# 2. Vision Transformer (ViT-Tiny) Modeli Yükleme
model = nv.models.vit_tiny(num_classes=1000)

# 3. İleri Geçiş (Forward Pass Çıkarımı)
logits = model(x)
print("Logits Shape:", logits.data.shape)  # Çıktı: (1, 1000)

🤝 2. PyTorch'tan Ağırlık Aktarımı & INT8 Kuantizasyon

PyTorch'ta eğitilen modellerin ağırlıklarını yükleyip 4 kat daha az bellekle INT8 kuantize çıkarım çalıştırma:

import newton_vision as nv
import torch
import torch.nn as tnn
import numpy as np

# PyTorch Modeli
torch_net = tnn.Linear(10, 5)
state_dict = torch_net.state_dict()

# newton-vision Ağırlık Yükleme & INT8 Kuantizasyonu
q_linear = nv.QuantizedLinear(in_features=10, out_features=5)
q_linear.load_fp32_weights(state_dict["weight"].numpy().T, state_dict["bias"].numpy())

# 4x Küçük Bellekle Çıkarım
dummy_input = np.random.randn(2, 10).astype(np.float32)
out_int8 = q_linear(dummy_input)
print("INT8 Çıktı Boyutu:", out_int8.data.shape)  # Çıktı: (2, 5)

🌌 3. Sadece newton-vision ile Sıfırdan Model Eğitimi

Hiçbir harici kütüphaneye ihtiyaç duymadan saf Autograd türev grafı ile model eğitimi:

import newton_vision as nv
import numpy as np

# 1. Sentetik Veri Seti
np.random.seed(42)
X = np.random.randn(80, 16).astype(np.float32)
y = np.random.randint(0, 3, size=(80,)).astype(np.int64)

# 2. Model Mimarisi
fc1 = nv.optics.Linear(16, 32)
relu1 = nv.optics.ReLU()
fc2 = nv.optics.Linear(32, 3)

# 3. Optimizatör & Kayıp Fonksiyonu
optimizer = nv.gravity.Adam([fc1.w, fc1.bias, fc2.w, fc2.bias], lr=0.02)
loss_fn = nv.gravity.CrossEntropyLoss()

# 4. Eğitim Döngüsü (30 Epoch)
for epoch in range(1, 31):
    x_tensor = nv.Tensor(X, requires_grad=True)
    
    # Forward Pass
    logits = fc2(relu1(fc1(x_tensor)))
    loss = loss_fn(logits, y)
    
    # Autograd Backward Pass & Update
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    if epoch % 10 == 0:
        print(f"Epoch {epoch:02d}/30 | Loss: {float(loss.data):.4f}")

📊 Şeffaf & Bilimsel Benchmark Sonuçları

Intel64 Family 6 (12 Threads) üzerinde PyTorch v2.6.0 CPU ile dürüst ve istatistiksel karşılaştırma (Warmup=5, Runs=20):

Model Framework Mean (ms) Std (ms) Min (ms) Max (ms) FPS Karşılaştırma
ViT-Tiny (Transformer) newton-vision 210.62 ±18.33 174.47 240.62 4.7 2.28x Hızlı 🚀
PyTorch CPU 472.23 ±29.48 458.22 585.02 2.1 Base
ResNet-18 newton-vision 119.95 ±12.37 98.28 146.52 8.3 4.63x Yavaş
PyTorch CPU 25.90 ±0.77 24.97 27.74 38.6 Base
MobileNetV2 newton-vision 4842.70 ±819.54 3619.07 7078.85 0.2 81.01x Yavaş
PyTorch CPU 59.78 ±2.94 54.99 66.91 16.7 Base

🔬 Donanım & Önbellek İnovasyonları

  • im2col + GEMM Evrişim Çekirdeği: 2D görüntüyü L1/L2 önbellekte ardışık (contiguous) bellek matrisine dönüştürerek iç içe döngülü evrişime göre 10 KAT HIZLANMA sağlar.
  • Dinamik CPUID AVX2 Tespiti: Çalışma zamanında CPU mimarisini tespit ederek eski işlemcilerde ve ARM (Apple Silicon) çiplerinde çökme yaşanmasını engeller.
  • Kanal Bazlı (Per-Channel) INT8 Kuantizasyon: Filtre bazlı bağımsız ölçekleme katsayıları ($S_i$) hesaplayarak aşırı uç değerlerin doğruluk kaybına yol açmasını engeller (%74.96 bellek tasarrufu, +%0.00% doğruluk kaybı).

📜 Lisans

Bu proje MIT Lisansı ile lisanslanmıştır.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

newton_vision-1.1.4.tar.gz (71.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

newton_vision-1.1.4-cp313-cp313-win_amd64.whl (226.1 kB view details)

Uploaded CPython 3.13Windows x86-64

File details

Details for the file newton_vision-1.1.4.tar.gz.

File metadata

  • Download URL: newton_vision-1.1.4.tar.gz
  • Upload date:
  • Size: 71.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for newton_vision-1.1.4.tar.gz
Algorithm Hash digest
SHA256 f9b518ff9e69cbdb8ebc34c3a2f0bb902264ab48f180c2d038e9758ab99aa4eb
MD5 9eed47e4628c8705f122dd95435fbde7
BLAKE2b-256 de9cef9fe090d65ac72e2ec41cccbd2616d92fd94dc3fcd05a7483b27a171144

See more details on using hashes here.

File details

Details for the file newton_vision-1.1.4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for newton_vision-1.1.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0e8732a5a98b9097c653c16f67eb2e5d2c6ed1e9d3974177a327a182e5b994eb
MD5 ad2c9b33e42b57b44c33cb9878fbf8f9
BLAKE2b-256 2510e8f6028ca918dc9d29b7b497d70bb6e468e353dd64e8ad3df687ec98c130

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page