Partager via


Principes de conception pour les charges de travail IA sur Azure

Cet article décrit les principes fondamentaux des charges de travail IA sur Azure, avec un focus sur les aspects ia d’une architecture. Il est essentiel de prendre en compte tous les piliers d’Azure Well-Architected Framework collectivement, y compris leurs compromis. Appliquez chaque pilier aux exigences fonctionnelles et non fonctionnelles de la charge de travail.

Fiabilité

Lorsque vous exécutez des charges de travail IA sur Azure, vous devez prendre en compte la plupart des mêmes exigences de fiabilité que celles que vous envisagez pour d’autres types de charges de travail. Toutefois, les considérations spécifiques relatives à l’entraînement, à l’hébergement et à l’inférence de modèle sont particulièrement importantes et sont le focus de cet article. Il est important d’intégrer ces pratiques aux meilleures pratiques de conception standard pour les applications cloud, qui s’appliquent également aux charges de travail IA.

Passez en revue les principes de conception fiabilité pour comprendre les concepts décrits ici.

Principe de conception À propos de l’installation
Atténuer les points de défaillance uniques. S’appuyer sur une seule instance pour les composants critiques peut entraîner des problèmes importants. Pour éviter ces types de problèmes, générez une redondance dans tous les composants critiques. Utilisez des plateformes qui ont une tolérance de panne intégrée et des fonctionnalités de haute disponibilité, et implémentez la redondance en déployant plusieurs instances ou nœuds.
Effectuez une analyse du mode d’échec.

Tirez parti des modèles de conception connus.
Analysez régulièrement les modes d’échec potentiels dans vos composants système et générez une résilience contre ces défaillances. Utilisez des modèles de conception connus pour isoler des parties de votre système et empêcher les défaillances en cascade. Par exemple, le modèle Bulkhead peut aider à isoler les pannes, et les mécanismes de nouvelle tentative ainsi que les disjoncteurs (circuit breakers) peuvent gérer les erreurs transitoires, comme les requêtes e limitation (throttling).
Équilibrer les objectifs de fiabilité entre les composants dépendants. Vérifiez que le point de terminaison d’inférence ou le modèle et le magasin de données sont alignés en termes de fiabilité. Les composants d’application doivent rester disponibles même dans des conditions inattendues, telles qu’une augmentation des utilisateurs simultanés. En outre, la charge de travail doit être en mesure de basculer vers des systèmes de sauvegarde en cas de défaillance. Si un composant échoue, il affecte la fiabilité de l’autre.

De même, les API de couche de service, qui sont des ressources de production critiques, doivent respecter les mêmes normes de fiabilité que d’autres flux de charge de travail à haute criticité. Si ces API nécessitent une haute disponibilité, la plateforme d’hébergement doit prendre en charge les zones de disponibilité ou une conception multirégion pour garantir une opération et une résilience continues.
Conception pour la fiabilité opérationnelle. Maintenez la fiabilité des réponses du modèle en veillant à ce que les mises à jour soient fréquentes et en temps voulu. Décidez d’utiliser des données récentes ou légèrement plus anciennes, en équilibrant le besoin d’informations à jour avec la praticité de la fréquence de mise à jour. Vous devez automatiser la formation en ligne en raison de ses exigences en matière de fréquence et de fiabilité. La formation hors connexion peut être justifiée par le biais d’une analyse des coûts et des avantages. Vous pouvez utiliser des ressources moins coûteuses pour la formation hors connexion.
Conception pour une expérience utilisateur fiable. Utilisez des tests de charge pour évaluer la façon dont votre charge de travail gère le stress et concevez votre interface utilisateur pour gérer les attentes des utilisateurs en matière de temps de réponse. Implémentez des éléments d’interface utilisateur qui informent les utilisateurs des temps d’attente potentiels et adoptent des principes de conception cloud asynchrones pour traiter l’intermittence, la latence ou les défaillances.

Sécurité

Les modèles utilisent souvent des données de production sensibles pour produire des résultats pertinents. Vous devez donc implémenter des mesures de sécurité robustes dans toutes les couches de l’architecture. Ces mesures incluent l’implémentation de la conception d’applications sécurisée au début du cycle de vie, le chiffrement des données au repos et en transit, ainsi que l’adhésion aux normes de conformité du secteur. Les évaluations de sécurité régulières sont essentielles pour identifier et atténuer les vulnérabilités. Les mécanismes avancés de détection des menaces permettent de garantir des réponses rapides aux menaces potentielles.

