Client for interacting with the Impulse Labs protocol
Project description
Impulse Contracts Client
A Python client for interacting with the Impulse protocol, a decentralized computing platform for machine learning jobs.
Overview
The Impulse Contracts Client provides two main executables:
impulse-node: For node operators to participate in the Impulse networkimpulse-client: For users to submit and monitor jobs on the network
Installation
Requirements
- Python 3.11
- An Ethereum wallet address
- Impulse tokens
- ETH for gas fees
- RPC endpoint for the blockchain
Installing via pip
pip install impulse-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 impulse-contracts-client && export PATH=/home/$USER/.local/bin:$PATH
Configuration
Both clients create a $HOME/.impulse directory for storing state:
- Node artifacts and configuration
- Client state and job information
- Logs and temporary files
Node Client (impulse-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 Impulse network
Requirements
- A whitelisted Ethereum address
- Impulse tokens transferred to the address
- The impulse 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
impulse-node
User Client (impulse-client)
Features
- Submits machine learning jobs to the Impulse 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:
impulse-client topup
Submitting Jobs
Example dummy job:
impulse-client create-job --args '{"shuffle": true, "use_lora": true, "use_qlora": false, "batch_size": 4, "dataset_id": "gs://imp-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:
impulse-client create-job --args '{"shuffle": true, "use_lora": true, "use_qlora": false, "batch_size": 4, "dataset_id": "gs://imp-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:
impulse-client monitor-all
Development
For development setup and contributing guidelines, see DEVEL.md.
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
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 impulse_contracts_client-0.3.4.tar.gz.
File metadata
- Download URL: impulse_contracts_client-0.3.4.tar.gz
- Upload date:
- Size: 44.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7540056c73207f18166a104a4d48d94a1427324bdf963bc2c5471c73e1c67109
|
|
| MD5 |
b46f9b04b662098e41dc05a5416cab1a
|
|
| BLAKE2b-256 |
d3ab6e9f4c0470f2d44058fbeef8ed9fa922c1e35729dddc3deeb4fc2fb268dd
|
File details
Details for the file impulse_contracts_client-0.3.4-py3-none-any.whl.
File metadata
- Download URL: impulse_contracts_client-0.3.4-py3-none-any.whl
- Upload date:
- Size: 29.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43d4fc8b6fe6c0da458d00651fa4475f5d3e47bf35ab4222a9509ead1ae011fd
|
|
| MD5 |
f72c2459313819f61143152d8547ce23
|
|
| BLAKE2b-256 |
7041f98580df5189d12c5730b56c9854d4ed75718c9d73cd3225872eeba0a703
|