Table of Contents
Le défi des données dans le domaine de l'ingénierie autonome des véhicules
Une seule voiture autoconduite peut générer jusqu'à 1 téraoctet de données brutes par heure de fonctionnement, combinant des entrées de caméras haute résolution, des réseaux LiDAR, des systèmes radar, des capteurs ultrasoniques et de la télémétrie de véhicules. Pour les équipes de R-D de génie travaillant sur des systèmes de conduite autonomes, la capacité de traiter, d'analyser et de tirer des informations à partir de ces données à l'échelle n'est pas seulement un avantage technique, c'est une exigence fondamentale pour le progrès.
A la différence des cadres traditionnels de traitement par lots, le moteur de traitement en mémoire de Spark offre la vitesse nécessaire au développement d'algorithmes itératifs, à la validation de simulation à grande échelle et à l'analyse de données en temps quasi réel. Cet article examine le rôle de Spark dans la R-D autonome des véhicules, explore son architecture technique pour la manipulation des données des capteurs et décrit les avantages pratiques et les défis auxquels les équipes d'ingénierie sont confrontées lors de l'intégration de Spark dans leurs flux de travail.
Comprendre Apache Spark dans le contexte des systèmes autonomes
Calculs distribués pour les données de capteur
Pour l'ingénierie autonome des véhicules, la valeur de Spark réside dans sa capacité à partitionner des ensembles de données massifs – comme des millions de nuages de points LiDAR ou des heures de vidéo-film – à travers plusieurs nœuds et à les traiter en parallèle. Le modèle de calcul en mémoire réduit les goulots d'étranglement d'entrée/sortie du disque, permettant aux équipes de R & D d' itérer sur des algorithmes et des transformations de données à des vitesses qui seraient peu pratiques avec des systèmes à base de disque comme Hadoop MapReduce.
Spark prend en charge plusieurs langages de programmation, notamment Python (PySpark), Scala, Java et R, ce qui permet aux équipes d'ingénierie de choisir leur environnement de développement. Les API DataFrame et Dataset fournissent des abstractions de haut niveau pour le traitement structuré des données, qui se connectent naturellement aux journaux de capteurs structurés et semi-structurés générés par des véhicules autonomes.
Pourquoi la stimulation est importante pour la R-D AV
Chaque phase impose des exigences différentes à l'infrastructure de traitement. Pendant l'ingestion, les équipes doivent gérer des flux de données à haute vitesse provenant de parcs d'essais opérant dans plusieurs villes. Pendant l'entraînement, elles doivent traiter des ensembles de données historiques qui peuvent s'étendre sur les petaoctets. Pendant la validation, elles exécutent des milliers de scénarios de simulation pour vérifier le comportement du système. L'architecture de Spark soutient les trois phases, ce qui en fait un choix pratique pour les organisations qui veulent une plate-forme unique pour diverses charges de travail.
Par rapport à des outils spécialisés comme les cadres d'apprentissage approfondi accélérés par GPU, Spark n'est pas conçu pour former les réseaux neuronaux à partir de zéro. Cependant, il excelle dans la préparation des données, l'ingénierie des fonctionnalités et les tâches d'évaluation à grande échelle qui consomment la majorité du temps d'une équipe de R-D. En accélérant ces processus en amont et en aval, Spark permet aux ingénieurs de se concentrer sur l'architecture de modèles et la conception de systèmes plutôt que sur la plomberie des données.
Données sur les véhicules autonomes : sources, volume et exigences de traitement
Modalités des capteurs et caractéristiques des données
Les suites de capteurs de véhicules autonomes modernes comprennent généralement:
- LiDAR: Génére des nuages de point 3D à 10-20 Hz, produisant des millions de points par seconde avec des coordonnées spatiales et des valeurs de réflectivité.
- Cameras:[ Plusieurs caméras capturent des vidéos haute résolution à 30-60 fps, chaque cadre contenant des millions de pixels et de canaux de couleur.
- Radar: Fournit des données de détection et de vitesse d'objets à des distances allant jusqu'à 200 mètres, fonctionnant de façon fiable dans des conditions météorologiques défavorables.
- Sondes ultrasoniques:[ Utilisées pour la détection d'obstacles à portée rapprochée pendant le stationnement et les manœuvres à basse vitesse.
- GPS-IMU: Fournit des données sur la position, l'orientation et la vitesse du véhicule à 100-200 Hz pour la localisation et l'odométrie.
- Le véhicule CAN bus:[ signale l'angle de braquage, la position des gaz, la pression de freinage et d'autres signaux de commande à intervalles de sous-milisecondes.
Chaque type de capteur produit des données avec des caractéristiques de structure, de fréquence et de volume différentes. Les données LiDAR sont non structurées et rares, les données de caméra sont denses et haute dimension, les données radar sont de résolution inférieure mais inclut des informations de vitesse Doppler.
Échelle des données dans les flottes AV de production
Pour les équipes d'ingénierie exploitant des parcs de 50 à 100 véhicules, le taux de production de données peut dépasser 50 téraoctets par jour. Le stockage, l'indexation et la requête de ces données pour le développement d'algorithmes nécessitent des systèmes de stockage distribués comme les stockages HDFS ou des objets cloud combinés à une couche de traitement qui peut scanner les petaoctets de données efficacement.
Les équipes de R-D utilisent généralement Spark pour des tâches telles que l'extraction d'exemples de formation étiquetés à partir de registres de capteurs bruts, l'établissement de statistiques sur les grands ensembles de données pour la validation et l'exécution de balayages de paramètres à grande échelle pendant le réglage des algorithmes.
L'architecture de Spark pour les pipelines de traitement de données AV
Ingestion des données et ETL
La première étape de toute pipeline de données AV est l'extraction, la transformation et le chargement des données brutes de capteurs dans un format approprié pour l'analyse. DataFrames de Spark peut lire les données de Parquet, Avro, JSON et d'autres formats communs directement, permettant aux équipes de traiter les journaux bruts sans étapes de conversion intermédiaires.
Un pipeline ETL typique pour les données LiDAR pourrait comprendre la lecture de fichiers cloud point bruts, le filtrage des points de sol, des fonctionnalités informatiques comme les normales de surface et les statistiques d'intensité, et l'écriture des données transformées comme fichiers Parquet pour les tâches d'apprentissage machine en aval. Le modèle d'évaluation paresseux de Spark signifie que ces transformations sont compilées en un plan d'exécution optimisé, avec l'optimiseur de requête sélectionnant des stratégies de jointure efficaces et prédiquer automatiquement les pushdowns.
Pour les données de caméra, les équipes d'ingénierie doivent souvent extraire des images à des heures précises, appliquer des corrections géométriques et générer des métadonnées d'image, y compris des paramètres de caméra et poser des informations. Le support intégré de Spark pour les fonctions définies par l'utilisateur permet aux équipes d'intégrer OpenCV ou des bibliothèques de traitement d'image personnalisées dans l'API DataFrame, bien qu'une gestion de mémoire soigneuse soit nécessaire pour éviter les goulots d'étranglement côté conducteur lors du traitement des grandes charges utiles d'image.
Traitement des données en temps réel avec Spark Streaming
Bien que la R&D AV se concentre en grande partie sur l'analyse hors ligne des données enregistrées, les capacités de traitement en temps réel sont essentielles pour certains cas d'utilisation, en particulier lors des essais et de la validation des véhicules.
Dans le contexte de la R-D autonome des véhicules, les cas d'utilisation en continu comprennent :
- Détection d'anomalies en temps réel:[ Surveillance de la santé et de la qualité des données des capteurs pendant les essais, affichage des lectures de capteurs corrompues ou manquantes immédiatement.
- Analyse de télémétrie vive :[ Traitement des données sur l'état du véhicule, y compris la vitesse, l'accélération et les entrées de commande pour détecter les modes de conduite dangereux pendant le fonctionnement autonome.
- Filtration des données d'Edge-to-cloud: Sélection et téléchargement uniquement des segments de données les plus pertinents des véhicules vers le cloud pour une analyse plus approfondie, réduisant les besoins en bande passante et les coûts de stockage.
- Surveillance opérationnelle:[ Suivi des mesures de l'ensemble du parc, comme les milles parcourus par intervention, les désengagements des conducteurs et la couverture des scénarios en temps réel.
Pour les équipes d'ingénierie, la possibilité de traiter les données en continu et en continu avec la même base de code simplifie le développement et les tests. Une transformation écrite pour le traitement en continu peut être déployée dans un contexte de streaming avec des modifications minimales, permettant aux équipes de prototyper hors ligne puis de passer aux opérations en temps réel quand elles sont prêtes.
Intégration de l'apprentissage automatique pour les systèmes de conduite autonomes
Préparation des données pour les modèles de perception
La bibliothèque MLlib de Spark fournit des transformateurs de fonctionnalités pour l'échelle, la normalisation et l'encodage des variables catégoriques, mais la valeur réelle pour les équipes AV réside dans la capacité de Spark à préparer des données d'entraînement à l'échelle. Les ingénieurs utilisent Spark pour joindre les données de capteur avec des étiquettes de vérité au sol, générer des exemples d'entraînement grâce à des techniques de fenêtre coulissante et calculer des statistiques sur l'ensemble des ensembles de données pour la normalisation et le blanchiment.
Pour les modèles de détection d'objets, la préparation des données de formation consiste à extraire les régions d'intérêt des cadres de caméra, à calculer les coordonnées de la boîte de délimitation par rapport au système de coordonnées du véhicule et à aligner les étiquettes sur les différentes modalités des capteurs.
L'un des modèles courants de R-D AV consiste à utiliser Spark pour la sélection des données, en choisissant des exemples à inclure dans un ensemble de formation basé sur la diversité, la difficulté ou la couverture de scénarios. En calculant l'intégration de vecteurs ou de statistiques de caractéristiques dans l'ensemble de l'ensemble des données, les équipes peuvent identifier des exemples redondants, détecter des erreurs d'étiquette et équilibrer les distributions de classes avant le début de la formation.
Évaluation et validation du modèle à grande échelle
Après avoir formé un modèle de perception ou de planification, les équipes d'ingénierie doivent évaluer leurs performances sur des millions de miles de données de conduite. Spark fournit l'infrastructure de calcul pour exécuter l'inférence sur de grands ensembles de données en parallèle, calculant des mesures comme la précision, rappel, faux taux positif, et la précision moyenne sur l'ensemble des tests.
La capacité de Spark à exécuter des fonctions définies par l'utilisateur à l'échelle permet aux équipes d'appliquer des mesures d'évaluation personnalisées adaptées à leurs besoins spécifiques. Par exemple, une équipe d'ingénieurs peut calculer la répartition des distances de détection d'objets en fonction des conditions météorologiques, de l'éclairage et de l'heure de la journée, en identifiant les lacunes de performance à combler par des données de formation supplémentaires ou des améliorations d'algorithmes.
Balayage des paramètres et optimisation de l'hyperparamètre
Les systèmes de conduite autonomes contiennent des dizaines de paramètres qui doivent être adaptés pour une performance optimale : paramètres d'étalonnage du capteur, gains de suivi des filtres, poids des coûts de planification et gains de contrôle, entre autres. Trouver la bonne combinaison de paramètres nécessite des expériences à travers plusieurs dimensions, chaque expérience nécessitant le traitement d'une quantité importante de données de test.
Les équipes d'ingénierie utilisent des outils comme le MLlib de Spark pour le réglage hyperparamétrique ou s'intègrent à des cadres d'optimisation externes qui soumettent des emplois de Spark pour chaque évaluation. L'avantage clé est que l'infrastructure de traitement des données s'échelle avec le nombre d'expériences parallèles, permettant aux équipes d'explorer des espaces de paramètres plus grands en moins d'heure de l'horloge.
Avantages de l'étincelle pour les équipes autonomes de R-D des véhicules
Vélocité du développement
L'avantage le plus important que Spark offre aux équipes de R & D AV est la vitesse de développement. Les tâches de traitement des données qui prendraient des heures ou des jours sur les systèmes monomachines se complètent en quelques minutes sur les grappes Spark. Cette accélération compresse la boucle de rétroaction entre la formation d'hypothèses et la validation expérimentale.
Les shells interactifs de Spark (PySpark, park-shell) permettent aux ingénieurs d'explorer les données de façon itérative, d'inspecter les résultats intermédiaires et de régler les transformations à la volée. Cette capacité exploratoire est particulièrement utile lorsque l'on travaille avec de nouvelles configurations de capteurs ou de nouveaux environnements de conduite, où les transformations de données appropriées ne sont pas connues à l'avance.
Rentabilité grâce à l'optimisation des ressources
Pendant les périodes de pointe, par exemple, lors du traitement d'un nouveau lot de données d'une campagne d'essai multivéhicules, les équipes peuvent faire tourner de grands groupes de données qui traitent les données en heures. Pendant les périodes plus calmes, les groupes peuvent être réduits ou complètement coupés, évitant les coûts fixes associés à l'infrastructure sur site. Les cas de localisation et les MV préemptables réduisent encore les coûts des charges de travail de lots tolérant les erreurs.
En conservant les données en mémoire entre les étapes de traitement, les équipes évitent d'écrire des résultats intermédiaires sur disque, de réduire les coûts de stockage et d'améliorer les performances. Pour les organisations qui traitent chaque année des petaoctets de données de capteurs, ces gains d'efficacité se traduisent par des économies opérationnelles importantes.
Intégration aux écosystèmes de données existants
La plupart des organisations de véhicules autonomes investissent déjà dans l'infrastructure de données, y compris les magasins d'objets, les data lakehouses et les outils d'orchestration de flux de travail. Spark s'intègre nativement à ces systèmes, en lisant S3, ADLS ou GCS, en écrivant aux tables Delta Lake ou Iceberg, et en étant orchestré par des outils comme Apache Airflow, Prefect ou Dagster.
Pour les équipes utilisant Databricks, la plateforme Spark gérée fournit des capacités supplémentaires, y compris des carnets de travail collaboratifs, la gestion automatisée des grappes et l'intégration avec MLflow pour le suivi des expériences.
Défis du déploiement de l'étincelle pour les charges de travail AV
Sérialisation des données et dépassements de performance
L'un des défis pratiques auxquels les équipes d'ingénierie rencontrent lorsqu'elles utilisent les données Spark for AV est le coût de la sérialisation des données. Les nuages de points LiDAR et les images de caméras sont généralement stockés dans des formats binaires optimisés pour la vitesse de lecture, mais l'environnement d'exécution JVM de Spark exige que les données soient désérialisées en objets Java ou Python pour le traitement.
Les équipes s'attaquent à ce défi par des techniques comme les UDF vectorisés (Pandas UDFs for PySpark), par le support binaire intégré de Spark, ou par le prétraitement de données binaires dans des formats de colonnes comme Parquet avant de lancer des tâches Spark. Pour les charges de travail lourdes d'images, certaines équipes précompilent des fonctionnalités ou intègrent des infrastructures d'apprentissage approfondi spécialisées, puis utilisent Spark uniquement pour les tâches d'analyse en aval, évitant ainsi le goulot de sérialisation pour les données brutes de pixel.
Limites de latence pour le contrôle en temps réel
Il est important de noter que Spark Streaming n'est pas adapté pour le contrôle en temps réel du véhicule. Le modèle de microbatch introduit des latences minimales de centaines de millisecondes, ce qui est trop lent pour les réactions critiques de sécurité comme l'évitement des obstacles ou le freinage d'urgence. Pour ces applications, les systèmes de contrôle du véhicule utilisent des processeurs embarqués spécialisés fonctionnant en temps réel.
Même pour les cas d'utilisation moins sensibles au temps, les caractéristiques de la latence de Spark Streaming doivent être gérées avec soin. Pour les applications de surveillance opérationnelle où 1-2 secondes de latence sont acceptables, Spark fonctionne bien. Les applications nécessitant une latence inférieure à 100 millisecondes devraient envisager des plateformes de streaming alternatives comme Apache Flink ou des moteurs de traitement de flux spécialisés conçus pour des charges de travail à faible latence.
Complexité de la gestion des grappes
Pour exécuter les grappes Spark à l'échelle, il faut disposer d'une expertise opérationnelle dans les systèmes distribués. Les paramètres de configuration pour l'attribution de mémoire, les partitions de shuffle et le calibrage de l'exécuteur doivent être ajustés pour chaque charge de travail afin d'atteindre des performances optimales.
Les équipes qui utilisent des services gérés doivent travailler dans les limites des ressources du fournisseur, des configurations de réseau et des politiques de sécurité. Pour les organisations qui ont des exigences strictes en matière de souveraineté des données ou celles qui opèrent dans des régions où la disponibilité des fournisseurs de cloud est limitée, les grappes autogérées peuvent être la seule option, nécessitant un investissement dans le personnel opérationnel dédié.
Orientations futures : Spark et l'évolution du traitement des données AV
L'informatique de bord et l'apprentissage fédéré
Les nouvelles architectures distribuent le traitement des données à travers les nœuds de bord du véhicule et les grappes de nuages régionales, Spark servant de couche de traitement unifiée. Dans ce modèle, les applications légères Spark fonctionnent sur du matériel de qualité véhicule pour effectuer le filtrage initial des données et l'extraction des fonctionnalités, tandis que les grappes plus grandes gèrent l'agrégation et la formation de modèles dans l'ensemble du parc.
Les techniques d'apprentissage fédérées qui forment des modèles à travers des sources de données distribuées sans centraliser les données brutes sont particulièrement pertinentes pour les applications AV où les contraintes de confidentialité et de bande passante sont préoccupantes. Le modèle de calcul distribué de Spark fournit une base pour les implémentations d'apprentissage fédérées, permettant aux équipes de pousser le code de formation modèle vers des sources de données plutôt que d'apporter des données à des grappes centralisées.
Spark 3.x et accélération du GPU
Les versions récentes de Spark ont permis d'accélérer l'accélération du GPU grâce à l'accélérateur RAPIDS pour Apache Spark et à la bibliothèque Spark Accelerator. Ces outils permettent aux ingénieurs de tirer parti du matériel GPU pour les opérations de traitement de données comme les jointures, les regroupements et le tri, en améliorant sensiblement les performances pour les charges de travail à forte intensité de calcul.
Le projet Hydrogen, une initiative visant à améliorer l'intégration de Spark avec les GPU et les cadres d'apprentissage profond, devrait permettre une intégration plus étroite entre les pipelines de données Spark et les bibliothèques populaires d'apprentissage profond comme PyTorch et TensorFlow. Cette intégration permettra aux équipes d'ingénierie de construire des pipelines de bout en bout qui traitent la préparation des données, la formation des modèles et l'évaluation au sein d'une seule application Spark, réduisant ainsi la complexité du déplacement des données entre les systèmes de traitement distincts.
Intégration de simulation en temps réel
La simulation est un élément essentiel de la R-D AV, permettant aux équipes de tester des systèmes dans des millions de scénarios qui seraient dangereux ou peu pratiques pour se reproduire dans le monde réel. Le rôle de Spark dans la simulation est double : premièrement, elle traite les sorties des simulations à grande échelle pour calculer les mesures agrégées et identifier les cas de bordure; deuxièmement, elle prépare les bibliothèques de scénarios et les modèles environnementaux utilisés pour conduire les simulations.
La tendance à la simulation en boucle fermée, où les systèmes de perception et de planification de l'AV interagissent avec un environnement simulé, génère des flux de données continus qui doivent être traités en temps quasi réel pour valider le comportement du système. Spark Streaming, combiné avec des cadres de simulation qui alimentent les données en pipelines Spark, permet aux équipes de mener des campagnes de simulation qui s'échelonnent sur des semaines ou des mois tout en surveillant les performances du système en continu.
Conclusion
Apache Spark s'est imposée comme un outil essentiel dans la boîte à outils autonome de R-D en génie automobile, fournissant l'infrastructure informatique distribuée nécessaire pour traiter les ensembles de données massives générés par les parcs de tests équipés de capteurs.
Les avantages pratiques pour les équipes d'ingénierie sont considérables : des cycles de développement plus rapides grâce au traitement parallèle, une rentabilité grâce à l'échelle élastique des ressources et une intégration avec les écosystèmes de données existants qui protègent les investissements antérieurs dans l'infrastructure.
Pour les organismes d'ingénierie qui construisent des systèmes de conduite autonomes, investir dans l'infrastructure de traitement des données basée sur Spark permet à leurs équipes de R-D d' itérer plus rapidement, de valider plus en profondeur et, en bout de ligne, de fournir des systèmes autonomes plus sûrs et plus capables.