principes de sécurité sont fondamentaux pour protéger l’intégrité des données, l’intégrité de la conception et la confidentialité des utilisateurs dans les solutions IA. En tant que propriétaire de charge de travail, vous êtes responsable de la création d’une confiance et de la protection des informations sensibles pour garantir une expérience utilisateur sécurisée.

Principe de conception À propos de l’installation
Gagnez l’approbation de l’utilisateur. Intégrez la sécurité du contenu à chaque étape du cycle de vie en utilisant du code, des outils et des contrôles de sécurité efficaces.

Supprimez les informations personnelles et confidentielles inutiles sur tous les points de stockage de données, notamment les magasins de données agrégés, les index de recherche, les caches et les applications. Maintenez ce niveau de sécurité de manière cohérente tout au long de l’architecture.

Veillez à implémenter une modération de contenu complète qui inspecte les données dans les deux sens et filtre le contenu inapproprié et offensant.
Protégez les données au repos, en transit et en cours d’utilisation, en fonction des exigences de confidentialité de la charge de travail. Au minimum, utilisez le chiffrement au niveau de la plateforme avec des clés gérées par Microsoft ou gérées par le client sur tous les magasins de données de l’architecture. Déterminez où vous avez besoin de niveaux de chiffrement plus élevés et utilisez le double chiffrement si vous en avez besoin.

Vérifiez que tout le trafic utilise HTTPS pour le chiffrement. Déterminez les points de terminaison TLS à chaque étape.

Le modèle lui-même doit être protégé pour empêcher les attaquants d’extraire des informations sensibles utilisées pendant l’entraînement. Le modèle nécessite le niveau de sécurité le plus élevé. Envisagez d’utiliser le chiffrement homomorphe qui autorise l’inférence sur les données chiffrées.
Investissez dans une gestion robuste des accès pour les identités (utilisateur et système) qui accèdent au système. Implémentez le contrôle d’accès en fonction du rôle (RBAC) et/ou le contrôle d’accès basé sur des attributs (ABAC) pour les plans de contrôle et de données.

Conservez une segmentation d’identité appropriée pour protéger la confidentialité. Autorisez uniquement l’accès au contenu que les identités sont habilitées à consulter.
Protégez l’intégrité de la conception en implémentant la segmentation. Fournissez une mise en réseau privée pour l’accès aux référentiels centralisés pour les images conteneur, les données et les ressources de code.

Lorsque vous partagez l’infrastructure avec d’autres charges de travail, cela provoque une segmentation. Par exemple, lorsque vous hébergez votre serveur d’inférence dans Azure Kubernetes Service, isolez le pool de nœuds des autres API et charges de travail.
Effectuez des tests de sécurité. Développez un plan de test détaillé qui inclut des tests pour détecter un comportement non éthique chaque fois que les modifications sont introduites dans le système.

Intégrez des composants IA à vos tests de sécurité existants. Par exemple, incorporez le point de terminaison d’inférence dans vos tests de routine avec d’autres points de terminaison publics.

Envisagez d’effectuer des tests sur le système en direct, tels que les tests d’intrusion ou les exercices d’équipe rouge, pour identifier et résoudre efficacement les vulnérabilités potentielles.
Réduisez la surface d’attaque en appliquant un accès utilisateur et une conception d’API stricts. Exiger l’authentification pour tous les points de terminaison d’inférence, y compris les appels système à système. Évitez les points de terminaison anonymes.

Préférez la conception d’API contrainte au coût de la flexibilité côté client.

Compromis. L'implémentation des niveaux de sécurité les plus élevés entraîne des compromis en matière de coût et de précision, car la possibilité d’analyser, d’inspecter ou de consigner les données chiffrées est limitée. Les contrôles de sécurité du contenu et l’obtention d’une explication peuvent également être difficiles dans les environnements hautement sécurisés.

Les domaines de conception suivants fournissent des détails sur les principes et considérations précédents :

Optimisation des coûts

L’objectif du pilier Optimisation des coûts est d’optimiser l’investissement, pas nécessairement de réduire les coûts. Chaque choix architectural crée des impacts financiers directs et indirects. Comprenez les coûts associés à différentes options, notamment les décisions de génération et d’achat, les sélections technologiques, les modèles de facturation, les licences, la formation et les dépenses opérationnelles. Il est important d’optimiser votre investissement dans le niveau sélectionné et de réévaluer continuellement les modèles de facturation. Évaluez en permanence les coûts associés aux modifications apportées à l’architecture, aux besoins métier, aux processus et à la structure d’équipe.

Passez en revue les principes d’optimisation des coûts , en mettant l’accent sur l’optimisation des taux et de l’utilisation.

