Ceci est le deuxième volet de Je veux créer un service d'apprentissage automatique sans programmation! Classification de texte. Rend les résultats de classification de l'apprentissage automatique disponibles à partir de l'API Web.
À ce stade, ce n'était pas vraiment de la non-programmation, et cela a commencé à être une arnaque au titre, mais ce n'est que 60 lignes de code, donc je ne pense pas que ce soit difficile à lire.
La source est disponible sur https://github.com/shuukei-imas-cg/imas_cg_words.
Falcon Falcon est un framework web très rapide et minimaliste pour les applications backend. Selon le benchmark publié sur le Site officiel, il est 9 fois plus performant que le Flask standard (0.11.1) en tant que framework web pour Python. Cette fois, c'est un gros problème, alors je vais faire du cythonisation et le configurer pour qu'il fonctionne plus vite.
Gunicorn Gunicorn est un serveur Web WSGI simple et rapide recommandé par Falcon. WSGI signifie Web Server Gateway Interface et est une définition d'interface standardisée pour les serveurs Web et les infrastructures Web. Si vous suivez ceci, vous pouvez l'utiliser avec votre combinaison préférée de serveur Web et d'application Web (framework).
cd imas_cg_words / (répertoire cloné dans l'article précédent)
git pull
# Installez Gunicorn, cython
pip install cython gunicorn
# Installer lors de la compilation de Falcon avec le compilateur C
pip install --no-binary :all: falcon
# Démarrez le serveur webapi sur localhost
cd webapi/
python server.py &
# Requete
curl http: // localhost: 8080 / imas_cg-words / v1 / predict / Delusion
[
{
"score": 1.2635555267333984,
"nom:": "Hinako Kita"
},
{
"score": -0.9001807570457458,
"nom:": "Aiumi Munakata"
},
{
"score": -1.0048713684082031,
"nom:": "Nanami Asari"
}
]
Si vous lancez une requête avec curl et qu'elle s'affiche comme ci-dessus, cela fonctionne correctement. Reçoit du texte arbitraire avec la méthode HTTP GET et renvoie le résultat de la classification au format JSON.
Lors de la publication en tant qu'API Web accessible de l'extérieur, simple_server ne suffit pas, utilisez donc Gunicorn comme suit. Notez que lors du démarrage à partir de Gunicorn, l'adresse IP et le numéro de port définis dans config.py seront ignorés et les valeurs spécifiées dans les options de ligne de commande prévaudront.
gunicorn -b (adresse IP): (numéro de port) serveur: api &
# Lors de la spécification du nombre de travailleurs et du fichier journal
gunicorn -w 4 -b (adresse IP) :( numéro de port) --access-logfile log / access.log --error-logfile log / error.log serveur: api &
Pour l'adresse IP, spécifiez une adresse IP qui peut être référencée de l'extérieur.
Je vais expliquer le contenu de webapi / server.py.
Tout d'abord, créez une instance de Falcon et configurez le routage pour affecter la classe PredictSerif au chemin de l'URI. La partie {words} peut prendre n'importe quelle valeur et son contenu est passé sous forme de variables à la classe ou à la fonction.
# Add route
api = falcon.API()
api.add_route('/imas_cg-words/v1/predict/{words}', PredictSerif())
Predict Serif définit le comportement de la méthode HTTP GET. Le contenu de la fonction prédire est presque le même que celui créé précédent. La valeur de retour est convertie au format JSON et affichée en tant que sortie de WebAPI.
_add_headers ajoute des en-têtes HTTP. Dans le prochain article, afin d'accéder à cette API Web à partir de SPA en utilisant JavaScript, nous allons configurer pour autoriser CORS pour le moment.
class PredictSerif(object):
def on_get(self, req, resp, words):
result = predict(words)
json_out = json.dumps(result, indent=4, ensure_ascii=False)
_add_headers(resp)
resp.body = json_out
resp.status = falcon.HTTP_200
logging.info("predict {0} {1}".format(req.remote_addr, words.decode('utf-8')))
Indent = 4 dans json.dumps est défini pour la lisibilité. Vous pouvez le supprimer en production.
Vous pouvez désormais utiliser la fonction de classification de machine learning en tant qu'API Web. La prochaine fois, je créerai un frontal qui utilise cette API Web avec Vue.js.
Si vous aimez cet article, il se tiendra vers avril 2018 chez Idol Master Cinderella Girls autant que vous le pensez. Veuillez voter pour Hinako Kita à la «7e élection générale des filles de Cendrillon» qui aura lieu.
Recommended Posts