Actualité Uber présente Ludwig, boite à outil de Deep learning sans programmation

Pour approfondir le sujet

  • Plus d'actualités sur
  • Uber

Sortie de la version release candidate de TensorFlow 1.3

La version Tensorflow 1.3 RC vient d'être diffusée. Voici un petit récapitulatif des différents changements apportés par cette nouvelle version de la librairie de...

TensorFlow 1.4 vient de sortir

La version 1.4 de TensorFlow vient de sortir. Cette nouvelle version officielle, dont la version Release Candidate est sorte il y a un peu...

TensorFlow sort en version 1.5

La version 1.5 de TensorFlow est sortie le 26 janvier 2018. Cette nouvelle version permet notamment un nouveau mode de développement simplifié, en activant...

Intel vous offre un Intel Neural Compute Stick 2

La semaine dernière, Intel nous avait permis de vous dévoiler en avant première l'Intel Neural Compute Stick 2, le stick USB capable d'exploiter des...

Uber présente Ludwig, boite à outil de Deep learning sans programmation

La société Uber utilise de manière intensive le Deep Learning, que ce soit pour des tâches afférentes à la conduite, la navigation, ou tout simplement au support client. Le laboratoire Uber AI a annoncé le 11 février la mise à disposition d’une boite à outil de Deep Learning open source destinée à démocratiser l’intelligence artificielle : Ludwig.

L’une des particularités de Ludwig est qu’elle est basée sur TensorFlow et scikit-learn. La société ne cherche donc pas à proposer son alternative aux solutions existantes, mais à s’appuyer sur elles. Enfin, ce qui rend particulièrement intéressante Ludwig est la promesse faite par Uber :

Ludwig est une boite à outil qui permet d’entrainer et tester des modèles de Deep learning sans nécessité de rédiger du code informatique.

Si cette démarche de rendre le Deep learning accessible s’inscrit dans une tendance générale, la promesse va plus loin que celle de Google avec Auto ML, qui présente son outil comme “une suite de produits de machine learning qui permet aux développeurs peu expérimentés dans ce domaine d’entraîner des modèles de haute qualité répondant aux besoins spécifiques de leur entreprise”.

L’entraînement d’un modèle est on ne peut plus simple et nécessite deux fichiers : un fichier csv contenant le jeu de données et un fichier YAML contenant la définition du modèle, c’est à dire la description de chaque colonne du fichier CSV.

L’invocation de Ludwig est donc extrêmement simple:

Entraînement
Il suffit de renseigner le fichier csv et le fichier de définiton

ludwig train
--data_csv fichier.csv
--model_definition definition.yaml

Prédiction
Prédiction en précisant le fichier csv et le modèle

ludwig predict
--data_csv data.csv
--model path_to_model

Visualisation
Il est possible de lancer des visualisations des données.

ludwig visualize
--visualization learning_curves
--training_statistics train_statistics.json

ludwig_screen

Mini-tutoriel

Installation sous Debian:
(pré-requis, probablement déjà présent sur votre poste)

[cc]apt-get install python3 python3-pip python3-dev gcc
pip3 install wheel[/cc]

Installation de ludwig :
[cc]pip3 install ludwig
python3 -m spacy download en
python3 -m spacy download fr
[/cc]

Nous venons donc d’installer ludwig et l’ensemble de ses dépendances, puis les modèles de langage anglais et français de spaCy, célèbre librairie de TAL.

Préparation de notre dataset:
Nous allons utiliser un jeu de données déjà existant, trouvé sur Github. Il s’agit du dataset utilisé pour le tutoriel “Movie plots by genre” présenté par Lev Konstantinovskiy lors du PyData Berlin du 20 mai 2016.

Nous téléchargeons le dataset :
[cc lang=”python”]wget https://github.com/RaRe-Technologies/movie-plots-by-genre/blob/master/data/tagged_plots_movielens.csv[/cc]
En tappant “head tagged_plots_movielens.csv”, nous nous rendons compte que le dataset est un simple fichier csv contenant 4 colonnees : un numéro de ligne, un id, le plot (résumé du film) et son genre. Les deux premières colonnes étant inutiles, nous allons créer un nouveau fichier reprenant le contenu du précédent, à l’exception de ces colonnes :

