Skip to main content

A comprehensive PyTorch-based utility module.

Project description

Kala Torch

Kala Torch Module is a comprehensive PyTorch-based utility module designed to streamline and enhance deep learning workflows. It provides an abstraction over common PyTorch functionalities, making development faster and more intuitive.

Features

  • Tensor Operations

    • Supports a wide range of tensor manipulations, including creation, slicing, and memory management.
    • Check tensor types, perform tensor transformations, and handle complex tensors seamlessly.
  • Default Settings Management

    • Easily set and retrieve default data types and tensor configurations.
    • Configure default tensor types for consistent operations across your codebase.
  • TorchScript Utilities

    • Simplify scripting and tracing models for deployment in production environments.
    • Enable optimization and execution of models in non-Python setups, like mobile or embedded systems.
    • Save and load scripted modules for reproducibility and deployment.
  • Neural Network (nn) Module Creation

    • Streamline the creation of common layers like Linear, Convolutional, ReLU, BatchNorm, and Dropout.
    • Build complex architectures, including Transformers, LSTMs, and GRUs, with minimal effort.
    • Define custom activation functions and loss functions to suit your specific needs.
  • Generative Adversarial Networks (GANs)

    • Easily create and train GANs with pre-defined Generator and Discriminator architectures.
    • Train DCGAN models with minimal code using integrated utility functions.
    • Generate high-quality images and visualize results with built-in sample generation.
  • Multiprocessing Utilities

    • Facilitate distributed training with tools for parallel processing.
    • Utilize efficient tensor sharing strategies to optimize memory usage in multiprocessing environments.
    • Easily spawn and manage worker processes for model training or data processing.
  • DataLoader Utilities

    • Seamlessly handle batching, shuffling, and multi-worker setups for datasets.
    • Support for both map-style and iterable-style datasets, with custom collation functions.
    • Enable memory pinning for faster GPU transfers and efficient data loading pipelines.
  • Custom Gradient Functions

    • Design and implement advanced gradient operations tailored for specific backpropagation needs.
    • Customize both forward and backward passes for unique computational requirements.
  • Advanced Model Deployment

    • Utilize TorchScript and multiprocessing for efficient deployment in various environments.
    • Enable GPU acceleration and optimize models for inference.

Installation

Install the module using pip:

pip install kala-torch

Usage

Example: Neural Network Creation and Training

import torch
import torch.nn as nn
from Kala_torch.Kala_torch import Kala_torch

# Initialize Kala Torch utility
kala = Kala_torch()

# Define a simple neural network using Kala Torch
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = kala.linear(10, 50)  # Linear layer
        self.relu = kala.relu()         # ReLU activation
        self.fc2 = kala.linear(50, 1)   # Output layer

    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

# Create the model
model = SimpleNN()

# Define loss and optimizer
criterion = kala.cross_entropy_loss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

# Example input
inputs = torch.randn(32, 10)
targets = torch.randint(0, 2, (32, 1), dtype=torch.float)

# Training step
outputs = model(inputs)
loss = criterion(outputs, targets)
kala.backward(loss)  # Perform backpropagation
optimizer.step()

Example: Generative Adversarial Networks (GANs)

Kala Torch includes an easy-to-use interface for creating and training GANs.

import torch
from torchvision.datasets import CIFAR10
from torchvision.transforms import Compose, ToTensor, Normalize, Resize
from torch.utils.data import DataLoader
from Kala_torch.Kala_torch import Kala_torch

# Initialize Kala Torch utility
kala = Kala_torch()
gan = kala.KalaGAN(latent_dim=100, image_channels=3, image_size=64)

# Define transformation for CIFAR10 dataset
transform = Compose([
    Resize(64),
    ToTensor(),
    Normalize([0.5], [0.5])  # Normalize to [-1, 1]
])

# Load dataset
dataset = CIFAR10(root="./data", train=True, download=True, transform=transform)
data_loader = DataLoader(dataset, batch_size=64, shuffle=True)

# Device setup
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
gan.generator.to(device)
gan.discriminator.to(device)

# Training loop
num_epochs = 5
for epoch in range(num_epochs):
    for i, (images, _) in enumerate(data_loader):
        images = images.to(device)
        losses = gan.train_step(images, device)  # Pass the `device` argument here

        if i % 100 == 0:
            print(f"Epoch [{epoch + 1}/{num_epochs}], Step [{i + 1}/{len(data_loader)}], "
                  f"D Loss: {losses['d_loss']:.4f}, G Loss: {losses['g_loss']:.4f}")

    # Save generated samples
    gan.generate_samples(num_samples=64, save_path=f"samples_epoch_{epoch + 1}.png", device=device)

Example: DataLoader with Multiprocessing

from torch.utils.data import DataLoader, TensorDataset

# Sample dataset
data = torch.randn(100, 10)
targets = torch.randint(0, 2, (100,))
dataset = TensorDataset(data, targets)

# Create DataLoader
loader = kala.data_loader(dataset, batch_size=16, shuffle=True, num_workers=4)

# Iterate through DataLoader
for batch_idx, (inputs, labels) in enumerate(loader):
    print(f"Batch {batch_idx}: {inputs.shape}, {labels.shape}")

Example: TorchScript for Model Deployment

# Convert model to TorchScript
scripted_model = kala.script(model)

# Save the scripted model
kala.save_script_module(scripted_model, "model_scripted.pt")

# Load the scripted model
loaded_model = kala.load_script_module("model_scripted.pt")

# Perform inference
example_input = torch.randn(1, 10)
output = loaded_model(example_input)
print("Scripted model output:", output)

Contributing

Contributions are welcome! If you encounter issues or have feature requests, please open an issue or submit a pull request on the GitHub repository.

License

This project is licensed under the MIT License. See the LICENSE file for details.

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

kala_torch-0.1.4.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

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

kala_torch-0.1.4-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file kala_torch-0.1.4.tar.gz.

File metadata

  • Download URL: kala_torch-0.1.4.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for kala_torch-0.1.4.tar.gz
Algorithm Hash digest
SHA256 8e34b239aadb30882d43cef9e3b4156b7192b5a523641f0b5c0d0ba1a156acc0
MD5 3b657c0f74a6f4a5ff5563c7efdf475f
BLAKE2b-256 10ac6d1037427e40b1065c5c2f7581b571bb7a1cafc01f4001e0854ae1ae7215

See more details on using hashes here.

File details

Details for the file kala_torch-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: kala_torch-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for kala_torch-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 efe00352b6a43bea895b09cf6388868c7e69c2616dfe5d1bba826b26692dc5fd
MD5 10bef7603dce0b0e45754d5d0188469a
BLAKE2b-256 607b5141bb4dc8e8ae7ef616f4f3cdb006905d9fbe347a6d705fd577aa35b082

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