Lightweight Deep Learning Library with multi-backend support
Project description
TenMinaTorch Lite
Lightweight Deep Learning Library with Multi-Backend Support
Una librería de deep learning ligera y flexible con soporte para múltiples backends de cálculo numérico y control avanzado de entrenamiento.
Características Principales
🚀 Múltiples Backends
- NumPy (por defecto): Compatibilidad universal
- Numba: Aceleración JIT hasta 1000x en operaciones intensivas
- JAX: Autograd avanzado y compilación XLA
- CuPy: Aceleración GPU con CUDA
🎯 Control de Entrenamiento
- [NEW] Early Stop: Salto automático tras 12 iteraciones sin mejora
- Límite de Tokens: Corte automático a N tokens con máximo 12 iteraciones
- Por defecto: Máximo 69 repeticiones
- Checkpoints: Guardado y reanudación de entrenamiento
🔗 Integración con Frameworks Externos
- Keras/TensorFlow: Exportar/importar pesos
- PyTorch: Conversión bidireccional de tensores
- JAX: Compilación JIT y autograd avanzado
Instalación
Instalación básica (solo NumPy)
pip install minitorch-lite
Instalación con backends adicionales
# Con Numba (aceleración JIT)
pip install minitorch-lite[numba]
# Con JAX (autograd avanzado)
pip install minitorch-lite[jax]
# Con todas las dependencias opcionales
pip install minitorch-lite[all]
Instalación desde código fuente
git clone https://github.com/minitorch/minitorch-lite.git
cd minitorch-lite
pip install -e .
Uso sin PyPI (instalación local)
import sys
sys.path.insert(0, '/ruta/a/minitorch_lite')
import minitorch_lite as mtl
Uso Básico
Crear Tensores y Operaciones
import minitorch_lite as mtl
# Crear tensores
x = mtl.Tensor([[1, 2], [3, 4]], requires_grad=True)
y = mtl.Tensor([[5, 6], [7, 8]], requires_grad=True)
# Operaciones
z = x @ y # Multiplicación de matrices
loss = z.sum()
loss.backward()
print(x.grad) # Gradientes
Cambiar Backend
import minitorch_lite as mtl
# Ver backends disponibles
mtl.print_backend_info()
# Cambiar a Numba (si está instalado)
mtl.set_backend('numba')
Control de Entrenamiento
import minitorch_lite as mtl
# Crear controlador con Early Stopping [NEW]
controller = mtl.create_training_controller(
max_iterations=69, # Máximo 69 repeticiones
early_stop=True, # [NEW] Activar Early Stop
early_stop_patience=12, # [NEW] Salto tras 12 iteraciones sin mejora
max_tokens=10, # Límite de 10 tokens
token_limit_iterations=12 # Máximo 12 iteraciones con límite
)
# Bucle de entrenamiento
while controller.should_continue():
loss = train_step(data)
controller.update(loss, tokens_processed=batch_tokens)
# Guardar checkpoint
controller.save_checkpoint(model.state_dict())
Red Neuronal Simple
import minitorch_lite as mtl
# Definir modelo
model = mtl.Sequential(
mtl.Linear(784, 128),
mtl.ReLU(),
mtl.Dropout(0.5),
mtl.Linear(128, 10),
mtl.Softmax()
)
# Optimizador
optimizer = mtl.Adam(model.parameters(), lr=0.001)
# Función de pérdida
criterion = mtl.CrossEntropyLoss()
# Entrenamiento
for epoch in range(10):
optimizer.zero_grad()
output = model(x)
loss = criterion(output, target)
loss.backward()
optimizer.step()
Exportar/Importar Pesos
import minitorch_lite as mtl
exporter = mtl.ModelExporter()
# Exportar a formato Keras
exporter.export(model.state_dict(), 'model_weights.npz', format='keras')
# Importar desde PyTorch
weights = exporter.import_weights('pytorch_model.pt', format='pytorch')
model.load_state_dict(weights)
Opciones de Control de Entrenamiento
| Opción | Descripción | Valor por Defecto |
|---|---|---|
max_iterations |
Máximo de iteraciones totales | 69 |
early_stop_patience |
[NEW] Iteraciones sin mejora antes de parar | 12 |
max_tokens |
Límite de tokens por entrenamiento | None (sin límite) |
token_limit_iterations |
Máximo de iteraciones con límite de tokens | 12 |
save_checkpoint_on_stop |
Guardar checkpoint al detenerse | True |
Backends Disponibles
| Backend | Descripción | Instalación |
|---|---|---|
numpy |
Backend por defecto, compatible universal | Incluido |
numba |
Aceleración JIT para bucles intensivos | pip install numba |
jax |
Autograd avanzado y compilación XLA | pip install jax jaxlib |
cupy |
Aceleración GPU con CUDA | pip install cupy |
Integraciones Externas
Keras/TensorFlow
from minitorch_lite import KerasIntegration
# Exportar pesos para Keras
KerasIntegration.save_for_keras(weights, 'model.npz')
# Crear modelo Keras desde configuración
keras_model = KerasIntegration.create_keras_model_from_config(config)
PyTorch
from minitorch_lite import PyTorchIntegration
# Convertir tensor
torch_tensor = PyTorchIntegration.to_pytorch_tensor(numpy_array)
# Exportar pesos
PyTorchIntegration.save_for_pytorch(weights, 'model.pt')
JAX
from minitorch_lite import JAXIntegration
# Convertir a array JAX
jax_array = JAXIntegration.to_jax_array(numpy_array)
# Compilar función con JIT
fast_func = JAXIntegration.jit_compile(my_function)
Estructura del Proyecto
minitorch_lite/
├── __init__.py # Exportaciones principales
├── tensor.py # Clase Tensor
├── autograd.py # Motor de diferenciación automática
├── backends.py # Soporte multi-backend
├── nn.py # Capas de red neuronal
├── optim.py # Optimizadores
├── training.py # Control de entrenamiento
├── integrations.py # Integraciones externas
├── setup.py # Configuración PyPI
└── README.md # Documentación
Subida a PyPI
-
Crear cuenta en PyPI: https://pypi.org/account/register/
-
Instalar herramientas:
pip install twine build
-
Construir distribución:
python -m build
-
Subir a PyPI:
twine upload dist/*
Licencia
MIT License
Contribuir
Las contribuciones son bienvenidas. Por favor, abre un issue o pull request en GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file minitorch_lite-0.1.0.tar.gz.
File metadata
- Download URL: minitorch_lite-0.1.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8fc72354a927c89747cd027220b65d6895c94474120b9e85f8b5eedc6ee6553
|
|
| MD5 |
5c7737732f714de0da0fcef9ea115d75
|
|
| BLAKE2b-256 |
67ab9f10f956b3110f1fea785e759762005d28f3e610aa766f9d8c26b3977f24
|
File details
Details for the file minitorch_lite-0.1.0-py3-none-any.whl.
File metadata
- Download URL: minitorch_lite-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cd28b2b2bd8fc2ebe0a30dcb95a5ce895f83c0cf37ff350d0e92fd3e5210b96
|
|
| MD5 |
3e8b49ebd3adc2b3b2408a186e9f8230
|
|
| BLAKE2b-256 |
dc9692d920bfbb8940c4266387b95444f6b3a681f24ef53dfb2efe9dc568971b
|