> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-wbdocs-1882.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Architecture de référence

> Consultez l’architecture de référence pour les déploiements W&B autogérés couvrant Kubernetes, MySQL, le stockage d’objets et le réseau.

Cette page décrit une architecture de référence pour un déploiement W\&B et présente l’infrastructure et les ressources recommandées pour prendre en charge un déploiement de production de la plateforme.

Selon l’environnement de déploiement W\&B que vous avez choisi, différents services peuvent contribuer à renforcer la résilience de votre déploiement.

Par exemple, les principaux fournisseurs de services cloud proposent des services de base de données managés robustes, qui permettent de réduire la complexité de la configuration, de la maintenance, de la haute disponibilité et de la résilience des bases de données.

Cette architecture de référence couvre certains scénarios de déploiement courants et montre comment intégrer votre déploiement W\&B à des services de fournisseurs cloud pour obtenir des performances et une fiabilité optimales.

<div id="before-you-start">
  ## Avant de commencer
</div>

L’exploitation de toute application en production s’accompagne de son lot de défis, et W\&B ne fait pas exception. Bien que nous nous efforcions de simplifier le processus, certaines complexités peuvent survenir selon votre architecture et vos choix de conception. En règle générale, la gestion d’un déploiement en production implique de superviser divers composants, notamment le matériel, les systèmes d’exploitation, le réseau, le stockage, la sécurité, la plateforme W\&B elle-même, ainsi que d’autres dépendances. Cette responsabilité couvre à la fois la configuration initiale de l’environnement et sa maintenance continue.

Déterminez avec soin si une approche Autogérée avec W\&B convient à votre équipe et à vos besoins spécifiques.

Une solide compréhension de l’exploitation et de la maintenance d’une application de production constitue un prérequis important avant de déployer W\&B Autogéré. Si votre équipe a besoin d’assistance, notre équipe Professional Services et nos partenaires proposent une assistance pour la mise en œuvre et l’optimisation.

Pour en savoir plus sur les solutions gérées permettant d’exécuter W\&B au lieu de le gérer vous-même, reportez-vous à [W\&B Multi-tenant Cloud](/fr/platform/hosting/hosting-options/multi_tenant_cloud) et [W\&B Dedicated Cloud](/fr/platform/hosting/hosting-options/dedicated-cloud).

<div id="infrastructure">
  ## Infrastructure
</div>

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-wbdocs-1882/Sb3q6Nn7xrh8SB3Y/images/hosting/reference_architecture.png?fit=max&auto=format&n=Sb3q6Nn7xrh8SB3Y&q=85&s=5466f48ec09010e8620986044b878fcf" alt="Schéma de l’infrastructure W&B" width="851" height="1151" data-path="images/hosting/reference_architecture.png" />
</Frame>

<div id="application-layer">
  ### Couche application
</div>

La couche application se compose d’un cluster Kubernetes à plusieurs nœuds, résistant aux pannes de nœuds. Le cluster Kubernetes assure l’exécution et la gestion des pods de W\&B.

<div id="storage-layer">
  ### Couche de stockage
</div>

La couche de stockage comprend une base de données MySQL et un stockage d’objets. La base de données MySQL stocke les métadonnées, et le stockage d’objets stocke des Artifacts tels que des modèles et des jeux de données.

<div id="infrastructure-requirements">
  ## Exigences d’infrastructure
</div>

Les sections suivantes détaillent les exigences pour différents aspects d’un déploiement W\&B, notamment la configuration du cluster Kubernetes, MySQL, Redis, le stockage d’objets, les versions logicielles, le réseau, le DNS, l’équilibreur de charge et l’ingress, SSL/TLS, ainsi que les architectures CPU prises en charge.

<div id="kubernetes">
  ### Kubernetes
</div>

L’application W\&B Server est déployée sous la forme d’un [opérateur Kubernetes](/fr/platform/hosting/self-managed/operator) qui déploie plusieurs pods. W\&B nécessite donc un cluster Kubernetes avec :

* Un contrôleur d’ingress entièrement configuré et opérationnel.
* La capacité de provisionner des volumes persistants.

