Skip to main content

The orchestration layer for modern Slurm clusters.

Project description

🐘 Jazari

The orchestration layer for modern Slurm clusters.

Jazari is a command-line tool that makes launching distributed AI/ML training jobs on high-performance computing (HPC) clusters as easy as running a script on your laptop.

It abstracts away the complexity of writing Slurm (#SBATCH) scripts, handling multi-node networking, and managing environment variables.

Python 3.10+ License: MIT


Why Jazari?

If you are a researcher using a university or national supercomputer (like Compute Canada/Digital Alliance), you know the pain:

  • The Script Nightmare: Copy-pasting old bash scripts, accidentally leaving in wrong parameters, and debugging obscure sbatch errors.
  • Networking Headaches: Manually figuring out how to get PyTorch DDP to find the master node's IP address across multiple machines.
  • Experiment Fragmentation: Having a 4-node training run spawn 4 separate experiments in Weights & Biases.
  • Slurm Arcana: Remembering obscure flags for accounts, time formats, and memory allocation.

Jazari solves this. You write your Python training script, and Jazari handles the rest.


✨ Key Features

  • 🚀 One-Command Launch: Go from Python script to running distributed job with a single CLI command.
  • 🤖 Automatic Slurm Generation: Uses robust Jinja2 templates to generate correct, safe #SBATCH scripts on the fly.
  • 🧠 Zero-Config DDP Networking: Automatically resolves master IP, ports, and world size for PyTorch Distributed Data Parallel.
  • 📈 Seamless Weights & Biases: Securely propagates your local API key and ensures multi-node jobs log as a single, clean run.
  • ⚙️ User "Init" Profiles: Save your default account, time limits, and preferences once and never type them again.
  • 🎨 Beautiful CLI: Modern, color-coded output with rich error reporting.

🛠️ Installation

Jazari is designed to be installed in a virtual environment on your cluster's login node.

# 1. Clone the repository
git clone [https://github.com/levoz92/jazari.git](https://github.com/levoz92/jazari.git)
cd jazari

# 2. Create and activate a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate

# 3. Install in editable mode
pip install -e .

Verify the installation:

jazari --help

⚡ Quick Start

1. One-Time Setup

On your cluster login node, run the init command to save your defaults (like your allocation account).

jazari init

2. Create a Python Script

Here is a minimal PyTorch DDP example (train.py):

import os
import torch
import torch.distributed as dist

def main():
    # 1. Initialize Process Group (Jazari sets all necessary env vars)
    dist.init_process_group(backend="nccl")
    
    rank = dist.get_rank()
    world_size = dist.get_world_size()
    print(f"👋 Hello from rank {rank} of {world_size} on node {os.uname().nodename}!")

    # Your training loop here...

    # 3. Clean up
    dist.destroy_process_group()

if __name__ == "__main__":
    main()

3. Launch It!

Run your script on 2 nodes with 4 GPUs per node (8 GPUs total).

jazari run -N 2 -G 4 --name "my-big-run" --track-wandb python train.py --batch-size 128

That's it. Jazari will generate the script, submit it to Slurm, and stream the output.


📖 Usage Reference

jazari init

Interactively configure your default settings. These are saved to ~/.jazari/config.yaml.

jazari run [OPTIONS] COMMAND

Option Shorthand Description Default
--nodes -N Number of compute nodes to request. 1 (or config default)
--gpus -G Number of GPUs per node. 1 (or config default)
--cpus -c Number of CPU cores per task. 1 (or config default)
--time -t Time limit in D-HH:MM format (e.g., 0-02:30 for 2.5 hours). 01:00:00 (or config default)
--account -A Slurm account to charge (e.g., def-user). Config default
--name -n Name for the job in Slurm and W&B. jazari_run
--track-wandb Auto-configure Weights & Biases environment. False (or config default)
--dry-run Print the generated generated #SBATCH script to stdout without submitting. False

📄 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

jazari-0.1.2.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

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

jazari-0.1.2-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file jazari-0.1.2.tar.gz.

File metadata

  • Download URL: jazari-0.1.2.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for jazari-0.1.2.tar.gz
Algorithm Hash digest
SHA256 047f750b5ee7caa6afdd0f333f1f0dbf53ae7d81deb4b58c3b49c1b7d49e4683
MD5 94434c471584f31ddd3b6e92b5edb5ef
BLAKE2b-256 143f829a50177ad266e3755c2facabc9a9c46d222deee93d77d8113806be12bf

See more details on using hashes here.

File details

Details for the file jazari-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: jazari-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for jazari-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3d02f02590ad9768caaeafc12618cdb98b9ffe72540ade0326c1da682f960074
MD5 f405209ade109f9b1617c2c8f4f1f93e
BLAKE2b-256 f6317ed038ec9e11a22e3bcb4f925bce547eb1cb1d843237880e5e9da1070f44

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