ColabHive Python SDK
Official Python client for ColabHive Builder APIs.
Train machine learning models on distributed GPUs without managing infrastructure.
Installation
pip install colabhive
Quick Start
from colabhive import ColabHive
# Initialize client
client = ColabHive(
api_key="your_api_key_here",
account_id="your_account_id_here"
)
# Upload dataset
dataset = client.datasets.upload(
name="my_training_data",
file="./data.csv"
)
print(f"Dataset uploaded: {dataset.id}")
# Train model
job = client.training.create(
model="xgboost-regression",
dataset_id=dataset.id,
job_name="My First Model"
)
print(f"Training started: {job.id}")
# Wait for completion
job.wait()
if job.status == "completed":
print("Training complete!")
print(f"Metrics: {job.metrics}")
else:
print(f"Training failed: {job.error_message}")
Authentication
Get your API key and account ID from console.colabhive.com.
client = ColabHive(
api_key="colabhive_sk_...",
account_id="0914e1c6-..."
)
Features
Datasets
# Upload
dataset = client.datasets.upload(name="data", file="./train.csv")
# List
datasets = client.datasets.list(limit=10)
# Get
dataset = client.datasets.get("dataset-id")
# Delete
client.datasets.delete("dataset-id")
Training
# Create training job
job = client.training.create(
model="xgboost-regression",
dataset_id="dataset-id",
job_name="Experiment 1",
hyperparameters={
"n_estimators": 100,
"max_depth": 6
}
)
# List jobs
jobs = client.training.list(limit=10, status="running")
# Get job
job = client.training.get("run-id")
# Wait for completion
job.wait(poll_interval=5, timeout=3600, verbose=True)
# Get metrics
metrics = job.metrics
print(metrics)
# Delete job
client.training.delete("run-id")
Models
# List models
models = client.models.list()
# Get model
model = client.models.get("model-id")
# Download model
path = client.models.download("model-id", "./my_model.pkl")
# Delete model
client.models.delete("model-id")
Model Configurations
# List available model configs
configs = client.training.model_configs(category="ml_classical")
for config in configs:
print(config.model_name, config.display_name)
print(config.default_hyperparameters)
Cohort Latent Fabric (0.7.0 production artifact)
Cohort execution is additive, production-deployed and hidden unless the authenticated
account and causal/autoregressive LLM endpoint both pass capability checks. Classic
inference is unchanged when execution is omitted. Always preflight the specific
endpoint before opting in:
from threading import Event
endpoint_id = "00000000-0000-4000-8000-000000000001"
client.cohorts.require_available(endpoint_id)
accepted = client.cohorts.run(
endpoint_id=endpoint_id,
input_data={"text": "bounded input"},
execution={
"mode": "cohort",
"fallback": "single",
"latency_budget_ms": 30_000,
"cost_budget_credits": 1.0,
},
idempotency_key="unique-request-key",
)
stop = Event()
for event in client.cohorts.iter_events(
accepted.task_id,
follow=True,
timeout=300,
cancel_event=stop,
):
print(event.type)
summary = client.cohorts.wait(accepted.task_id, timeout=300)
The follow iterator resumes by cursor, deduplicates reconnect overlap, retries transient 429/5xx responses and remains bounded by timeout or cancellation. Public models expose only redacted lifecycle, aggregate latency/cost and the terminal answer; intermediate tensors are never SDK responses.
Advanced Usage
Context Manager
with ColabHive(api_key="...", account_id="...") as client:
dataset = client.datasets.upload("data", "./train.csv")
job = client.training.create("xgboost-regression", dataset.id)
job.wait()
Custom Base URL
# For production
client = ColabHive(
api_key="...",
account_id="...",
base_url="https://api.colabhive.com"
)
# For local development
client = ColabHive(
api_key="...",
account_id="...",
base_url="http://localhost:8014"
)
Error Handling
from colabhive import (
APIError,
ColabHive,
ConflictError,
NotFoundError,
RateLimitError,
ValidationError,
)
client = ColabHive(api_key="...", account_id="...")
try:
dataset = client.datasets.upload("data", "./nonexistent.csv")
except ValidationError as e:
print(f"Invalid request: {e.message}")
except NotFoundError as e:
print(f"Not found: {e.message}")
except APIError as e:
print(f"API error: {e.message} (status: {e.status_code})")
ConflictError, ValidationError, RateLimitError and APIError represent
409, 400/422, 429 and 5xx responses respectively.
Requirements
- Python 3.8+
- httpx >= 0.24.0
- pydantic >= 2.0.0
Documentation
Support
- Discord: discord.gg/colabhive
- Email: support@colabhive.com
- Issues: GitHub Issues
License
MIT License - see LICENSE file for 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 colabhive-0.7.0.tar.gz.
File metadata
- Download URL: colabhive-0.7.0.tar.gz
- Upload date:
- Size: 41.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc3aed78f236620ee6037560c063b07e4dff77c48d85efe49e484e761e8f1a22
|
|
| MD5 |
e181aface5f7841c10a322a899b3d145
|
|
| BLAKE2b-256 |
74a5dd4bb36a07845bbdd13fbdeafe6bd1bc5f8c2ddb70f4e54a6f0c9a35fcce
|
File details
Details for the file colabhive-0.7.0-py3-none-any.whl.
File metadata
- Download URL: colabhive-0.7.0-py3-none-any.whl
- Upload date:
- Size: 45.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63ad1458561fb0e4c447af2ad0b1322dbceec8fc5327abcfc6d0b0261043b171
|
|
| MD5 |
e105352d5f8a6320215b20745d549564
|
|
| BLAKE2b-256 |
58d621984c8cb247373d45564395da5bb91361af249e2331919abb7e7ad403ad
|