Comment créer une API REST Deep Learning avec Word2Vec et Flask

Les approches traditionnelles du développement sont difficiles à maintenir lors de l'utilisation de modèles complexes d'apprentissage automatique en production. Le développement sur un ordinateur portable ou une machine locale peut être lent à former le modèle d'apprentissage automatique pour les ingénieurs d'apprentissage en profondeur. En conséquence, nous utilisons généralement des machines cloud avec un matériel plus puissant pour former et exécuter nos modèles d'apprentissage automatique. C'est une bonne pratique car nous faisons abstraction du calcul complexe et faisons à la place des requêtes AJAX si nécessaire. Dans ce didacticiel, nous mettrons à la disposition d'autres services un modèle d'apprentissage approfondi pré-formé nommé Word2Vec en créant une API REST à partir de zéro.

Conditions préalables

  • Une instance de serveur Ubuntu 16.04 avec au moins 4 Go de RAM. À des fins de test et de développement, vous pouvez choisir une instance avec 4 Go de RAM
  • Comprendre comment utiliser le système d'exploitation Linux pour créer / naviguer / modifier des dossiers et des fichiers
  • Un sudoutilisateur

Que sont les incorporations de mots?

L'incorporation de mots est un développement récent dans le traitement du langage naturel et l'apprentissage en profondeur qui a révolutionné les deux domaines en raison de progrès rapides. Les incorporations de mots sont essentiellement des vecteurs qui correspondent chacun à un seul mot de sorte que les vecteurs signifient les mots. Cela peut être démontré par certains phénomènes tels que le vecteur de king - queen = boy - girl. Les vecteurs de mots sont utilisés pour tout construire, des moteurs de recommandation aux chat-bots qui comprennent réellement la langue anglaise.

Les intégrations de mots ne sont pas aléatoires; ils sont générés par la formation d'un réseau neuronal. Une récente mise en œuvre puissante d'intégration de mots provient de Google, nommée Word2Vec, qui est formée en prédisant les mots qui apparaissent à côté d'autres mots dans une langue. Par exemple, pour le mot "cat", le réseau neuronal prédira les mots "kitten"et "feline". Cette intuition des mots apparaissant les uns à côté des autres nous permet de les placer dans l'espace vectoriel.

Cependant, dans la pratique, nous avons tendance à utiliser les modèles pré-formés d'autres grandes sociétés telles que Google afin de prototyper rapidement et de simplifier les processus de déploiement. Dans ce didacticiel, nous allons télécharger et utiliser les incorporations de mots pré-formés Word2Vec de Google. Nous pouvons le faire en exécutant la commande suivante dans notre répertoire de travail.

wget http://magnitude.plasticity.ai/word2vec/GoogleNews-vectors-negative300.magnitude

Installation des packages Flask et Magnitude

Le modèle d'intégration de mots que nous avons téléchargé est dans un .magnitudeformat. Ce format nous permet d'interroger le modèle efficacement à l'aide de SQL, et est donc le format d'intégration optimal pour les serveurs de production. Puisque nous devons être en mesure de lire le .magnitudeformat, nous allons installer le pymagnitudepackage. Nous installerons également flaskpour servir plus tard les prévisions d'apprentissage en profondeur faites par le modèle.

pip3 install pymagnitude flask

Nous l'ajouterons également à notre outil de suivi des dépendances avec la commande suivante. Cela crée un fichier nommé requirements.txtet enregistre nos bibliothèques Python afin que nous puissions les réinstaller ultérieurement.

pip3 freeze > requirements.txt

Interrogation du modèle Word2Vec

Pour commencer, nous allons créer un fichier pour gérer l'ouverture et l'interrogation du mot incorporations.

touch model.py

Ensuite, nous ajouterons les lignes suivantes model.pypour importer la magnitude.

from pymagnitude import Magnitude
vectors = Magnitude('GoogleNews-vectors-negative300.magnitude')

Nous pouvons jouer avec le pymagnitudepackage et le modèle d'apprentissage en profondeur en utilisant la queryméthode, fournissant un argument pour un mot.

cat_vector = vectors.query('cat')
print(cat_vector)

Pour le cœur de notre API, nous allons définir une fonction pour renvoyer la différence de sens entre deux mots. C'est l'épine dorsale de la plupart des solutions d'apprentissage en profondeur pour des choses telles que les moteurs de recommandation (c'est-à-dire montrer du contenu avec des mots similaires).

Nous pouvons jouer avec cette fonction en utilisant les fonctions similarityet most_similar .

print(vectors.similarity("cat", "dog"))
print(vectors.most_similar("cat", topn=100))

Nous implémentons le calculateur de similarité comme suit. Cette méthode sera appelée par l'API Flask dans la section suivante. Notez que cette fonction renvoie une valeur réelle entre 0 et 1.

def similarity(word1, word2):
    return vectors.similarity(word1, word2)

Création d'une API REST

Nous allons créer notre serveur dans un fichier nommé service.pyavec le contenu suivant. Nous importons flasket requestgérons nos capacités de serveur et nous importons le similaritymoteur du module que nous avons écrit plus tôt.

from flask import Flask, request
from model import similarity

app = Flask(__name__)

@app.route("/", methods=['GET'])
def welcome():
    return "Welcome to our Machine Learning REST API!"

@app.route("/similarity", methods=['GET'])
def similarity_route():
    word1 = request.args.get("word1")
    word2 = request.args.get("word2")
    return str(similarity(word1, word2))

if __name__ == "__main__":
    app.run(port=8000, debug=True)

Notre serveur est plutôt simple, mais peut facilement être étendu en créant plus de routes à l'aide du @app.routedécorateur.

Passer des appels API

Nous pouvons exécuter notre serveur Flask en exécutant les commandes suivantes pour activer notre environnement virtuel, installer nos packages et exécuter son fichier Python associé.

source venv/bin/activate
pip3 install -r requirements.txt
python3 service.py

Notre serveur sera disponible sur localhost:8000. Nous pouvons interroger notre base de données sur localhost:8000/similarity?word1=cat&word2=doget afficher la réponse soit dans notre navigateur, soit via un autre client AJAX.



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.