W\&B prend en charge le déploiement sur des [clusters Kubernetes OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift), dans le cloud, sur site et dans des environnements air-gapped. Pour des instructions de configuration spécifiques, voir la [section OpenShift](/fr/platform/hosting/self-managed/operator#openshift-kubernetes-clusters) du guide de l’opérateur.

<div id="mysql">
  ### MySQL
</div>

W\&B stocke les métadonnées dans une base de données MySQL. Les exigences en matière de performances et de stockage de la base de données dépendent de la forme des paramètres du modèle et des métadonnées associées. Par exemple, la base de données grossit à mesure que vous suivez davantage de runs d'entraînement, et la charge sur la base de données augmente selon les requêtes effectuées dans les tableaux de runs, les workspaces des utilisateurs et Reports.

**W\&B recommande vivement d'utiliser des services de base de données managés** (tels qu'AWS RDS Aurora MySQL, Google Cloud SQL for MySQL ou Azure Database for MySQL) pour les déploiements en production. Les services managés assurent les sauvegardes automatiques, la surveillance, la haute disponibilité et l'application des correctifs, tout en réduisant considérablement la complexité opérationnelle. Voir la section [Recommandations d'instances du fournisseur cloud](#cloud-provider-instance-recommendations) ci-dessous pour des recommandations de service spécifiques.

Si vous choisissez de déployer une base de données MySQL autogérée, tenez compte des points suivants :

* **Sauvegardes** : vous devez sauvegarder périodiquement la base de données vers un site distinct. W\&B recommande des sauvegardes quotidiennes avec au moins 1 semaine de rétention.
* **Performances** : la base de données nécessite un matériel de stockage rapide, tel qu'un SSD ou un NAS accéléré.
* **Surveillance** : la base de données nécessite des ressources CPU suffisantes. Surveillez la charge CPU du serveur de base de données. Si l'utilisation du CPU se maintient à > 90 % pendant plus de 5 minutes, envisagez d'ajouter de la capacité CPU.
* **Disponibilité** : pour répondre à vos exigences de disponibilité et de durabilité, W\&B recommande de configurer un déploiement de secours à chaud sur une machine distincte, qui transmet en temps réel toutes les mises à jour depuis le déploiement principal et est prêt à prendre le relais si le serveur principal tombe en panne, est corrompu ou subit une indisponibilité prolongée.

<div id="mysql-topology">
  #### Topologie MySQL
</div>

En production, un service MySQL managé est la solution la plus simple pour assurer une haute disponibilité, car le fournisseur de cloud gère le basculement, les sauvegardes et les correctifs. Utilisez l'option de haute disponibilité du fournisseur, par exemple Aurora Multi-AZ sur AWS.

Si vous exécutez MySQL en mode autogéré, utilisez une base de données principale avec une instance de secours à chaud qui reçoit un flux de réplication en temps réel et peut prendre le relais en cas de défaillance. W\&B ne prend pas en charge une topologie multi-maître ni des réplicas en lecture seule pour la base de données de l'application.

<div id="mysql-database-creation">
  #### Création de la base de données MySQL
</div>

Pour savoir comment créer manuellement la base de données MySQL et l’utilisateur, consultez la [section relative à la base de données MySQL du guide bare-metal](/fr/platform/hosting/self-managed/operator#mysql-database).

<div id="mysql-configuration-parameters">
  #### Paramètres de configuration de MySQL
</div>

Si vous utilisez votre propre instance MySQL, configurez MySQL avec ces paramètres :

```
binlog_format = 'ROW'
binlog_row_image = 'MINIMAL'
innodb_flush_log_at_trx_commit = 1
innodb_online_alter_log_max_size = 268435456
max_prepared_stmt_count = 1048576
sort_buffer_size = '67108864'
sync_binlog = 1
```

Ces paramètres ont été validés par W\&B afin de garantir des performances et une fiabilité optimales.

<div id="redis">
  ### Redis
</div>

W\&B dépend d’un déploiement Redis 7.x sur un seul nœud, utilisé par les composants de W\&B pour la mise en file d’attente des jobs et la mise en cache des données. Pour faciliter les tests et le développement de preuves de concept, W\&B Autogéré inclut un déploiement Redis local qui ne convient pas aux déploiements de production.

W\&B peut se connecter à une instance Redis dans les environnements suivants :

* [AWS Elasticache](https://aws.amazon.com/elasticache/)
* [Google Cloud Memory Store](https://cloud.google.com/memorystore?hl=en)
* [Azure Cache for Redis](https://azure.microsoft.com/en-us/products/cache)
* un déploiement Redis hébergé dans votre cloud ou sur votre infrastructure sur site

<div id="object-storage">
  ### Stockage d’objets
</div>

W\&B requiert un stockage d’objets prenant en charge les URL pré-signées et CORS, déployé sur l’une des solutions suivantes :

* [CoreWeave AI Object Storage](https://docs.coreweave.com/products/storage/object-storage) est un service de stockage d’objets à hautes performances, compatible S3, optimisé pour les charges de travail d’IA.
* [Amazon S3](https://aws.amazon.com/s3/) est un service de stockage d’objets offrant une évolutivité, une disponibilité des données, une sécurité et des performances de premier plan.
* [Google Cloud Storage](https://cloud.google.com/storage) est un service géré permettant de stocker des données non structurées à grande échelle.
* [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) est une solution de stockage d’objets dans le cloud permettant de stocker de grands volumes de données non structurées, comme du texte, des données binaires, des images, des vidéos et des journaux.
* Un stockage compatible S3 tel que [MinIO Enterprise (AIStor)](https://www.min.io/product/aistor), [NetApp StorageGRID](https://www.netapp.com/data-storage/storagegrid/) ou d’autres solutions de classe entreprise hébergées dans votre cloud ou sur votre infrastructure sur site.

<div id="versions">
  ### Versions
</div>

| Logiciel   | Version minimale                                                                                                                                            |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Kubernetes | v1.32 ou ultérieure ([Versions de Kubernetes prises en charge](https://kubernetes.io/releases/patch-releases/))                                             |
| Helm       | v3.x                                                                                                                                                        |
| MySQL      | v8.0.x est requis ; v8.0.32 ou ultérieure ; v8.0.44 ou ultérieure est recommandée.<br />Les versions Aurora MySQL 3.x doivent être en v3.05.2 ou ultérieure |
| Redis      | v7.x                                                                                                                                                        |

<div id="networking">
  ### Réseau
</div>

Pour un déploiement connecté au réseau, un accès sortant à ces endpoints est requis *à la fois* pendant l’installation et à l’exécution :

* [https://deploy.wandb.ai](https://deploy.wandb.ai)
* [https://charts.wandb.ai](https://charts.wandb.ai)
* [https://quay.io](https://quay.io) (utilisé pour les images Prometheus)

<Note>
  Des registres de conteneurs supplémentaires peuvent être requis selon votre configuration de déploiement :

  * `https://gcr.io` est nécessaire lors du déploiement de Bufstream et d’etcd pour les évaluations en ligne de Weave.
</Note>

Pour en savoir plus sur les déploiements air-gapped, consultez [l’opérateur Kubernetes pour les instances air-gapped](/fr/platform/hosting/self-managed/on-premises-deployments/kubernetes-airgapped).

L’accès à W\&B et au stockage d’objets est requis pour l’infrastructure d’entraînement ainsi que pour chaque système utilisé pour suivre les besoins des expériences.

<div id="dns">
  ### DNS
</div>

Le nom de domaine entièrement qualifié (FQDN) du déploiement W\&B doit pointer vers l’adresse IP de l’ingress/équilibreur de charge via un enregistrement A.

<div id="load-balancer-and-ingress">
  ### Équilibreur de charge et ingress
</div>

L’opérateur Kubernetes W\&B peut exposer des services à l’aide d’un contrôleur d’ingress Kubernetes, qui redirige les requêtes vers les services en fonction des chemins d’URL et de différents ports. Le contrôleur d’ingress doit être accessible depuis toutes les machines qui exécutent des charges de travail de machine learning ou accèdent au service via un navigateur web.

<div id="ingress-controller-requirements">
  #### Exigences du contrôleur d’ingress
</div>

Votre cluster Kubernetes doit disposer d’une `IngressClass`. Parmi les options courantes de contrôleur d’ingress :

* [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/)
* [Istio](https://istio.io)
* [Traefik](https://traefik.io/)
* Contrôleurs d’ingress des fournisseurs cloud (AWS ALB, GCP Ingress, Azure Application Gateway)

<div id="wb-service-routing">
  #### Routage du service W\&B
</div>

L’opérateur W\&B achemine automatiquement les requêtes vers plusieurs services backend selon le chemin :

| Chemin      | Service             | Port par défaut | Objectif                                              |
| ----------- | ------------------- | --------------- | ----------------------------------------------------- |
| `/`         | `wandb-app`         | 8080            | Interface utilisateur principale de l’application web |
| `/api`      | `wandb-api`         | 8081            | service API                                           |
| `/graphql`  | `wandb-api`         | 8081            | API endpoint GraphQL                                  |
| `/graphql2` | `wandb-api`         | 8081            | API endpoint GraphQL v2                               |
| `/console`  | `wandb-console`     | 8082            | Console système                                       |
| `/traces`   | `wandb-weave-trace` | 8722            | Service de tracing Weave (si activé)                  |

<div id="example-ingress-configuration">
  #### Exemple de configuration d’ingress
</div>

Voici un exemple de ressource ingress créée par l’opérateur W\&B :

```yaml theme={null}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wandb
  namespace: wandb
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
  ingressClassName: nginx
  rules:
  - host: wandb.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: wandb-app
            port:
              number: 8080
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: wandb-api
            port:
              number: 8081
      - path: /graphql
        pathType: Prefix
        backend:
          service:
            name: wandb-api
            port:
              number: 8081
      - path: /graphql2
        pathType: Prefix
        backend:
          service:
            name: wandb-api
            port:
              number: 8081
      - path: /console
        pathType: Prefix
        backend:
          service:
            name: wandb-console
            port:
              number: 8082
  tls:
  - hosts:
    - wandb.example.com
    secretName: wandb-tls
```

<Note>
  L’opérateur W\&B crée et gère automatiquement la configuration d’ingress. En général, vous n’avez pas besoin de créer manuellement des ressources d’ingress. Assurez-vous que votre cluster dispose d’un contrôleur d’ingress opérationnel et que l’`IngressClass` appropriée est configurée.
</Note>

<div id="ssltls">
  ### SSL/TLS
</div>

W\&B exige un certificat SSL/TLS valide, signé par une autorité reconnue, pour sécuriser les communications entre les clients et le serveur. La terminaison SSL/TLS doit se faire au niveau de l’ingress/de l’équilibreur de charge. L’application W\&B Server ne termine pas les connexions SSL ou TLS.

**Important** : W\&B ne prend pas en charge les certificats auto-signés ni les autorités de certification personnalisées. L’utilisation de certificats auto-signés entraînera des problèmes pour les utilisateurs et n’est pas prise en charge.

Si possible, utiliser un service comme [Let's Encrypt](https://letsencrypt.org) est un excellent moyen de fournir des certificats approuvés à votre équilibreur de charge. Des services comme Caddy et Cloudflare gèrent le SSL pour vous.

Si vos politiques de sécurité exigent une communication SSL au sein de vos réseaux de confiance, envisagez d’utiliser un outil comme Istio et des [conteneurs sidecar](https://istio.io/latest/docs/reference/config/networking/sidecar/).

<div id="supported-cpu-architectures">
  ### Architectures de processeur prises en charge
</div>

W\&B fonctionne sur les architectures 64 bits d’Intel et d’AMD. ARM n’est pas pris en charge.

<div id="deployment-method">
  ## Méthode de déploiement
</div>

<div id="recommended-wb-kubernetes-operator-with-helm">
  ### Recommandé : opérateur Kubernetes W\&B avec Helm
</div>

La méthode d’installation recommandée pour W\&B Autogéré consiste à utiliser l’**opérateur Kubernetes W\&B**, déployé via Helm. Cette approche offre :

* des mises à jour automatisées et une gestion simplifiée des composants W\&B
* une configuration et un déploiement simplifiés
* la prise en charge de tous les scénarios de déploiement (cloud, sur site, air-gapped)

Pour obtenir des instructions d’installation détaillées, voir :

* [Déployer la plateforme W\&B sur site](/fr/platform/hosting/self-managed/operator) - Guide d’installation principal
* [Opérateur Kubernetes pour les instances air-gapped](/fr/platform/hosting/self-managed/on-premises-deployments/kubernetes-airgapped) - Pour les environnements déconnectés

<div id="infrastructure-provisioning">
  ### Provisionnement de l’infrastructure
</div>

Terraform est la méthode recommandée pour provisionner l’infrastructure des déploiements W\&B en production. Avec Terraform, vous définissez les ressources requises, leurs références à d’autres ressources et leurs dépendances. W\&B fournit des modules Terraform pour les principaux fournisseurs cloud. Pour plus de détails, référez-vous à [Déployer W\&B Server au sein de comptes cloud Autogérés](/fr/platform/hosting/hosting-options/self-managed#deploy-wb-server-within-Self-Managed-cloud-accounts).

<div id="sizing">
  ## Dimensionnement
</div>

Utilisez les recommandations générales suivantes comme point de départ pour planifier un déploiement. W\&B recommande de surveiller de près tous les composants d’un nouveau déploiement et d’apporter des ajustements en fonction des tendances d’utilisation observées. Continuez à surveiller les déploiements de production au fil du temps et apportez les ajustements nécessaires pour maintenir des performances optimales.

Lors de la planification de la capacité, vous devez dimensionner deux composants principaux : un cluster Kubernetes pour la charge de travail de W\&B Operator et une base de données MySQL pour les métadonnées. Les recommandations varient selon l’**environnement** (Test/Dév ou Production) et, pour Kubernetes uniquement, selon la **combinaison de produits** (Models uniquement, Weave uniquement, ou Models et Weave). W\&B recommande de commencer avec un minimum de 3 nœuds worker pour Test/Dév comme pour Production, avec l’autoscaling du cluster activé en Production.

<div id="kubernetes-sizing">
  ### Dimensionnement Kubernetes
</div>

<Tabs>
  <Tab title="Models uniquement">
    | Environnement | CPU     | Mémoire | Disque |
    | ------------- | ------- | ------- | ------ |
    | Test/Dev      | 2 cœurs | 16 GB   | 100 GB |
    | Production    | 8 cœurs | 64 GB   | 100 GB |

    Les valeurs sont indiquées par nœud worker Kubernetes.
  </Tab>

  <Tab title="Weave uniquement">
    | Environnement | CPU      | Mémoire | Disque |
    | ------------- | -------- | ------- | ------ |
    | Test/Dev      | 4 cœurs  | 32 GB   | 100 GB |
    | Production    | 12 cœurs | 96 GB   | 100 GB |

    Les valeurs sont indiquées par nœud worker Kubernetes.
  </Tab>

  <Tab title="Models et Weave">
    | Environnement | CPU      | Mémoire | Disque |
    | ------------- | -------- | ------- | ------ |
    | Test/Dev      | 4 cœurs  | 32 GB   | 100 GB |
    | Production    | 16 cœurs | 128 GB  | 100 GB |

    Les valeurs sont indiquées par nœud worker Kubernetes.
  </Tab>
</Tabs>

<div id="mysql-sizing">
  ### Dimensionnement MySQL
</div>

Ces recommandations ne varient pas en fonction de la combinaison de produits. Pour obtenir des conseils sur la topologie et la disponibilité, voir [Topologie MySQL](#mysql-topology) sous [MySQL](#mysql).

| Environnement | CPU     | Mémoire | Disque |
| ------------- | ------- | ------- | ------ |
| Test/Dev      | 2 cœurs | 16 GB   | 100 GB |
| Production    | 8 cœurs | 64 GB   | 500 GB |

Les valeurs sont indiquées par nœud MySQL.

<div id="cloud-provider-instance-recommendations">
  ## Recommandations d’instances par fournisseur de cloud
</div>

Ces recommandations s’appliquent à chaque nœud d’un déploiement W\&B autogéré sur une infrastructure cloud.

<Tabs>
  <Tab title="AWS">
    **Services managés recommandés**

    * **Kubernetes**: Amazon EKS
    * **MySQL**: Amazon RDS Aurora
    * **Stockage d’objets**: Amazon S3

    | Environnement | K8s (Models uniquement) | K8s (Weave uniquement) | K8s (Models\&Weave) | MySQL          |
    | ------------- | ----------------------- | ---------------------- | ------------------- | -------------- |
    | Test/Dev      | r6i.large               | r6i.xlarge             | r6i.xlarge          | db.r6g.large   |
    | Production    | r6i.2xlarge             | r6i.4xlarge            | r6i.4xlarge         | db.r6g.2xlarge |
  </Tab>

  <Tab title="Google Cloud">
    **Services managés recommandés**

    * **Kubernetes**: Google Kubernetes Engine (GKE)
    * **MySQL**: Google Cloud SQL for MySQL
    * **Stockage d’objets**: Google Cloud Storage (GCS)

    | Environnement | K8s (Models uniquement) | K8s (Weave uniquement) | K8s (Models\&Weave) | MySQL           |
    | ------------- | ----------------------- | ---------------------- | ------------------- | --------------- |
    | Test/Dev      | n2-highmem-2            | n2-highmem-4           | n2-highmem-4        | db-n1-highmem-2 |
    | Production    | n2-highmem-8            | n2-highmem-16          | n2-highmem-16       | db-n1-highmem-8 |
  </Tab>

  <Tab title="Azure">
    **Services managés recommandés**

    * **Kubernetes**: Azure Kubernetes Service (AKS)
    * **MySQL**: Azure Database for MySQL
    * **Stockage d’objets**: Azure Blob Storage

    | Environnement | K8s (Models uniquement) | K8s (Weave uniquement) | K8s (Models\&Weave) | MySQL                  |
    | ------------- | ----------------------- | ---------------------- | ------------------- | ---------------------- |
    | Test/Dev      | Standard\_E2\_v5        | Standard\_E4\_v5       | Standard\_E4\_v5    | MO\_Standard\_E2ds\_v4 |
    | Production    | Standard\_E8\_v5        | Standard\_E16\_v5      | Standard\_E16\_v5   | MO\_Standard\_E8ds\_v4 |
  </Tab>
</Tabs>
