Framework de Deep Learning ultraligero inspirado en PyTorch para dispositivos con almacenamiento limitado
Project description
TenMiNaTor - Framework de Deep Learning Ultraligero
TenMiNaTor es un framework de Deep Learning inspirado en PyTorch, diseñado específicamente para dispositivos con almacenamiento limitado. Ofrece un motor de autograd completo, soporte multi-backend, y características avanzadas como Nested Learning, Relational Memory y vLLM para inferencia rápida.
🚀 Instalación
Instalación desde PyPI (Recomendado)
pip install tenminator
Instalación desde el Código Fuente
git clone https://github.com/yoqer/tenminator.git
cd tenminator
pip install -e .
Dependencias Opcionales
Para habilitar características avanzadas, instala las dependencias opcionales:
# Para soporte de JAX (aceleración con JIT)
pip install tenminator[jax]
# Para soporte de CuPy (aceleración GPU)
pip install tenminator[cupy]
# Para soporte de Numba (JIT compilation)
pip install tenminator[numba]
# Para integración con bases de datos
pip install tenminator[database]
# Para todas las características
pip install tenminator[all]
📖 Uso Básico
1. Crear un Tensor
from tenminator import Tensor
# Crear tensor con gradientes
x = Tensor([1.0, 2.0, 3.0], requires_grad=True)
y = Tensor([4.0, 5.0, 6.0], requires_grad=True)
# Operaciones
z = x + y
loss = (z ** 2).sum()
# Backpropagation
loss.backward()
print(x.grad) # Gradientes de x
2. Construir una Red Neuronal
from tenminator.nn import Module, Linear, ReLU
class SimpleNet(Module):
def __init__(self):
super().__init__()
self.fc1 = Linear(10, 64)
self.relu = ReLU()
self.fc2 = Linear(64, 1)
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x
# Crear modelo
model = SimpleNet()
3. Entrenar un Modelo
from tenminator.optim import Adam
from tenminator.training import TrainingController
import numpy as np
# Datos de ejemplo
X = np.random.randn(100, 10)
y = np.random.randn(100, 1)
# Optimizador
optimizer = Adam(model.parameters(), lr=0.01)
# Controlador de entrenamiento (sistema 10x12)
controller = TrainingController(
max_iterations=100,
early_stop_patience=12,
checkpoint_dir='./checkpoints'
)
# Loop de entrenamiento
for epoch in range(10):
# Forward pass
X_tensor = Tensor(X, requires_grad=False)
y_tensor = Tensor(y, requires_grad=False)
predictions = model(X_tensor)
loss = ((predictions - y_tensor) ** 2).sum() / len(y)
# Backward pass
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.data:.6f}")
# Early stopping
if controller.should_stop(float(loss.data)):
print("Early stopping triggered!")
break
4. Guardar y Cargar Modelos
# Guardar checkpoint
controller.save_checkpoint(
model=model,
optimizer=optimizer,
epoch=epoch,
loss=float(loss.data)
)
# Cargar checkpoint
checkpoint = controller.load_checkpoint()
if checkpoint:
model.load_state_dict(checkpoint['model_state'])
optimizer.load_state_dict(checkpoint['optimizer_state'])
🎯 Características Avanzadas
Nested Learning
from tenminator.nested import NestedOptimizer
# Optimizador anidado para problemas jerárquicos
nested_opt = NestedOptimizer(
inner_optimizer=Adam(inner_params, lr=0.01),
outer_optimizer=Adam(outer_params, lr=0.001),
inner_steps=5
)
Relational Memory
from tenminator.reasoning import RelationalMemory
# Memoria relacional para aprendizaje con grafos
memory = RelationalMemory(memory_size=100, key_size=64)
memory.store(key, value, relations)
retrieved = memory.retrieve(query)
Multi-Backend Support
from tenminator.backends import set_backend
# Cambiar backend
set_backend('jax') # Para aceleración con JAX
set_backend('cupy') # Para GPU con CuPy
set_backend('numba') # Para JIT con Numba
set_backend('numpy') # Backend por defecto
Integración con Bases de Datos
from tenminator.data import SQLDataLoader
# Cargar datos desde SQL
loader = SQLDataLoader(
connection_string='mysql://user:pass@localhost/db',
query='SELECT * FROM training_data'
)
data = loader.load()
🌐 Uso de la Interfaz Web
TenMiNaTor incluye una interfaz web interactiva para entrenar modelos visualmente:
# Iniciar servidor web
python -m tenminator.web
# Acceder en: http://localhost:3000
Características de la Interfaz Web:
- Subida de Archivos: Sube CSV, JSON o TXT con tus datos
- Control de Entrenamiento: Botones de Iniciar/Pausar/Reanudar/Detener
- Visualización en Tiempo Real: Ve el progreso del entrenamiento
- Panel Lateral: Visualiza código y datos cargados
- Historial de Sesiones: Accede a entrenamientos anteriores
📊 Comandos de CLI
TenMiNaTor incluye una interfaz de línea de comandos:
# Entrenar un modelo desde CLI
tenminator train --data data.csv --config config.json
# Evaluar un modelo
tenminator evaluate --model checkpoint.pth --data test.csv
# Exportar modelo
tenminator export --model checkpoint.pth --format onnx
# Ver información del sistema
tenminator info
🔧 Configuración
Crea un archivo config.json para configurar tu entrenamiento:
{
"model": {
"type": "SimpleNet",
"input_size": 10,
"hidden_size": 64,
"output_size": 1
},
"training": {
"epochs": 10,
"batch_size": 32,
"learning_rate": 0.01,
"optimizer": "Adam",
"early_stop_patience": 12,
"max_iterations": 100
},
"backend": "numpy",
"checkpoint_dir": "./checkpoints"
}
📚 Documentación Completa
Para documentación completa, visita:
- Manual de Uso: MANUAL_DE_USO.md
- Quickstart: QUICKSTART.md
- API Reference: docs/api.md
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Inspirado por PyTorch y TensorFlow Lite
- Construido con NumPy, JAX, Numba y CuPy
- Interfaz web con React y tRPC
📞 Soporte
- Issues: GitHub Issues
- Discusiones: GitHub Discussions
- Email: support@tenminator.dev
🎓 Ejemplos
Encuentra más ejemplos en el directorio examples/:
examples/mnist.py- Clasificación de dígitos MNISTexamples/sentiment.py- Análisis de sentimientosexamples/timeseries.py- Predicción de series temporalesexamples/reinforcement.py- Aprendizaje por refuerzoexamples/transformer.py- Modelo Transformer
¡Comienza a entrenar modelos de IA hoy con TenMiNaTor! 🚀
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 tenminator-0.1.0.tar.gz.
File metadata
- Download URL: tenminator-0.1.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60b4439fb2e40ac3df98533baf3f0468d1e0c844be2ac46cb93b03a61452c895
|
|
| MD5 |
270d7dd3d36c2a5827383b2be96649d9
|
|
| BLAKE2b-256 |
abdbec6d27393fa7d8e35c4c7d06a57a855741848cf38fc557d3ae05fce32305
|
File details
Details for the file tenminator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tenminator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.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 |
0beac8df622edc41314fde9e9cfe338af6a69074d7c0765b0c0d2238e12c6e43
|
|
| MD5 |
58a17fc05c583aa0b7c65cc3092e0f78
|
|
| BLAKE2b-256 |
18a29ab74fddc7ed6dd7f13c0066abddc5c35cc51e5f943eb25703fd964ff5f6
|