Principe de conception À propos de l’installation
Déterminez les facteurs de coût en effectuant un exercice complet de modélisation des coûts. Tenez compte des facteurs clés de la plateforme de données et d’application :
- Volume de données. Estimer la quantité de données que vous allez indexer et traiter. Les volumes plus volumineux peuvent augmenter les coûts de stockage et de traitement.
- Nombre de requêtes. Prédire la fréquence et la complexité des requêtes. Des volumes de requêtes plus élevés peuvent augmenter les coûts, en particulier si les requêtes nécessitent des ressources de calcul importantes.
- Débit. Évaluez le débit attendu pour déterminer le niveau de performance dont vous avez besoin. Des demandes de débit plus élevées peuvent entraîner des coûts plus élevés.
- Coûts des dépendances. Comprenez qu’il peut y avoir des coûts masqués dans les dépendances. Par exemple, lorsque vous calculez le coût de l’indexation, incluez le coût de l’ensemble de compétences, qui fait partie du traitement des données, mais en dehors de l’étendue de l’index.
Payez ce que vous avez l’intention d’utiliser. Choisissez une solution technologique qui répond à vos besoins sans entraîner de dépenses inutiles. Si vous n’avez pas besoin de fonctionnalités avancées, envisagez des options moins coûteuses et des outils open source.

Facteur de la fréquence d’utilisation. Préférez les options de calcul élastique pour les outils d’orchestration afin de minimiser les coûts d’utilisation parce qu’elles sont toujours actives. Évitez l'informatique sans serveur pour les opérations à temps plein, car elle peut entraîner une augmentation des coûts.

Ne payez pas pour les niveaux supérieurs sans utiliser leur capacité totale. Assurez-vous que votre niveau choisi s’aligne sur vos modèles d’utilisation de production pour optimiser les dépenses. Utilisez la tarification standard pour les tâches régulières et la tarification spot pour une formation hautement interromptable. Pour réduire les coûts, utilisez le calcul basé sur GPU uniquement pour les fonctions de charge de travail IA.

Testez de manière approfondie et évaluez votre entraînement et votre ajustement pour trouver le SKU qui optimise au mieux les performances et les coûts.
Utilisez ce que vous payez. Réduire les déchets. Surveillez étroitement les métriques d’utilisation. Les charges de travail IA peuvent être coûteuses, et les coûts peuvent augmenter rapidement si les ressources ne sont pas arrêtées, réduites ou libérées lorsqu’elles ne sont pas utilisées.

Optimisez le système pour l’écriture une seule fois, lisez plusieurs pour éviter les dépenses excessives sur le stockage des données. Les données d’apprentissage ne nécessitent pas la réactivité instantanée d’une base de données de production.

Le test de contrainte d’un point de terminaison d’inférence du service Azure OpenAI peut être coûteux, car chaque appel entraîne des frais. Pour réduire les coûts, utilisez plutôt les PTUs inutilisés du service OpenAI dans un environnement de test ou simulez le point de terminaison d'inférence.

Les tâches telles que l’analyse exploratoire des données (EDA), l’entraînement du modèle et le réglage précis ne sont généralement pas exécutés à temps plein. Pour ces tâches, préférez une plateforme qui peut être arrêtée lorsqu’elle n’est pas utilisée. Par exemple, les travaux EDA sont généralement interactifs, de sorte que les utilisateurs doivent être en mesure de démarrer des machines virtuelles et de les arrêter au fur et à mesure qu’ils exécutent des travaux.

Attribuez des responsabilités de coûts aux équipes opérationnelles. Ces équipes doivent s’assurer que les coûts restent dans les paramètres attendus en surveillent et gèrent activement l’utilisation des ressources.
Optimiser les coûts opérationnels. La formation en ligne peut être coûteuse en raison de ses exigences de fréquence. L’automatisation de ce processus permet de maintenir la cohérence et de réduire le coût de l’erreur humaine. En outre, l’utilisation de données légèrement plus anciennes pour l’apprentissage et le retard des mises à jour dans la mesure du possible peut réduire davantage les dépenses sans affecter considérablement la précision du modèle.

Pour la formation hors connexion, évaluez si des ressources moins coûteuses peuvent être utilisées, telles que du matériel hors connexion.

En général, supprimez les données des magasins de fonctionnalités pour réduire les coûts d’encombrement et de stockage des fonctionnalités.

