CRYPTO SANS KYCLocation GPU · 3, 7 ou 30 jours
CapordiaEspace client
Menu
Exploitation / Parallélisme

Choisir ce qui avance ensemble avant de compter les cartes.

Le parallélisme répond à deux besoins différents : terminer davantage de tâches indépendantes ou répartir un même travail entre plusieurs GPU. Commencez par identifier ce qui doit être partagé, synchronisé ou rassemblé. Chaque carte garde sa mémoire propre et la topologie du serveur reste à vérifier. Le bon choix dépend du logiciel et du résultat attendu ; multiplier les cartes ne promet ni mémoire unifiée ni durée divisée.

01

Définir l’unité de travail que l’on peut séparer

Écrivez ce qui constitue un résultat accepté : une image, un document traité, un ensemble de simulations ou un état final d’entraînement. Demandez ensuite si une unité peut être calculée sans attendre les autres. Deux documents peuvent être indépendants pendant leur traitement, puis dépendre d’une étape commune de construction d’index. Le découpage doit décrire cette seconde étape au lieu de l’oublier dans une promesse de parallélisme.

Distinguez l’indépendance informatique de l’indépendance métier. Une sortie peut être produite sans échange technique et rester inutilisable avant validation du lot complet. Nommez donc l’unité de calcul, l’unité de livraison et la règle d’assemblage. Ce vocabulaire commun évite que les achats comptent des cartes tandis que l’équipe applicative compte des instances ou des fragments d’un même modèle.

02

Choisir entre travaux indépendants et coopération étroite

Pour des tâches indépendantes, chaque processus reçoit ses propres entrées et produit une sortie identifiable. Une autre carte peut exécuter une autre tâche sans synchronisation à chaque étape. Ce mode est intéressant lorsque l’objectif porte sur la quantité terminée pendant une fenêtre. Il n’accélère pas automatiquement une tâche isolée et il faut encore vérifier la contention sur les données, le stockage ou les licences.

Pour un travail coopératif, les périphériques échangent des données ou attendent un résultat intermédiaire. Le programme doit gérer cette répartition. Le guide CUDA explique que l’exploitation de plusieurs GPU implique contextes, distribution des données, lancements et communications. Ce sont des propriétés du chemin logiciel et du système observé ; le nom d’une carte du catalogue ne prouve pas que ce chemin existe déjà.

Choisir la structure avant de choisir le nombre de cartes
QuestionTravaux indépendantsTravail coopératif
Que reçoit une carte ?Une tâche complète distincteUne partie ou une réplique du travail
Que faut-il coordonner ?Attribution des entrées et collecte des sortiesÉchanges, ordre et synchronisations
Quel bénéfice vérifier ?Nombre de résultats acceptés par fenêtreRésultat identique avec durée ou capacité adaptée
Quel échec anticiper ?Une tâche ou une publication isoléeL’effet d’un participant indisponible sur le groupe
03

Ne pas confondre réplication et répartition de mémoire

Plusieurs copies d’un modèle ne signifient pas que ses paramètres sont divisés entre les cartes. PyTorch DistributedDataParallel synchronise les gradients entre processus qui entraînent leurs modèles locaux. Cette approche ne permet donc pas de conclure, par son seul nom, qu’un modèle trop volumineux pour une carte tiendra sur plusieurs. Un mécanisme de partitionnement demande sa propre documentation et sa propre validation.

La mémoire de chaque carte doit couvrir ce que le logiciel y place effectivement : données, état du modèle, espaces temporaires et éventuels échanges. Le pic peut varier avec les réglages et la phase de traitement. Relevez-le par périphérique. Une somme de capacités nominales masque un déséquilibre où une carte manque de mémoire tandis que les autres en gardent. La capacité totale du lot ne suffit pas à accepter le scénario.

04

Exemple fictif : répartir huit conversions indépendantes

L’équipe fictive « Index des ouvrages » prépare huit conversions de documents. Dans son hypothèse de travail, chaque conversion occupe une carte pendant douze minutes, chargement et sortie inclus. Une tâche tient seule sur la carte et aucun échange n’est nécessaire avant l’assemblage final. Ces durées servent uniquement à construire le raisonnement : elles ne décrivent aucune exécution ni performance de GPU proposée par Capordia.

Avec une carte, huit tâches successives représentent 8 × 12 = 96 minutes. Avec deux cartes et une répartition équilibrée de quatre tâches chacune, la partie parallélisable représente théoriquement 48 minutes. Si l’assemblage final exige dix minutes sur un poste distinct, le chemin complet devient respectivement 106 ou 58 minutes, hors attente avant départ. Ce calcul suppose que les deux cartes ne ralentissent pas leurs chargements réciproques.