[cc]sed ‘s/\([^,]*\),\([^,]*\),\(.*\)/\3/’ tagged_plots_movielens.csv>dataset.csv[/cc]

Nous allons maintenant créer notre fichier model_definition.yml de définition au format yaml :

[cc lang=”yaml”]

input_features:

name: plot
type: sequence
encoder: parallel_cnn
level: word

output_features:

name: tag
type: category[/cc]

 
Entraînement du modèle:
Nous entraînons notre modèle et enregistrons le résultat dans le dossier plot_genre_result. Un dossier “experiment_run_0” sera alors créé (et un nouveau, dont le nom sera incrémenté, sera créé à chaque exécution). Le modèle sera stocké dans le sous-dossier “model” de ce dossier.

[cc]ludwig train –data_csv dataset.csv –model_definition_file model_definition.yaml –output_directory plot_genre_result[/cc]

Une fois l’entraînement réalisé, il n’y a plus qu’à soumettre des données au modèle pour réaliser une prédiction. Nous créons un fichier a_predire.csv contenant les synopsis des films dont nous souhaitons prédire le genre :

[cc]

plot,tag
An introverted young man has no friends. In order to be noticed by a gang of thugs. This is only the beginning of his descent into hell. He will become a drug dealer and will commit ever greater crimes. He will spend 10 years in jail[/cc]

 
Lançons désormais la prédiction :
Le modèle étant entraîné, nous allons désormais pouvoir prédire le genre de films à partir de leur synopsis. Notons que dans notre exemple, nous demandons à Ludwig de ne prédire qu’un seul échantillon, mais si vous souhaitez effectuer plusieurs prédictions, il suffit d’en mettre plusieurs dans le fichier csv a_predire.csv.
[cc]ludwig predict –data_csv a_predire.csv -m plot_genre_result/experiment_run_0/model –output_directory prediction[/cc]

Un dossier “prediction” sera alors généré et contiendra différents fichiers présentant la prédiction ainsi que les probabilités. La prédiction se trouve dans le fichier “tag_predictions.csv”.

Ludwig ne se limite pas à la classification de texte, sa documentation présente d’ailleurs de nombreux cas d’usages et fichiers de définition de modèles associés : Détection d’entités nommées, NLU (compréhension du langage), traduction, conversation, analyse des sentiments, classification d’images, labellisation d’images, réponse à des questions sur des images, prévision de séries temporelles, entre autres.

D’autre part, il est extensible, et il est aisé d’ajouter de nouveaux encodeurs, décodeurs ou types de données. Enfin, Ludwig est accessible par API et peut donc être exploité directement depuis un script python.

Accéder au site de Ludwig

ActuIA

Partager l'article

Industrie 4.0 : Partenariat entre Renault et Google Cloud sur la digitalisation des usines et de la chaîne logistique

Aller plus loin dans l'industrie 4.0 grâce au machine learning et à l'intelligence artificielle, c'est l'objectif du Groupe Renault. Pour ce faire, le constructeur...

Ethique de l’intelligence artificielle : Participez à la consultation de l’UNESCO pour l’élaboration d’une recommandation

Dans le cadre de la décision de la Conférence générale de l'UNESCO lors de sa 40e session en novembre 2019, l'UNESCO s'est engagée dans...

L’OTESIA lance ses 4 premiers projets IA dans la santé, la prévention du cyber-harcèlement, l’éducation

En novembre dernier était lancé l’Observatoire des impacts Technologiques Economiques et Sociétaux de l’Intelligence Artificielle (OTESIA) dans les Alpes-Maritimes. Une première en France et...

Replay Dataquitaine : Processus de Décision Markovien et Apprentissage par Renforcement

Dataquitaine propose en replay son Atelier-Webinaire Data Science, organisé par Digital Aquitaine, le 30 juin 2020. Ce séminaire était dédié à la thématique "Processus...