Compromis : Optimisation des coûts et efficacité des performances. Équilibrer les coûts et les performances dans la gestion des bases de données implique des compromis. Une conception d’index efficace accélère les requêtes, mais peut augmenter les coûts en raison de la gestion des métadonnées et de la taille de l’index. De même, le partitionnement de grandes tables peut améliorer les performances des requêtes et réduire la charge de stockage, mais cela entraîne des coûts supplémentaires. À l’inverse, les techniques qui évitent l’indexation excessive peuvent réduire les coûts, mais peuvent affecter les performances si elles ne sont pas gérées correctement.

compromis : Optimisation des coûts et excellence opérationnelle. Il existe des compromis à prendre en compte lorsque vous décidez quelles sont les deux approches principales à utiliser pour l’entraînement de modèle. La formation dans l’environnement de développement avec des données de production complètes peut réduire les coûts de calcul, car le modèle n’est formé qu’une seule fois et seul l’artefact est promu. Toutefois, cette approche nécessite des mesures de sécurité strictes pour la gestion des données de production dans des environnements inférieurs, ce qui peut être complexe et gourmand en ressources. À l’inverse, l’apprentissage du modèle dans chaque environnement améliore la stabilité et la fiabilité en raison d’une révision et d’un test de code approfondis, mais ce modèle augmente les coûts de calcul, car les exécutions d’entraînement se produisent plusieurs fois.

Excellence opérationnelle

L’objectif principal de l’excellence opérationnelle est de fournir efficacement des capacités tout au long du cycle de vie du développement. Atteindre cet objectif consiste à établir des processus reproductibles qui prennent en charge la méthodologie de conception de l’expérimentation et produisent des résultats pour améliorer les performances du modèle. L’excellence opérationnelle consiste également à maintenir la précision des modèles au fil du temps, à mettre en œuvre des pratiques de surveillance et de gouvernance efficaces pour réduire les risques et développer des processus de gestion des changements pour s’adapter à la dérive du modèle.

Même si tous les principes d'excellence opérationnelle s'appliquent aux charges de travail d'IA, priorisez l'automatisation et la surveillance comme vos stratégies opérationnelles fondamentales.

Principe de conception À propos de l’installation
Encouragez un état d’esprit continu d’apprentissage et d’expérimentation tout au long du cycle de vie du développement d’applications, de la gestion des données et de la gestion des modèles IA. Les opérations de charge de travail doivent s’appuyer sur des méthodologies éprouvées telles que DevOps, DataOps, MLOps et GenAIOps.

La collaboration précoce entre les opérations, le développement d’applications et les équipes de données est essentielle pour établir une compréhension mutuelle des performances acceptables du modèle. Les équipes d’exploitation fournissent des signaux de qualité et des alertes actionnables. Les équipes d’application et de données permettent de diagnostiquer et de résoudre efficacement les problèmes.
Choisissez des technologies qui réduisent le fardeau opérationnel. Lorsque vous choisissez des solutions de plateforme, préférez la plateforme en tant que service (PaaS) aux options auto-hébergées pour simplifier la conception, automatiser l’orchestration des flux de travail et faciliter les opérations quotidiennes.
Créez un système de supervision automatisé qui prend en charge les fonctionnalités d’alerte, notamment la journalisation et l’auditabilité. Étant donné la nature non déterministe de l’IA, il est important d’établir des mesures de qualité au début du cycle de vie. Collaborez avec les scientifiques des données pour définir des métriques de qualité. Visualisez des insights continus dans des tableaux de bord complets.

Suivez les expériences à l’aide d’outils qui peuvent capturer des détails tels que les versions de code, les environnements, les paramètres, les exécutions et les résultats.

Implémentez des alertes actionnables qui fournissent suffisamment d’informations pour permettre aux opérateurs de répondre rapidement.
Automatisez la détection et l’atténuation de la dégradation du modèle. Utilisez des tests automatisés pour évaluer la dérive au fil du temps. Assurez-vous que votre système de surveillance envoie des alertes lorsque les réponses commencent à dévier des résultats attendus et commencent à le faire régulièrement. Utilisez des outils qui peuvent détecter et mettre à jour automatiquement de nouveaux modèles.

Si nécessaire, adaptez-vous aux nouveaux cas d’usage en ajustant la logique d’apprentissage des données et du modèle.
Implémentez des déploiements sécurisés. Choisissez entre les déploiements côte à côte ou les mises à jour sur place pour réduire les temps d’arrêt. Implémentez des tests approfondis avant le déploiement pour vous assurer que le modèle est correctement configuré et répond aux cibles, aux attentes des utilisateurs et aux normes de qualité. Planifiez toujours les opérations d’urgence, quelle que soit la stratégie de déploiement.
Évaluez en permanence l’expérience utilisateur en production. Permettre aux utilisateurs de charge de travail de fournir des commentaires sur leur expérience. Obtenez le consentement pour partager une partie ou toutes leurs conversations dans un journal associé pour la résolution des problèmes. Considérez la quantité d’interaction utilisateur viable, conforme, sécurisée et utile pour capturer et utiliser les données avec diligence pour évaluer les performances de votre charge de travail avec des interactions utilisateur réelles.

