tensor-lattice-neural-layer 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tensor_lattice_neural_layer-0.1.0/PKG-INFO +40 -0
- tensor_lattice_neural_layer-0.1.0/README.md +17 -0
- tensor_lattice_neural_layer-0.1.0/setup.cfg +4 -0
- tensor_lattice_neural_layer-0.1.0/setup.py +25 -0
- tensor_lattice_neural_layer-0.1.0/tensor_lattice_neural_layer.egg-info/PKG-INFO +40 -0
- tensor_lattice_neural_layer-0.1.0/tensor_lattice_neural_layer.egg-info/SOURCES.txt +11 -0
- tensor_lattice_neural_layer-0.1.0/tensor_lattice_neural_layer.egg-info/dependency_links.txt +1 -0
- tensor_lattice_neural_layer-0.1.0/tensor_lattice_neural_layer.egg-info/requires.txt +1 -0
- tensor_lattice_neural_layer-0.1.0/tensor_lattice_neural_layer.egg-info/top_level.txt +1 -0
- tensor_lattice_neural_layer-0.1.0/tlnl/__init__.py +17 -0
- tensor_lattice_neural_layer-0.1.0/tlnl/core.py +13 -0
- tensor_lattice_neural_layer-0.1.0/tlnl/layers.py +37 -0
- tensor_lattice_neural_layer-0.1.0/tlnl/utils.py +25 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tensor-lattice-neural-layer
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Tensor Lattice Neural Layer for PyTorch memory and latency optimization
|
|
5
|
+
Home-page: https://github.com/aamubaroq85-crypto/tensor-lattice-neural-layer
|
|
6
|
+
Author: Baroq
|
|
7
|
+
Author-email: aamubaroq85@gmail.com
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: torch>=1.12.0
|
|
14
|
+
Dynamic: author
|
|
15
|
+
Dynamic: author-email
|
|
16
|
+
Dynamic: classifier
|
|
17
|
+
Dynamic: description
|
|
18
|
+
Dynamic: description-content-type
|
|
19
|
+
Dynamic: home-page
|
|
20
|
+
Dynamic: requires-dist
|
|
21
|
+
Dynamic: requires-python
|
|
22
|
+
Dynamic: summary
|
|
23
|
+
|
|
24
|
+
# ⚡ TLNL: Tensor Lattice Neural Layer
|
|
25
|
+
|
|
26
|
+
[](https://badge.fury.io/py/tlnl)
|
|
27
|
+
[](https://opensource.org/licenses/MIT)
|
|
28
|
+
|
|
29
|
+
**TLNL** adalah paket *drop-in replacement layer* untuk PyTorch yang dirancang untuk mengoptimalkan efisiensi memori (VRAM) serta mempercepat waktu inferensi (latensi) pada arsitektur Deep Learning berbasis **Transformasi Latis Non-Linier**.
|
|
30
|
+
|
|
31
|
+
## 🚀 Fitur Utama
|
|
32
|
+
|
|
33
|
+
- **VRAM Savings:** Mengurangi konsumsi memori GPU hingga **~55%**.
|
|
34
|
+
- **Accelerated Inference:** Peningkatan kecepatan inferensi hingga **1.22x** dibandingkan `nn.Linear` standar.
|
|
35
|
+
- **Drop-in Replacement:** Sangat mudah diintegrasikan ke dalam model PyTorch yang sudah ada.
|
|
36
|
+
|
|
37
|
+
## 📦 Instalasi
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install tlnl
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# ⚡ TLNL: Tensor Lattice Neural Layer
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/tlnl)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
**TLNL** adalah paket *drop-in replacement layer* untuk PyTorch yang dirancang untuk mengoptimalkan efisiensi memori (VRAM) serta mempercepat waktu inferensi (latensi) pada arsitektur Deep Learning berbasis **Transformasi Latis Non-Linier**.
|
|
7
|
+
|
|
8
|
+
## 🚀 Fitur Utama
|
|
9
|
+
|
|
10
|
+
- **VRAM Savings:** Mengurangi konsumsi memori GPU hingga **~55%**.
|
|
11
|
+
- **Accelerated Inference:** Peningkatan kecepatan inferensi hingga **1.22x** dibandingkan `nn.Linear` standar.
|
|
12
|
+
- **Drop-in Replacement:** Sangat mudah diintegrasikan ke dalam model PyTorch yang sudah ada.
|
|
13
|
+
|
|
14
|
+
## 📦 Instalasi
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pip install tlnl
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import setuptools
|
|
2
|
+
|
|
3
|
+
with open("README.md", "r", encoding="utf-8") as fh:
|
|
4
|
+
long_description = fh.read()
|
|
5
|
+
|
|
6
|
+
setuptools.setup(
|
|
7
|
+
name="tensor-lattice-neural-layer",
|
|
8
|
+
version="0.1.0",
|
|
9
|
+
author="Baroq",
|
|
10
|
+
author_email="aamubaroq85@gmail.com",
|
|
11
|
+
description="Tensor Lattice Neural Layer for PyTorch memory and latency optimization",
|
|
12
|
+
long_description=long_description,
|
|
13
|
+
long_description_content_type="text/markdown",
|
|
14
|
+
url="https://github.com/aamubaroq85-crypto/tensor-lattice-neural-layer",
|
|
15
|
+
packages=setuptools.find_packages(),
|
|
16
|
+
classifiers=[
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
],
|
|
21
|
+
python_requires=">=3.8",
|
|
22
|
+
install_requires=[
|
|
23
|
+
"torch>=1.12.0",
|
|
24
|
+
],
|
|
25
|
+
)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tensor-lattice-neural-layer
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Tensor Lattice Neural Layer for PyTorch memory and latency optimization
|
|
5
|
+
Home-page: https://github.com/aamubaroq85-crypto/tensor-lattice-neural-layer
|
|
6
|
+
Author: Baroq
|
|
7
|
+
Author-email: aamubaroq85@gmail.com
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: torch>=1.12.0
|
|
14
|
+
Dynamic: author
|
|
15
|
+
Dynamic: author-email
|
|
16
|
+
Dynamic: classifier
|
|
17
|
+
Dynamic: description
|
|
18
|
+
Dynamic: description-content-type
|
|
19
|
+
Dynamic: home-page
|
|
20
|
+
Dynamic: requires-dist
|
|
21
|
+
Dynamic: requires-python
|
|
22
|
+
Dynamic: summary
|
|
23
|
+
|
|
24
|
+
# ⚡ TLNL: Tensor Lattice Neural Layer
|
|
25
|
+
|
|
26
|
+
[](https://badge.fury.io/py/tlnl)
|
|
27
|
+
[](https://opensource.org/licenses/MIT)
|
|
28
|
+
|
|
29
|
+
**TLNL** adalah paket *drop-in replacement layer* untuk PyTorch yang dirancang untuk mengoptimalkan efisiensi memori (VRAM) serta mempercepat waktu inferensi (latensi) pada arsitektur Deep Learning berbasis **Transformasi Latis Non-Linier**.
|
|
30
|
+
|
|
31
|
+
## 🚀 Fitur Utama
|
|
32
|
+
|
|
33
|
+
- **VRAM Savings:** Mengurangi konsumsi memori GPU hingga **~55%**.
|
|
34
|
+
- **Accelerated Inference:** Peningkatan kecepatan inferensi hingga **1.22x** dibandingkan `nn.Linear` standar.
|
|
35
|
+
- **Drop-in Replacement:** Sangat mudah diintegrasikan ke dalam model PyTorch yang sudah ada.
|
|
36
|
+
|
|
37
|
+
## 📦 Instalasi
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install tlnl
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
setup.py
|
|
3
|
+
tensor_lattice_neural_layer.egg-info/PKG-INFO
|
|
4
|
+
tensor_lattice_neural_layer.egg-info/SOURCES.txt
|
|
5
|
+
tensor_lattice_neural_layer.egg-info/dependency_links.txt
|
|
6
|
+
tensor_lattice_neural_layer.egg-info/requires.txt
|
|
7
|
+
tensor_lattice_neural_layer.egg-info/top_level.txt
|
|
8
|
+
tlnl/__init__.py
|
|
9
|
+
tlnl/core.py
|
|
10
|
+
tlnl/layers.py
|
|
11
|
+
tlnl/utils.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
torch>=1.12.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tlnl
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TLNL - Tensor Lattice Neural Layer
|
|
3
|
+
Package pemodelan efisien VRAM berbasis geometri pi_eff.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .layers import LatticeLinear
|
|
7
|
+
from .core import apply_lattice_transform
|
|
8
|
+
from .utils import measure_vram_and_latency
|
|
9
|
+
|
|
10
|
+
__version__ = "0.1.0"
|
|
11
|
+
__author__ = "Baroq / Zuhri Formalism Team"
|
|
12
|
+
|
|
13
|
+
__all__ = [
|
|
14
|
+
"LatticeLinear",
|
|
15
|
+
"apply_lattice_transform",
|
|
16
|
+
"measure_vram_and_latency",
|
|
17
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import torch
|
|
3
|
+
import torch.nn as nn
|
|
4
|
+
|
|
5
|
+
PI_EFF_BASE = 3.141592653589793
|
|
6
|
+
|
|
7
|
+
@torch.jit.script
|
|
8
|
+
def _fast_lattice_transform(input_tensor: torch.Tensor, pi_eff: float) -> torch.Tensor:
|
|
9
|
+
scaled = input_tensor * (pi_eff / 3.141592653589793)
|
|
10
|
+
return torch.sin(scaled) * torch.tanh(input_tensor)
|
|
11
|
+
|
|
12
|
+
def apply_lattice_transform(tensor: torch.Tensor, pi_eff: float = PI_EFF_BASE) -> torch.Tensor:
|
|
13
|
+
return _fast_lattice_transform(tensor, pi_eff)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import torch
|
|
3
|
+
import torch.nn as nn
|
|
4
|
+
import torch.nn.functional as F
|
|
5
|
+
from .core import PI_EFF_BASE
|
|
6
|
+
|
|
7
|
+
class LatticeLinear(nn.Module):
|
|
8
|
+
def __init__(self, in_features: int, out_features: int, bias: bool = True, pi_eff: float = PI_EFF_BASE):
|
|
9
|
+
super().__init__()
|
|
10
|
+
self.in_features = in_features
|
|
11
|
+
self.out_features = out_features
|
|
12
|
+
self.pi_eff = pi_eff
|
|
13
|
+
|
|
14
|
+
# Inisialisasi parameter
|
|
15
|
+
self.weight = nn.Parameter(torch.Tensor(out_features, in_features))
|
|
16
|
+
if bias:
|
|
17
|
+
self.bias = nn.Parameter(torch.Tensor(out_features))
|
|
18
|
+
else:
|
|
19
|
+
self.register_parameter('bias', None)
|
|
20
|
+
|
|
21
|
+
self.reset_parameters()
|
|
22
|
+
|
|
23
|
+
def reset_parameters(self):
|
|
24
|
+
nn.init.kaiming_uniform_(self.weight, a=math.sqrt(5))
|
|
25
|
+
if self.bias is not None:
|
|
26
|
+
fan_in, _ = nn.init._calculate_fan_in_and_fan_out(self.weight)
|
|
27
|
+
bound = 1 / math.sqrt(fan_in) if fan_in > 0 else 0
|
|
28
|
+
nn.init.uniform_(self.bias, -bound, bound)
|
|
29
|
+
|
|
30
|
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
|
31
|
+
# Lakukan perkalian linier dulu, baru transformasi pada ruang output yang lebih kecil
|
|
32
|
+
out = F.linear(x, self.weight, self.bias)
|
|
33
|
+
scaled = out * (self.pi_eff / 3.141592653589793)
|
|
34
|
+
return torch.sin(scaled) * torch.tanh(out)
|
|
35
|
+
|
|
36
|
+
def extra_repr(self) -> str:
|
|
37
|
+
return f'in_features={self.in_features}, out_features={self.out_features}, pi_eff={self.pi_eff}'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import time
|
|
2
|
+
import torch
|
|
3
|
+
|
|
4
|
+
def measure_vram_and_latency(model: torch.nn.Module, input_tensor: torch.Tensor):
|
|
5
|
+
if not torch.cuda.is_available():
|
|
6
|
+
return {"error": "CUDA tidak tersedia"}
|
|
7
|
+
|
|
8
|
+
model = model.cuda()
|
|
9
|
+
input_tensor = input_tensor.cuda()
|
|
10
|
+
|
|
11
|
+
torch.cuda.reset_peak_memory_stats()
|
|
12
|
+
torch.cuda.synchronize()
|
|
13
|
+
|
|
14
|
+
start_time = time.time()
|
|
15
|
+
with torch.no_grad():
|
|
16
|
+
_ = model(input_tensor)
|
|
17
|
+
torch.cuda.synchronize()
|
|
18
|
+
latency_ms = (time.time() - start_time) * 1000
|
|
19
|
+
|
|
20
|
+
peak_vram_mb = torch.cuda.max_memory_allocated() / (1024 * 1024)
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
"vram_allocated_mb": round(peak_vram_mb, 2),
|
|
24
|
+
"latency_ms": round(latency_ms, 2)
|
|
25
|
+
}
|