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

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Installation de McMyAdmin sur Ubuntu 14.10

Installation de McMyAdmin sur Ubuntu 14.10

McMyAdmin est un panneau de contrôle de serveur Minecraft utilisé pour administrer votre serveur. Bien que McMyAdmin soit gratuit, il existe plusieurs éditions, dont certaines sont pai

Configurer un serveur TeamTalk sous Linux

Configurer un serveur TeamTalk sous Linux

TeamTalk est un système de conférence qui permet aux utilisateurs davoir des conversations audio / vidéo de haute qualité, un chat textuel, de transférer des fichiers et de partager des écrans. Cest moi

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Vous utilisez un système différent? Introduction CyberPanel est lun des premiers panneaux de contrôle du marché à la fois open source et utilisant OpenLiteSpeed. Quest-ce que

Installer phpBB avec Apache sur Ubuntu 16.04

Installer phpBB avec Apache sur Ubuntu 16.04

PhpBB est un programme de babillard open source. Cet article vous montrera comment installer phpBB sur un serveur Web Apache sur Ubuntu 16.04. Cétait écrit

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Avoir un seul utilisateur, qui est root, peut être dangereux. Permet donc de résoudre ce problème. Vultr nous donne la liberté de faire ce que nous voulons avec nos utilisateurs et nos serveurs

Installer eSpeak sur CentOS 7

Installer eSpeak sur CentOS 7

Vous utilisez un système différent? ESpeak peut générer des fichiers audio de synthèse vocale (TTS). Ceux-ci peuvent être utiles pour de nombreuses raisons, telles que la création de votre propre Turin

Comment installer Thelia 2.3 sur CentOS 7

Comment installer Thelia 2.3 sur CentOS 7

Vous utilisez un système différent? Thelia est un outil open source pour la création de sites Web de commerce électronique et la gestion de contenu en ligne, écrit en PHP. Code source Thelia i

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Fuel CMS est un système de gestion de contenu basé sur CodeIgniter. Son code source est hébergé sur GitHub. Ce guide vous montrera comment

Comment configurer loptimisation TCP sous Linux

Comment configurer loptimisation TCP sous Linux

Introduction Vous avez des problèmes de connectivité lorsque des visiteurs dautres pays accèdent à votre site Web? Vous vous demandez pourquoi la vitesse de téléchargement de votre Foreig

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer Pip sur Linux

Comment installer Pip sur Linux

Pip est un outil de gestion des packages Python. Lutilisation dun gestionnaire de packages permet une gestion efficace de votre serveur. Dans ce tutoriel, je vais expliquer comment t

Comment déployer Google BBR sur CentOS 7

Comment déployer Google BBR sur CentOS 7

BBR (Bottleneck Bandwidth and RTT) est un nouvel algorithme de contrôle de congestion qui est contribué à la pile TCP du noyau Linux par Google. Avec BBR en place,

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Icinga 2 est un système de surveillance des ressources réseau open source largement utilisé, et Icinga Web 2 est linterface Web officielle pour Icinga 2. Dans ce didacticiel,

Comment installer YOURLS sur CentOS 7

Comment installer YOURLS sur CentOS 7

YOURLS (Your Own URL Shortener) est une application open source de raccourcissement dURL et danalyse de données. Dans cet article, nous couvrirons le processus dinstallation

Comment activer TLS 1.3 dans Apache sur Fedora 30

Comment activer TLS 1.3 dans Apache sur Fedora 30

Vous utilisez un système différent? TLS 1.3 est une version du protocole TLS (Transport Layer Security) qui a été publiée en 2018 en tant que norme proposée dans la RFC 8446

Configurer un Chroot sur Debian

Configurer un Chroot sur Debian

Cet article vous apprendra comment configurer une prison chroot sur Debian. Je suppose que vous utilisez Debian 7.x. Si vous utilisez Debian 6 ou 8, cela peut fonctionner, bu

Comment installer PiVPN sur Debian

Comment installer PiVPN sur Debian

Introduction Un moyen facile de configurer un serveur VPN sur Debian est avec PiVPN. PiVPN est un installateur et un wrapper pour OpenVPN. Il crée des commandes simples pour vous t

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Vous utilisez un système différent? Alfresco Community Edition est une version open source des services de contenu Alfresco. Il est écrit en Java et utilise PostgreSQL t

Configurer Nginx-RTMP sur CentOS 7

Configurer Nginx-RTMP sur CentOS 7

Vous utilisez un système différent? RTMP est idéal pour diffuser du contenu en direct. Lorsque RTMP est associé à FFmpeg, les flux peuvent être convertis en différentes qualités. Vultr i

Comment générer des clés SSH?

Comment générer des clés SSH?

Découvrez comment générer une clé SSH pour accéder à votre serveur sans mot de passe. Suivez nos étapes faciles à comprendre pour créer et ajouter des clés SSH.

Créer un serveur de messagerie avec hMailServer sous Windows

Créer un serveur de messagerie avec hMailServer sous Windows

Découvrez comment créer un serveur de messagerie avec hMailServer sous Windows pour recevoir des e-mails facilement.

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.