altametris.sara.core.azure_weight_manager¶
Gestionnaire de téléchargement de poids depuis Azure Blob Storage.
Ce module fournit un gestionnaire pour télécharger automatiquement les poids de modèles depuis Azure Blob Storage, avec support de plusieurs méthodes d’authentification et intégration avec le système de cache local.
Méthodes d’authentification supportées: - Connection String (dev local) - Managed Identity (production - RECOMMANDÉ) - SAS Token (accès temporaire)
Example
>>> from altametris.sara.core import AzureWeightManager
>>> # Utiliser avec Managed Identity
>>> manager = AzureWeightManager(
... storage_account_name="myaccount",
... auth_method="managed_identity"
... )
>>> # Télécharger un modèle
>>> local_path = manager.get_weights("models/yolo11x.pt")
>>> print(f"Model downloaded to: {local_path}")
>>> # Lister les modèles disponibles
>>> weights = manager.list_weights("models", prefix="yolo11")
>>> for weight in weights:
... print(f"- {weight['name']} ({weight['size_mb']:.2f} MB)")
Attributes¶
Classes¶
Gestionnaire de téléchargement de poids depuis Azure Blob Storage avec support de cache local via CacheManager. |
Module Contents¶
- altametris.sara.core.azure_weight_manager.logger¶
- altametris.sara.core.azure_weight_manager.AuthMethod¶
- class altametris.sara.core.azure_weight_manager.AzureWeightManager(storage_account_name: str | None = None, auth_method: AuthMethod = 'connection_string', connection_string: str | None = None, sas_token: str | None = None, cache_manager: altametris.sara.core.cache_manager.CacheManager | None = None, show_progress: bool = True, max_retries: int = 3, retry_delay: float = 1.0)¶
Gestionnaire de téléchargement de poids depuis Azure Blob Storage avec support de cache local via CacheManager.
- Parameters:
storage_account_name – Nom du compte de stockage Azure. Requis pour managed_identity et sas_token.
auth_method – Méthode d’authentification à utiliser: - “connection_string”: Utilise AZURE_STORAGE_CONNECTION_STRING - “managed_identity”: Utilise Azure Managed Identity - “sas_token”: Utilise AZURE_STORAGE_SAS_TOKEN
connection_string – Connection string Azure (optionnel, lu depuis env si None).
sas_token – SAS token Azure (optionnel, lu depuis env si None).
cache_manager – Instance de CacheManager (créée automatiquement si None).
show_progress – Afficher une barre de progression pour les téléchargements.
max_retries – Nombre maximum de tentatives en cas d’échec.
retry_delay – Délai initial en secondes entre les tentatives (backoff exponentiel).
- Raises:
ConfigurationError – Si la configuration est invalide
ImportError – Si azure-storage-blob n’est pas installé
- auth_method = 'connection_string'¶
- storage_account_name = None¶
- show_progress = True¶
- max_retries = 3¶
- retry_delay = 1.0¶
- cache = None¶
- get_weights(weight_path: str, container: str = 'models', force_download: bool = False) pathlib.Path¶
Télécharge ou retourne depuis le cache les poids d’un modèle.
Cette méthode vérifie d’abord si les poids sont en cache et valides. Si oui, retourne le chemin local. Sinon, télécharge depuis Azure.
En cas d’échec du téléchargement, si un cache expiré existe, le retourne avec un warning.
- Parameters:
weight_path – Chemin du fichier des poids dans le conteneur (ex: “yolo11x.pt” ou “models/yolo11x.pt”)
container – Nom du conteneur Azure (défaut: “models”)
force_download – Si True, force le téléchargement même si en cache
- Returns:
Chemin absolu du fichier de poids en local
- Raises:
WeightsNotFoundError – Si les poids n’existe pas
AzureDownloadError – Si le téléchargement échoue et pas de cache disponible
ConfigurationError – Si les paramètres sont invalides
Example
>>> manager = AzureWeightManager(auth_method="managed_identity", storage_account_name="myaccount") >>> # Première fois: télécharge depuis Azure >>> path = manager.get_weights("yolo11x.pt", container="models") >>> print(f"Downloaded to: {path}") >>> # Deuxième fois: retourne depuis le cache >>> path = manager.get_weights("yolo11x.pt", container="models") >>> print(f"Loaded from cache: {path}") >>> # Forcer le téléchargement >>> path = manager.get_weights("yolo11x.pt", container="models", force_download=True)
- list_weights(container: str = 'models', prefix: str | None = None) list[dict[str, Any]]¶
Liste les poids disponibles dans un conteneur Azure.
- Parameters:
container – Nom du conteneur (défaut: “models”)
prefix – Préfixe optionnel pour filtrer (ex: “yolo11” pour lister tous les yolo11)
- Returns:
name: Nom du blob
size_bytes: Taille en octets
size_mb: Taille en MB
last_modified: Timestamp de dernière modification
etag: ETag du blob
- Return type:
Liste de dictionnaires contenant les métadonnées de chaque fichier de poids
- Raises:
AzureError – Si le listing échoue
ConfigurationError – Si le conteneur est invalide
Example
>>> manager = AzureWeightManager(auth_method="managed_identity", storage_account_name="myaccount") >>> # Lister tous les modèles >>> weights = manager.list_weights("models") >>> for weight in weights: ... print(f"{weight['name']}: {weight['size_mb']:.2f} MB") >>> # Lister seulement les modèles yolo11 >>> yolo_weights = manager.list_weights("models", prefix="yolo11")
- clear_cache(pattern: str | None = None) int¶
Vide le cache local des poids téléchargés.
- Parameters:
pattern – Pattern optionnel (glob style, ex:
"models/*.pt") Si None, supprime tout le cache.- Returns:
Nombre de fichiers supprimés
- get_cache_stats() dict[str, Any]¶
Retourne les statistiques du cache local.
- Returns:
Dictionnaire avec les statistiques du cache (voir CacheManager.get_cache_stats)