
Les progrès des frameworks d'IA permettent aux développeurs de créer et de déployer des modèles de deep learning en quelques clics. Avec une interface ou une API basée sur les Tensorflow Estimators, on peut construire et servir des modèles sans écrire la moindre ligne de code de machine learning.
Photo de Adi Goldstein sur Unsplash
Il y a 70 ans, seule une poignée d'experts savait écrire des programmes informatiques, car la programmation exigeait une spécialisation théorique et technique très poussée. Au fil des années, des niveaux d'abstraction et d'encapsulation toujours plus élevés ont vu le jour, permettant à un public moins qualifié de créer des logiciels avec des outils très simples (voir Wix par exemple). Le même phénomène se produit aujourd'hui avec le machine learning — à un rythme bien plus rapide. Dans cet article, nous allons écrire un script simple qui génère un pipeline complet de machine learning.
Vraiment sans code ?
Cet article contient deux types de code. Le premier est une requête SQL qui sert à générer le jeu de données — cette partie pourrait être remplacée par des outils comme Google Cloud Dataprep. Le second repose sur des appels d'API via une bibliothèque cliente Python — toutes ces actions sont également accessibles depuis l'interface d'AI Platform. Quand je parle de sans code, je veux dire qu'à aucun moment vous n'aurez besoin d'importer TensorFlow ou une autre bibliothèque de ML.
Pour cette démo, j'utilise le jeu de données ouvert Chicago Taxi Trips dans Google BigQuery afin de prédire la durée d'un trajet en taxi à partir du lieu de prise en charge, de la destination et de l'heure de départ. Le modèle est entraîné et déployé via les services Google Cloud qui encapsulent Tensorflow.
L'intégralité de l'exemple de code est disponible dans ce dépôt GitHub.
Extraire les features avec BigQuery
À partir de l'EDA présentée dans ce notebook, j'ai rédigé une requête SQL pour générer un jeu de données d'entraînement :
https://gist.github.com/gidutz/86c701c621e48860c8ab135df56a8076
Dans le dépôt, vous verrez comment j'exécute la requête depuis un client Python et comment je l'exporte vers GCS.
Important ! Pour qu'AI Platform puisse construire un modèle à partir de ces données, la première colonne doit être la variable cible et l'export CSV ne doit pas comporter d'en-tête.
Lancer un job de tuning d'hyperparamètres et déployer
Une fois mon jeu de données prêt, avec quelques centaines de milliers de courses, je définis une architecture simple de réseau de neurones basée sur l'API TensorFlow Estimator, accompagnée d'un espace de paramètres à explorer. Cette spécification crée un réseau de neurones à 3 couches cachées qui résout une tâche de régression (la durée prévue du trajet). Elle lance 50 essais pour identifier les valeurs optimales du taux d'apprentissage, des facteurs de régularisation et du nombre maximal d'étapes.
https://gist.github.com/gidutz/5408bb93d0e6ab7fe9fc5cb4a82447cc
Avec cette spécification, je peux utiliser un client Python pour lancer un job d'entraînement :
https://gist.github.com/gidutz/f166148d84c4d4beb98bc13b831b6284
Je me sers du client API pour suivre l'exécution puis, une fois le job terminé, je déploie le modèle et je le teste.
https://gist.github.com/gidutz/70b126b2a7d561e9d5f7f232d8f754eb
Et voilà : un pipeline de machine learning entièrement déployé via de simples appels d'API.
Obtenir des prédictions
Pour obtenir des prédictions, je charge en mémoire une partie des enregistrements du jeu de test et je les envoie à la version déployée pour l'inférence :
https://gist.github.com/gidutz/e786c430c5ea767b1bec01bcee03a863
Envie d'autres articles ? Rendez-vous sur notre blog ou suivez Gad sur Twitter.
Merci à Adam Horowitz pour ses conseils techniques.