Partager via


Principes de conception pour les charges de travail IA sur Azure

Cet article décrit les principes fondamentaux des charges de travail d’IA sur Azure avec un focus sur les aspects ia d’une architecture. Il est essentiel d’envisager collectivement tous les piliers de l’infrastructure Bien architected, y compris leurs compromis. Appliquez chaque pilier aux exigences fonctionnelles et non fonctionnelles de la charge de travail.

Fiabilité

Les charges de travail IA exécutées dans Azure doivent prendre en compte la plupart des mêmes exigences de fiabilité que d’autres classes 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 principalement traitées dans ce principe. Il est important de noter que les pratiques décrites ici sont en plus des meilleures pratiques de conception standard pour les applications cloud et doivent être intégrées en conséquence.

Passez en revue les principes de conception de 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 instance unique pour les composants critiques peut entraîner des problèmes importants. Pour éviter cela, générez la redondance dans tous les composants critiques. Utilisez des plateformes avec 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 de cloisonnement peut aider à isoler les défaillances, tandis que les mécanismes de nouvelle tentative et les disjoncteurs peuvent gérer des erreurs temporaires telles que des demandes de limitation.
É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 avoir la possibilité de basculer vers des systèmes de sauvegarde en cas de défaillances. Si un composant échoue, il a un impact sur la fiabilité de l’autre.

De même, les API de couche de service, étant 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 de modèle en veillant à ce que les mises à jour soient fréquentes et en temps voulu. Déterminez s’il faut utiliser des données récentes ou si des données légèrement plus anciennes sont suffisantes, en équilibrant la nécessité d’obtenir des informations à jour avec la pratique de la fréquence de mise à jour. La formation en ligne doit être automatisée en raison de ses exigences de fréquence et de fiabilité, tandis que la formation hors connexion peut être justifiée par le biais d’une analyse des coûts-avantages et effectuée à l’aide de ressources moins coûteuses.
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 ce qui concerne les 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. Par conséquent, les mesures de sécurité robustes doivent être utilisées à toutes les couches de l’architecture. Cela inclut 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, tandis que les mécanismes avancés de détection des menaces garantissent des réponses rapides aux menaces potentielles.

Les principes de sécurité sont fondamentaux pour les solutions IA, la protection de l’intégrité des données, l’intégrité de la conception et la confidentialité des utilisateurs. En tant que propriétaire de la charge de travail, vous êtes responsable de la création d’une confiance et de la protection des informations sensibles, ce qui garantit 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 à l’aide de code personnalisé, d’outils appropriés et de 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.

Assurez-vous qu’il existe une con mode tente ration approfondie 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. Utilisez au minimum 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 utilisés dans l’architecture. Évaluez où vous avez besoin de niveaux plus élevés de chiffrement et utilisez le double chiffrement, si nécessaire.

Vérifiez que tout le trafic utilise HTTPS pour le chiffrement. Choisissez les points d’arrêt TLS à chaque tronçon.

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. Cela 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 préserver 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é, ce qui autorise uniquement l’accès au contenu qu’ils sont autorisés à afficher.
Protégez l’intégrité de la conception via 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, crée une segmentation, par exemple lors de l’hébergement de votre serveur d’inférence dans AKS, le pool de nœuds doit être isolé d’autres API ou d’autres charges de travail.
Effectuez des tests de sécurité. Développez un plan de test détaillé qui inclut des tests pour détecter des comportements non éthiques 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 de pénétration 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. Fournir la sécurité la plus élevée a 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.

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

Optimisation des coûts

Le pilier Optimisation des coûts vise à maximiser l’investissement, pas nécessairement à réduire les coûts. Chaque choix architectural a des répercussions financières directes et indirectes. Comprendre les coûts lié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 avec 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 s’ils nécessitent des ressources de calcul importantes.
- Débit. Évaluez le débit attendu, qui a un impact sur 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. Il peut y avoir des coûts masqués dans les dépendances. Par exemple, lors du calcul du coût de l’index, 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 les fonctionnalités avancées ne sont pas requises, envisagez des options plus économiques 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 réduire les coûts d’utilisation, car ils sont toujours activés. Évitez le calcul serverless pour les opérations à temps plein en raison de l’escalade potentielle 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. Utilisez le calcul basé sur GPU uniquement pour les fonctions de charge de travail IA pour réduire les coûts.

Testez et testez en permanence votre formation et votre réglage précis pour trouver la référence SKU idéale qui équilibre 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, mises à l’échelle 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 n’ont pas besoin de 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 Azure OpenAI peut être coûteux en raison de frais pour chaque appel. Pour réduire les coûts, utilisez à la place des processeurs ptus inutilisés d’OpenAI dans un environnement de test ou simulez le point de terminaison d’inférence.

