Skip to main content

Framework de Deep Learning ultraligero inspirado en PyTorch para dispositivos con almacenamiento limitado

Project description

TenMiNaTor - Framework de Deep Learning Ultraligero

TenMiNaTor Logo Python License

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:


🤝 Contribuir

¡Las contribuciones son bienvenidas! Por favor:

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. 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


🎓 Ejemplos

Encuentra más ejemplos en el directorio examples/:

  • examples/mnist.py - Clasificación de dígitos MNIST
  • examples/sentiment.py - Análisis de sentimientos
  • examples/timeseries.py - Predicción de series temporales
  • examples/reinforcement.py - Aprendizaje por refuerzo
  • examples/transformer.py - Modelo Transformer

¡Comienza a entrenar modelos de IA hoy con TenMiNaTor! 🚀

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

tenminator-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

tenminator-0.1.0-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

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

Hashes for tenminator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 60b4439fb2e40ac3df98533baf3f0468d1e0c844be2ac46cb93b03a61452c895
MD5 270d7dd3d36c2a5827383b2be96649d9
BLAKE2b-256 abdbec6d27393fa7d8e35c4c7d06a57a855741848cf38fc557d3ae05fce32305

See more details on using hashes here.

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

Hashes for tenminator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0beac8df622edc41314fde9e9cfe338af6a69074d7c0765b0c0d2238e12c6e43
MD5 58a17fc05c583aa0b7c65cc3092e0f78
BLAKE2b-256 18a29ab74fddc7ed6dd7f13c0066abddc5c35cc51e5f943eb25703fd964ff5f6

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