Les domaines de conception suivants fournissent des détails sur les principes et considérations précédents :

Efficacité des performances

L’objectif de l’évaluation des performances du modèle IA est de déterminer comment un modèle accomplit efficacement ses tâches prévues. Pour atteindre cet objectif, vous devez évaluer différentes métriques, telles que la précision, la précision et l’équité. En outre, les performances des composants de plateforme et d’application qui prennent en charge le modèle sont cruciales.

Les performances du modèle sont également influencées par l’efficacité des opérations telles que le suivi des expériences et le traitement des données. L’application des principes d’efficacité des performances permet de mesurer les performances par rapport à une norme de qualité acceptable. Cette comparaison est essentielle pour détecter la dégradation ou la décomposition. Pour maintenir la charge de travail, y compris les composants IA, vous avez besoin de processus automatisés pour la surveillance et l’évaluation continues.

Principe de conception À propos de l’installation
Établissez des benchmarks de performances. Effectuez des tests de performances rigoureux dans différents domaines architecturaux et définissez des cibles acceptables. Cette évaluation continue doit faire partie de vos processus opérationnels, et non pas un test unique.

L’évaluation s’applique aux performances de prédiction. Commencez par une base de référence pour comprendre les performances initiales du modèle et réévaluer en permanence les performances pour vous assurer qu’elle répond aux attentes.
Évaluez les besoins en ressources pour répondre aux objectifs de performances. Comprendre les caractéristiques de charge pour choisir la plateforme appropriée et les ressources de taille appropriée. Prendre en compte ces données pour la planification de la capacité à fonctionner à grande échelle.

Par exemple, utilisez des tests de charge pour déterminer la plateforme de calcul et la référence SKU optimales. Le calcul optimisé pour GPU hautes-performances est souvent nécessaire pour l'entraînement des modèles et le réglage précis, mais les SKU à usage général conviennent aux outils d'orchestration.

De même, choisissez une plateforme de données qui gère efficacement l’ingestion des données, gère les écritures simultanées et conserve les performances d’écriture individuelles sans dégradation.

Différents serveurs d’inférence ont des caractéristiques de performances variables. Ces caractéristiques affectent les performances du modèle au moment de l’exécution. Sélectionnez un serveur qui répond aux attentes de référence.
Collectez et analysez les métriques de performances et identifiez les goulots d’étranglement.

Évaluez les données de télémétrie à partir du pipeline de données pour vous assurer que les cibles de performances pour le débit et les opérations de lecture/écriture sont respectées.

Pour l’index de recherche, tenez compte des métriques telles que la latence des requêtes, le débit et la précision des résultats. À mesure que le volume de données augmente, les taux d’erreur ne doivent pas augmenter.

Analysez les données de télémétrie à partir de composants de code, comme l’orchestrateur, qui collecte des données à partir d’appels de service. L’analyse de ces données peut vous aider à comprendre le temps consacré au traitement local par rapport aux appels réseau et à identifier la latence potentielle dans d’autres composants.

Évaluez l’expérience de l’interface utilisateur en utilisant des métriques d’engagement pour déterminer si les utilisateurs sont engagés positivement ou frustrés. L’augmentation du temps sur une page peut indiquer l’une ou l’autre. Les fonctionnalités modales, telles que les réponses vocales ou vidéo, peuvent entraîner une latence importante, ce qui entraîne des temps de réponse plus longs.
Améliorez continuellement les performances des benchmarks à l’aide de mesures de qualité à partir de la production. Implémentez la collecte et l’analyse automatisées des métriques de performances, des alertes et du réentraînement des modèles pour maintenir l’efficacité du modèle.

Compromis (Trade-off). Lorsque vous envisagez des fonctionnalités de plateforme, vous devez équilibrer les coûts et les performances. Par exemple, les GPU sont coûteux. Surveillez donc en permanence l'utilisation des ressources, et ajustez leur taille en fonction des besoins. Après ajustements, testez l’utilisation des ressources pour garantir un équilibre entre le coût des ressources de plateforme et leurs opérations et les performances attendues, comme indiqué par la base de référence. Pour connaître les stratégies d’optimisation des coûts, consultez Recommandations pour optimiser les coûts des composants.

Les domaines de conception suivants fournissent des détails sur les principes et considérations précédents :

Étape suivante