Calcul illustratif, non mesuré — huit tâches de douze minutes et dix minutes d’assemblage
OrganisationPartie parallélisableAssemblageDurée calculée
Une carte, huit tâches96 min10 min106 min
Deux cartes, quatre tâches chacune48 min10 min58 min
05

Faire apparaître ce qui peut annuler ce gain théorique

Dans le même exemple, les documents ne sont peut-être pas de taille égale. Attribuer les quatre plus longs à une carte laisse l’autre attendre en fin de parcours. Une distribution au fil des disponibilités peut améliorer l’équilibre, mais elle exige un mécanisme d’attribution fiable et une politique d’admission. Le guide sur la file traite cette organisation ; le présent calcul n’atteste pas qu’elle soit déjà installée.

Le stockage peut aussi devenir la ressource commune dominante. Deux processus qui lisent les mêmes données ou écrivent simultanément de gros résultats ne disposent pas nécessairement de deux fois le débit. Vérifiez également les limites de concurrence des outils et des licences. Si la partie non parallélisable augmente, refaites le calendrier complet. Le temps gagné sur une phase ne doit pas masquer un délai ajouté ailleurs.

06

Pour un travail réparti, recevoir la topologie réelle

Demandez quelles cartes sont visibles, comment elles communiquent et quelles ressources hôtes partagent leurs processus. Vérifiez les périphériques accessibles depuis l’environnement utilisé, pas uniquement depuis une console administrateur. CUDA précise que l’accès à la mémoire d’un autre GPU dépend notamment de la topologie et des capacités du système. Le support d’une fonction par un modèle ne démontre pas la présence du lien attendu sur la machine.

Conservez un schéma simple de la circulation des données : entrée, carte ou processus concerné, échanges, rassemblement final et sortie. Pour chaque flèche, identifiez si elle traverse la mémoire hôte, un lien entre GPU ou le réseau. Cette vue sert à choisir les contrôles de réception. Elle n’impose pas une technologie donnée et ne transforme pas une demande multi-GPU en promesse de topologie particulière.

07

Comparer deux organisations sans déplacer le résultat attendu

Préparez un petit corpus représentatif et exécutez, sur votre cible autorisée, une organisation de référence puis l’organisation candidate. Conservez versions, réglages, qualité attendue et règles d’assemblage. Comparez le temps jusqu’au résultat accepté, le pic mémoire de chaque carte, les erreurs et la consommation des ressources communes. Séparez les observations des estimations ; une commande proposée ne vaut pas résultat déjà obtenu.

Vérifiez en particulier que le nombre de sorties acceptées reste le même et qu’aucune entrée n’est omise. Pour un calcul sensible à l’ordre des opérations, choisissez une tolérance justifiée plutôt qu’une égalité arbitraire. Une organisation qui termine plus vite avec une qualité différente répond à un autre problème. Conservez aussi un cas où le partage n’est pas avantageux : cette limite explique mieux le choix qu’un classement de cartes sans charge commune.

08

Traduire le choix en capacité demandée

Écrivez finalement le nombre de tâches simultanées, les cartes nécessaires à chacune et les conditions indispensables. Une tâche répartie sur deux cartes et deux tâches d’une carte représentent deux organisations différentes, même si le total de cartes est égal. La configuration choisie doit permettre l’organisation requise ; ne partez pas du total nominal pour lui inventer ensuite un usage.

Le catalogue indique des lots de cartes. Un lot B200 contient deux GPU de 180 Go chacun ; cette composition ne garantit pas qu’un logiciel les exploitera comme une seule mémoire. La prochaine étape est de faire correspondre le besoin au lot puis de réceptionner les propriétés effectivement nécessaires. Le calendrier, le coût et la décision restent provisoires tant que les conditions décisives ne sont pas vérifiées.

Questions pour décider

Deux GPU sont-ils toujours plus rapides qu’un seul ?

Non. Le gain dépend de la fraction parallélisable, des échanges et des ressources communes. Pour une tâche isolée non répartissable, une seconde carte peut rester inutilisée. Comparez le temps jusqu’au même résultat accepté, sur un protocole explicite.

Un lot de deux cartes double-t-il la mémoire disponible pour mon programme ?

Pas automatiquement. Chaque périphérique possède sa mémoire et le programme doit répartir son état ou ses données. La réplication d’un modèle peut au contraire dupliquer une grande partie de cet état. Vérifiez le mécanisme logiciel et le pic par carte.

Quand commencer par des tâches indépendantes ?

Lorsque chaque unité peut être calculée séparément et que le bénéfice recherché est de terminer davantage d’unités. Il faut tout de même valider l’attribution, l’équilibre des charges et l’assemblage final, sans supposer que stockage et licences suivent automatiquement.

POURSUIVRE LE DOSSIERExaminer les configurationsConsulter les questions fréquentes