Les activités telles que l’analyse exploratoire des données (EDA), l’entraînement des modèles et le réglage précis ne sont généralement pas exécutés à temps plein, 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.

Définissez les capacités de compte des coûts sur les équipes d’exploitation, qui doivent garantir que les coûts restent dans les paramètres attendus en surveillant activement et en gérant l’utilisation des ressources.
Optimiser les coûts opérationnels. La formation en ligne peut être coûteuse en raison de sa nature fréquente. L’automatisation de ce processus permet de maintenir la cohérence et de réduire les coûts des erreurs humaines. 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 une 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. L’équilibrage des coûts avec les performances de la gestion des bases de données implique d’envisager 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 tables volumineuses peut améliorer les performances des requêtes et réduire la charge de stockage, mais entraîne des coûts supplémentaires. À l’inverse, les techniques qui évitent l’indexation excessive peuvent réduire les coûts, mais peuvent avoir un impact sur les performances si elles ne sont pas gérées correctement.

Compromis : Optimisation des coûts et excellence opérationnelle. Il existe des compromis dans les deux approches principales pour l’entraînement des modèles. La formation dans l’environnement de développement avec des données de production complètes peut réduire les coûts de calcul en formant le modèle une seule fois et en favorisant uniquement l’artefact, mais elle nécessite des mesures de sécurité strictes pour gérer les 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é grâce à une révision et un test de code approfondis, mais augmente les coûts de calcul en raison de plusieurs exécutions d’entraînement.

Excellence opérationnelle

L’objectif principal est de fournir efficacement des fonctionnalités tout au long du cycle de vie du développement. Cela implique d’é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 concerne également la précision soutenue des modèles au fil du temps, l’implémentation de pratiques de surveillance et de gouvernance efficaces pour réduire les risques et développer des processus de gestion des changements pour s’adapter aux dérives du modèle.

Bien que tous les principes d’excellence opérationnelle s’appliquent aux charges de travail d’IA, hiérarchiser l’automatisation et la surveillance en tant que 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, tandis que 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 PaaS aux options auto-hébergées pour simplifier la conception, automatiser l’orchestration des flux de travail et faciliter les opérations day-2.
Créez un système de surveillance automatisé qui prend en charge les fonctionnalités d’alerte, notamment la journalisation et l’audit. Étant donné la nature non déterministe de l’IA, les mesures de qualité sont importantes pour établir au début du cycle de vie. Collaborez avec les scientifiques des données pour définir des métriques de qualité, visualiser des insights continus dans des tableaux de bord complets.

Suivez les expériences par le biais 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 avec seulement suffisamment d’informations pour que les opérateurs répondent 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ériver 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.

Adapter aux nouveaux cas d’usage en ajustant le traitement des données et la logique d’entraînement du modèle, selon les besoins.
Pratiquez 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.
Évaluer en continu l’expérience utilisateur en production Permettre aux utilisateurs de la charge de travail de fournir des commentaires sur leur expérience et d’obtenir le consentement pour partager des parties ou toute leur conversation, un journal associé pour la résolution des problèmes. Réfléchissez à 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.

Ces domaines de conception 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. Cela implique l’évaluation de 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 de principes d’efficacité des performances permet de mesurer les performances par rapport à une barre de qualité acceptable, qui est essentielle à la détection de la dégradation ou de la dégradation. Pour maintenir la charge de travail, y compris les composants IA, les processus automatisés pour la surveillance et l’évaluation continues sont nécessaires.

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 seulement un test ponctuel.

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éévaluez en permanence pour vous assurer qu’elle répond aux attentes.
Évaluez les besoins de la ressource 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. Facteur de 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, tandis que les références 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, ce qui a un impact sur 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 les opérations de débit et de lecture/écriture sont respectées.
Pour l’index de recherche, tenez compte des métriques telles que la latence de requête, le débit, 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 des composants de code, tels que 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 à l’aide des métriques d’engagement pour déterminer si les utilisateurs sont positivement engagés 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 rencontrer une latence significative, 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. La collecte et l’analyse automatisées des métriques de performances, des alertes et du réentraînement des modèles sont nécessaires pour maintenir l’efficacité du modèle.

Compromis. Lorsque vous envisagez des fonctionnalités de plateforme, il est important d’équilibrer les coûts et les performances. Par exemple, les références SKU GPU sont coûteuses, ce qui permet de surveiller en permanence les ressources sous-utilisées et de taille appropriée 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 en fonction de 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.

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

Étape suivante