Skip to content

luminolabs/contracts-client

Repository files navigation

Lumino Contracts Client

A Python client for interacting with the Lumino protocol, a decentralized computing platform for machine learning jobs.

Overview

The Lumino Contracts Client provides two main executables:

  • lumino-node: For node operators to participate in the Lumino network
  • lumino-client: For users to submit and monitor jobs on the network

Installation

Requirements

  • Python 3.11
  • An Ethereum wallet address
  • Lumino tokens
  • ETH for gas fees
  • RPC endpoint for the blockchain

Installing via pip

pip install lumino-contracts-client
export PATH=$HOME/.local/bin:$PATH  # Add Python bin to PATH

Ubuntu-specific setup

If Python 3.11 is not already installed:

sudo apt upgrade -y python3
sudo update-alternatives --config python  # (select version 3.11)
python --version  # (confirm version == 3.11)
python -m pip install lumino-contracts-client && export PATH=/home/$USER/.local/bin:$PATH

Configuration

Both clients create a $HOME/.lumino directory for storing state:

  • Node artifacts and configuration
  • Client state and job information
  • Logs and temporary files

Node Client (lumino-node)

Features

  • Interacts with smart contracts for leader election, job assignment, and incentives
  • Executes machine learning jobs upon assignment
  • Automatically manages node's stake on the node escrow (i.e. top-up)
  • Registers node to the Lumino network

Requirements

  • A whitelisted Ethereum address
  • Lumino tokens transferred to the address
  • The lumino artifacts password
  • Some ETH for gas costs
  • Compatible GPU hardware

Supported GPU Hardware

  • 1, 2, 4, or 8x NVIDIA A100 (40GB or 80GB)
  • 8x NVIDIA H100 (80GB)

Running the Node

lumino-node

User Client (lumino-client)

Features

  • Submits machine learning jobs to the Lumino network
  • Monitors job execution and retrieves results
  • Manages user's balance on the job escrow contract

Basic Usage

Top up your balance for paying for jobs:

lumino-client topup

Submitting Jobs

Example dummy job:

lumino-client create-job --args '{"shuffle": true, "use_lora": true, "use_qlora": false, "batch_size": 4, "dataset_id": "gs://lum-dev-pipeline-zen-datasets/0ca98b07-9366-4a31-8c83-569961c90294/2024-12-17_21-57-21_text2sql.jsonl", "num_epochs": 1, "job_config_name": "llm_dummy"}' --model llm_dummy --ft_type "LORA" --monitor

Example LLaMA 3.2 1B LoRA job:

lumino-client create-job --args '{"shuffle": true, "use_lora": true, "use_qlora": false, "batch_size": 4, "dataset_id": "gs://lum-dev-pipeline-zen-datasets/0ca98b07-9366-4a31-8c83-569961c90294/2024-12-17_21-57-21_text2sql.jsonl", "num_epochs": 1, "job_config_name": "llm_llama3_2_1b"}' --model llm_llama3_2_1b --ft_type "LORA"

Monitoring Jobs

Monitor all submitted jobs:

lumino-client monitor-all

Development

For development setup and contributing guidelines, see DEVEL.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •