Manage GPU sessions on Clouditia platform
Project description
Clouditia Manager SDK
SDK Python pour gérer les sessions GPU sur la plateforme Clouditia via l'API Computing (sk_compute_).
Installation
pip install clouditia-manager
Quick Start
from clouditia_manager import GPUManager
# Initialiser avec votre clé API sk_compute_
manager = GPUManager(api_key="sk_compute_xxxxx")
# Créer une session GPU
# Le SDK attend automatiquement que la session soit prête
session = manager.create_session(
gpu_type="nvidia-rtx-3090",
vcpu=2,
ram=4,
storage=20
)
# Output:
# Creating GPU session with nvidia-rtx-3090...
# Session created: 0e4c713a
# Waiting for session 0e4c713a to be ready... Ready!
#
# ==================================================
# SESSION READY
# ==================================================
# Name : compute-gpu-0e4c713a
# Short ID : 0e4c713a
# Status : running
# GPU : nvidia-rtx-3090 x1
# vCPU : 2
# RAM : 4Gi
# Storage : 20Gi
# URL : https://clouditia.com/code-editor/...
# Password : xxxxxxxxxxxx
# ==================================================
print(f"Session prête: {session.name}")
Configuration
from clouditia_manager import GPUManager
# Configuration par défaut (URL: https://clouditia.com/jobs)
manager = GPUManager(api_key="sk_compute_xxxxx")
# Configuration avec timeout personnalisé
manager = GPUManager(
api_key="sk_compute_xxxxx",
base_url="https://clouditia.com/jobs",
timeout=120 # Timeout en secondes (défaut: 60)
)
Fonctionnalités
1. Vérifier la clé API
La vérification est automatique à l'initialisation :
manager = GPUManager(api_key="sk_compute_xxxxx")
print(f"Utilisateur: {manager.user['username']}")
print(f"Email: {manager.user['email']}")
2. Créer une session GPU (Single GPU)
# Création standard (attend automatiquement que la session soit prête)
session = manager.create_session(
gpu_type="nvidia-rtx-3090", # Type de GPU
gpu_count=1, # Nombre de GPUs
vcpu=4, # Nombre de vCPUs
ram=16, # RAM en GB
storage=20 # Stockage en GB
)
# La session est prête avec un nom automatique: compute-gpu-{short_id}
print(f"Nom: {session.name}") # compute-gpu-0e4c713a
print(f"ID: {session.short_id}") # 0e4c713a
print(f"Status: {session.status}") # running
print(f"URL: {session.url}")
print(f"Password: {session.password}")
# Options avancées
session = manager.create_session(
gpu_type="nvidia-rtx-3090",
wait_ready=True, # Attendre que la session soit prête (défaut: True)
timeout=180, # Timeout en secondes (défaut: 180)
verbose=True # Afficher les messages de status (défaut: True)
)
# Mode silencieux (sans attente ni messages)
session = manager.create_session(
gpu_type="nvidia-rtx-3090",
wait_ready=False, # Ne pas attendre
verbose=False # Pas de messages
)
3. Créer une session Multi-GPU (plusieurs types de GPU)
# Créer une session avec plusieurs GPUs de types différents
session = manager.create_session(
gpus=[
{'type': 'nvidia-rtx-3090', 'count': 1},
{'type': 'nvidia-rtx-3060ti', 'count': 1}
],
vcpu=4,
ram=16,
storage=20
)
# Output:
# Creating GPU session with 1x nvidia-rtx-3090, 1x nvidia-rtx-3060ti...
# Session created: f0b09214
# Waiting for session f0b09214 to be ready... Ready!
#
# ==================================================
# SESSION READY
# ==================================================
# Name : compute-gpu-f0b09214
# Short ID : f0b09214
# Status : running
# GPUs : 2 total
# - nvidia-rtx-3090 x1
# - nvidia-rtx-3060ti x1
# vCPU : 4
# RAM : 16Gi
# Storage : 20Gi
# URL : https://clouditia.com/code-editor/...
# Password : xxxxxxxxxxxx
# ==================================================
print(f"GPU Count: {session.gpu_count}") # 2
print(f"GPUs: {session.gpus}") # Liste des configs GPU
4. Lister les sessions
# Toutes les sessions
sessions = manager.list_sessions()
# Filtrer par status
running = manager.list_sessions(status="running")
stopped = manager.list_sessions(status="stopped")
for session in sessions:
print(f"{session.name} ({session.short_id}): {session.status} - {session.gpu_type}")
5. Obtenir le status d'une session
# Par short ID (8 caractères)
session = manager.get_session("0e4c713a")
print(f"Nom: {session.name}") # compute-gpu-0e4c713a
print(f"Status: {session.status}") # running
print(f"GPU: {session.gpu_type}") # nvidia-rtx-3090
print(f"GPUs: {session.gpus}") # Liste des GPUs (pour multi-GPU)
print(f"URL: {session.url}")
6. Renommer une session
# Chaque session a un nom par défaut: compute-gpu-{short_id}
session = manager.create_session(gpu_type="nvidia-rtx-3090")
print(f"Nom par défaut: {session.name}") # compute-gpu-0e4c713a
# Renommer la session
session = manager.rename_session("0e4c713a", "mon-projet-ml-v1")
print(f"Nouveau nom: {session.name}") # mon-projet-ml-v1
7. Arrêter une session
# Arrêt standard (attend automatiquement la suppression du pod)
session = manager.stop_session("0e4c713a")
# Output:
# Stopping session 0e4c713a...
# Waiting for pod termination... Done!
#
# ==================================================
# SESSION STOPPED
# ==================================================
# Name : mon-projet-ml-v1
# Short ID : 0e4c713a
# Status : stopped
# GPU : nvidia-rtx-3090 (released)
# ==================================================
print(f"Session arrêtée: {session.name}")
print(f"Status: {session.status}")
# Options avancées
session = manager.stop_session(
"0e4c713a",
wait_stopped=True, # Attendre la suppression complète (défaut: True)
timeout=120, # Timeout en secondes (défaut: 120)
verbose=True # Afficher les messages (défaut: True)
)
# Mode silencieux
session = manager.stop_session("0e4c713a", wait_stopped=False, verbose=False)
8. Consulter l'inventaire GPU
inventory = manager.get_inventory()
for gpu in inventory:
print(f"{gpu.gpu_name}: {gpu.available}/{gpu.total} disponibles")
print(f" Prix: {gpu.price_per_hour}EUR/h")
9. Générer une clé SDK (sk_live_)
# Générer une clé pour utiliser le SDK clouditia
sdk_key = manager.generate_sdk_key("0e4c713a", name="Ma clé SDK")
print(f"Clé SDK: {sdk_key}") # sk_live_xxxxx...
# Utiliser avec le SDK clouditia
from clouditia import GPUSession
gpu = GPUSession(api_key=sdk_key)
result = gpu.run("print('Hello GPU!')")
Types de GPU disponibles
| GPU | Slug |
|---|---|
| NVIDIA RTX 3060 Ti | nvidia-rtx-3060ti |
| NVIDIA RTX 3080 Ti | nvidia-rtx-3080ti |
| NVIDIA RTX 3090 | nvidia-rtx-3090 |
| NVIDIA RTX 4090 | nvidia-rtx-4090 |
Gestion des erreurs
from clouditia_manager import (
GPUManager,
AuthenticationError,
SessionNotFoundError,
InsufficientResourcesError,
APIError
)
try:
manager = GPUManager(api_key="sk_compute_xxxxx")
session = manager.create_session(gpu_type="nvidia-rtx-4090")
except AuthenticationError:
print("Clé API invalide")
except InsufficientResourcesError:
print("Aucun GPU disponible")
except SessionNotFoundError:
print("Session non trouvée")
except APIError as e:
print(f"Erreur API: {e}")
Référence API
| Méthode | Description |
|---|---|
GPUManager(api_key, base_url, timeout) |
Initialise le SDK |
create_session(gpu_type, gpu_count, gpus, vcpu, ram, storage, wait_ready, timeout, verbose) |
Crée une session GPU |
stop_session(session_id, wait_stopped, timeout, verbose) |
Arrête une session |
get_session(session_id) |
Récupère les détails d'une session |
list_sessions(status) |
Liste les sessions (filtre optionnel) |
rename_session(session_id, new_name) |
Renomme une session |
get_inventory() |
Récupère l'inventaire GPU |
generate_sdk_key(session_id, name) |
Génère une clé sk_live_ |
Attributs GPUSession
| Attribut | Type | Description |
|---|---|---|
id |
str | UUID complet de la session |
short_id |
str | ID court (8 caractères) |
name |
str | Nom de la session |
status |
str | running, stopped, pending, failed |
gpu_type |
str | Type(s) de GPU (séparés par virgule si multi-GPU) |
gpu_count |
int | Nombre total de GPUs |
gpus |
list | Liste des configurations GPU (pour multi-GPU) |
vcpu |
int | Nombre de vCPUs |
ram |
str | RAM allouée |
storage |
str | Stockage alloué |
url |
str | URL d'accès |
password |
str | Mot de passe |
Attributs GPUInventory
| Attribut | Type | Description |
|---|---|---|
gpu_type |
str | Slug du GPU |
gpu_name |
str | Nom complet du GPU |
total |
int | Stock total |
available |
int | Stock disponible |
in_use |
int | Stock en utilisation |
price_per_hour |
float | Prix par heure (EUR) |
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
clouditia_manager-1.2.2.tar.gz
(11.6 kB
view details)
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 clouditia_manager-1.2.2.tar.gz.
File metadata
- Download URL: clouditia_manager-1.2.2.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5569c8b568bb775568d6f1d4ef37d56b0167b92de631f312d0fb56d0a3b134c4
|
|
| MD5 |
e96be73b75c1b695153766079ebe019f
|
|
| BLAKE2b-256 |
647b1d6d6735b896f0c36245d47411bc9ff56be6fa5f6cb271e4b32f40044684
|
File details
Details for the file clouditia_manager-1.2.2-py3-none-any.whl.
File metadata
- Download URL: clouditia_manager-1.2.2-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
759f577f105280c80d74e0af04af1a53bafd313ca94ecf4ef0565af80a6d6a55
|
|
| MD5 |
e372a00f2b6eec2f4eecea5335bedad9
|
|
| BLAKE2b-256 |
c607c49724140753f41d5340d12b99c3ae62f0d8f69ba068b6fe0027643212f6
|