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.
Release files for minitorch-lite 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| minitorch_lite-0.1.0.tar.gz | 5.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| minitorch_lite-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.1 kB
Release files / minitorch_lite-0.1.0.tar.gz
| Download URL | minitorch_lite-0.1.0.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b8fc72354a927c89747cd027220b65d6895c94474120b9e85f8b5eedc6ee6553
|
|
BLAKE2b-256 checksum How to use checksums |
67ab9f10f956b3110f1fea785e759762005d28f3e610aa766f9d8c26b3977f24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.5
|
Release files / minitorch_lite-0.1.0-py3-none-any.whl
| Download URL | minitorch_lite-0.1.0-py3-none-any.whl |
|---|---|
| Size | 4.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5cd28b2b2bd8fc2ebe0a30dcb95a5ce895f83c0cf37ff350d0e92fd3e5210b96
|
|
BLAKE2b-256 checksum How to use checksums |
dc9692d920bfbb8940c4266387b95444f6b3a681f24ef53dfb2efe9dc568971b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.5
|