Πώς να δημιουργήσετε ένα Deep Learning REST API με Word2Vec και Flask

Οι παραδοσιακές προσεγγίσεις ανάπτυξης είναι δύσκολο να διατηρηθούν όταν χρησιμοποιούνται πολύπλοκα μοντέλα μηχανικής μάθησης στην παραγωγή. Η ανάπτυξη σε φορητό υπολογιστή ή τοπικό μηχάνημα μπορεί να είναι αργή για την εκπαίδευση του μοντέλου μηχανικής εκμάθησης για μηχανικούς βαθιάς μάθησης. Ως αποτέλεσμα, χρησιμοποιούμε συνήθως μηχανές cloud με πιο ισχυρό υλικό για την εκπαίδευση και την εκτέλεση των μοντέλων μηχανικής εκμάθησης. Αυτή είναι καλή πρακτική, καθώς αφαιρούμε πολύπλοκους υπολογισμούς και αντ' αυτού κάνουμε αιτήσεις AJAX όπως απαιτείται. Σε αυτό το σεμινάριο, θα κάνουμε ένα προεκπαιδευμένο μοντέλο βαθιάς εκμάθησης που ονομάζεται Word2Vec διαθέσιμο σε άλλες υπηρεσίες δημιουργώντας ένα REST API από την αρχή.

Προαπαιτούμενα

  • Μια παρουσία διακομιστή Ubuntu 16.04 με τουλάχιστον 4 GB RAM. Για σκοπούς δοκιμής και ανάπτυξης, μπορείτε να επιλέξετε μια παρουσία με 4 GB RAM
  • Κατανόηση του τρόπου χρήσης του λειτουργικού συστήματος Linux για τη δημιουργία/πλοήγηση/επεξεργασία φακέλων και αρχείων
  • Ένας sudoχρήστης

Τι είναι οι ενσωματώσεις λέξεων;

Οι ενσωματώσεις λέξεων είναι μια πρόσφατη εξέλιξη στην επεξεργασία φυσικής γλώσσας και τη βαθιά εκμάθηση που έχει φέρει επανάσταση και στους δύο τομείς λόγω της ταχείας προόδου. Οι ενσωματώσεις λέξεων είναι ουσιαστικά διανύσματα που το καθένα αντιστοιχεί σε μία μόνο λέξη έτσι ώστε τα διανύσματα να σημαίνουν τις λέξεις. Αυτό μπορεί να αποδειχθεί από ορισμένα φαινόμενα όπως το διάνυσμα για king - queen = boy - girl. Τα διανύσματα λέξεων χρησιμοποιούνται για τη δημιουργία τα πάντα, από μηχανές συστάσεων έως ρομπότ συνομιλίας που καταλαβαίνουν πραγματικά την αγγλική γλώσσα.

Οι ενσωματώσεις λέξεων δεν είναι τυχαίες. παράγονται με την εκπαίδευση ενός νευρωνικού δικτύου. Μια πρόσφατη ισχυρή εφαρμογή ενσωμάτωσης λέξεων προέρχεται από την Google με το όνομα Word2Vec, η οποία εκπαιδεύεται με την πρόβλεψη λέξεων που εμφανίζονται δίπλα σε άλλες λέξεις σε μια γλώσσα. Για παράδειγμα, για τη λέξη "cat", το νευρωνικό δίκτυο θα προβλέψει τις λέξεις "kitten"και "feline". Αυτή η διαίσθηση των λέξεων που εμφανίζονται η μία κοντά στην άλλη μας επιτρέπει να τις τοποθετήσουμε σε διανυσματικό χώρο.

Ωστόσο, στην πράξη, τείνουμε να χρησιμοποιούμε τα προεκπαιδευμένα μοντέλα άλλων μεγάλων εταιρειών, όπως η Google, προκειμένου να πρωτοτυποποιήσουμε γρήγορα και να απλοποιήσουμε τις διαδικασίες ανάπτυξης. Σε αυτό το σεμινάριο θα κατεβάσουμε και θα χρησιμοποιήσουμε προεκπαιδευμένες ενσωματώσεις λέξεων Word2Vec της Google. Μπορούμε να το κάνουμε αυτό εκτελώντας την ακόλουθη εντολή στον κατάλογο εργασίας μας.

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

Εγκατάσταση των πακέτων Flask and Magnitude

Το μοντέλο ενσωμάτωσης λέξης που κατεβάσαμε είναι σε .magnitudeμορφή. Αυτή η μορφή μας επιτρέπει να υποβάλουμε ερωτήματα στο μοντέλο αποτελεσματικά χρησιμοποιώντας SQL και επομένως είναι η βέλτιστη μορφή ενσωμάτωσης για διακομιστές παραγωγής. Επειδή πρέπει να μπορούμε να διαβάζουμε τη .magnitudeμορφή, θα εγκαταστήσουμε το pymagnitudeπακέτο. Θα εγκαταστήσουμε επίσης flaskγια να εξυπηρετήσουμε αργότερα τις προβλέψεις βαθιάς μάθησης που έγιναν από το μοντέλο.

pip3 install pymagnitude flask

Θα το προσθέσουμε επίσης στο πρόγραμμα παρακολούθησης εξάρτησης με την ακόλουθη εντολή. Αυτό δημιουργεί ένα αρχείο με το όνομα requirements.txtκαι αποθηκεύει τις βιβλιοθήκες μας Python ώστε να μπορούμε να τις εγκαταστήσουμε ξανά αργότερα.

pip3 freeze > requirements.txt

Ερώτηση για το μοντέλο Word2Vec

Αρχικά, θα δημιουργήσουμε ένα αρχείο για να χειριστούμε το άνοιγμα και το ερώτημα για τις ενσωματώσεις λέξεων.

touch model.py

Στη συνέχεια, θα προσθέσουμε τις ακόλουθες γραμμές για model.pyνα εισαγάγουμε το Magnitude.

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

Μπορούμε να παίξουμε με το pymagnitudeπακέτο και το μοντέλο βαθιάς μάθησης χρησιμοποιώντας τη queryμέθοδο, παρέχοντας ένα επιχείρημα για μια λέξη.

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

Για τον πυρήνα του API μας, θα ορίσουμε μια συνάρτηση για την επιστροφή της διαφοράς στο νόημα μεταξύ δύο λέξεων. Αυτή είναι η ραχοκοκαλιά για τις περισσότερες λύσεις βαθιάς εκμάθησης για πράγματα όπως οι μηχανές συστάσεων (δηλαδή εμφάνιση περιεχομένου με παρόμοιες λέξεις).

Μπορούμε να παίξουμε με αυτή τη συνάρτηση χρησιμοποιώντας τις συναρτήσεις similarityκαι most_similar .

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

Υλοποιούμε τον υπολογιστή ομοιότητας ως εξής. Αυτή η μέθοδος θα κληθεί από το Flask API στην επόμενη ενότητα. Σημειώστε ότι αυτή η συνάρτηση επιστρέφει μια πραγματική τιμή μεταξύ 0 και 1.

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

Δημιουργία REST API

Θα δημιουργήσουμε τον διακομιστή μας σε ένα αρχείο service.pyμε όνομα με τα ακόλουθα περιεχόμενα. Εισάγουμε flaskκαι requestγια να χειριστούμε τις δυνατότητες του διακομιστή μας και εισάγουμε τον similarityκινητήρα από το module που γράψαμε νωρίτερα.

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)

Ο διακομιστής μας είναι μάλλον γυμνός, αλλά μπορεί εύκολα να επεκταθεί δημιουργώντας περισσότερες διαδρομές χρησιμοποιώντας το @app.routeδιακοσμητή.

Πραγματοποίηση κλήσεων API

Μπορούμε να εκτελέσουμε τον διακομιστή μας Flask εκτελώντας τις ακόλουθες εντολές για να ενεργοποιήσουμε το εικονικό μας περιβάλλον, να εγκαταστήσουμε τα πακέτα μας και να εκτελέσουμε το σχετικό αρχείο Python.

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

Ο διακομιστής μας θα είναι διαθέσιμος στο localhost:8000. Μπορούμε να ρωτήσουμε τη βάση δεδομένων μας localhost:8000/similarity?word1=cat&word2=dogκαι να προβάλουμε την απάντηση είτε στο πρόγραμμα περιήγησής μας είτε μέσω άλλου πελάτη AJAX.


Εγκαταστήστε το Plesk στο CentOS 7

Εγκαταστήστε το Plesk στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Plesk είναι ένας ιδιόκτητος πίνακας ελέγχου web host που επιτρέπει στους χρήστες να διαχειρίζονται τους προσωπικούς ή/και τους πελάτες τους ιστότοπους, βάσεις δεδομένων

Εγκαταστήστε το Lets Encrypt SSL σε εφαρμογή WordPress με ένα κλικ

Εγκαταστήστε το Lets Encrypt SSL σε εφαρμογή WordPress με ένα κλικ

Εισαγωγή Το Lets Encrypt είναι μια υπηρεσία αρχής έκδοσης πιστοποιητικών που προσφέρει δωρεάν πιστοποιητικά TLS/SSL. Η διαδικασία εγκατάστασης απλοποιείται από το Certbot,

Πώς να ρυθμίσετε έναν διακομιστή Tekkit Classic στο Ubuntu 16.10

Πώς να ρυθμίσετε έναν διακομιστή Tekkit Classic στο Ubuntu 16.10

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Τι είναι το Tekkit Classic; Το Tekkit Classic είναι ένα modpack για το παιχνίδι που όλοι γνωρίζουν και αγαπούν. Minecraft. Περιέχει μερικά από τα εδ

Δημιουργία ιστολογίου Jekyll στο Ubuntu 16.04

Δημιουργία ιστολογίου Jekyll στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Jekyll είναι μια εξαιρετική εναλλακτική λύση στο WordPress για blogging ή κοινή χρήση περιεχομένου. Δεν απαιτεί βάσεις δεδομένων και είναι πολύ εύκολο

Πώς να ρυθμίσετε αναβαθμίσεις χωρίς παρακολούθηση στο Debian 9 (Stretch)

Πώς να ρυθμίσετε αναβαθμίσεις χωρίς παρακολούθηση στο Debian 9 (Stretch)

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εάν αγοράσετε έναν διακομιστή Debian, τότε θα πρέπει να έχετε πάντα τις πιο πρόσφατες ενημερώσεις κώδικα και ενημερώσεις, είτε κοιμάστε είτε όχι

Πώς να εγκαταστήσετε και να ρυθμίσετε τις παραμέτρους της PHP 7.0 ή της PHP 7.1 στο Ubuntu 16.04

Πώς να εγκαταστήσετε και να ρυθμίσετε τις παραμέτρους της PHP 7.0 ή της PHP 7.1 στο Ubuntu 16.04

Η PHP και τα σχετικά πακέτα είναι τα πιο συχνά χρησιμοποιούμενα στοιχεία κατά την ανάπτυξη ενός διακομιστή web. Σε αυτό το άρθρο, θα μάθουμε πώς να ρυθμίζετε την PHP 7.0 ή την PHP 7.1 o

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Το Squid είναι ένα δημοφιλές, δωρεάν πρόγραμμα Linux που σας επιτρέπει να δημιουργήσετε έναν διακομιστή μεσολάβησης web προώθησης. Σε αυτόν τον οδηγό, θα δείτε πώς να εγκαταστήσετε το Squid στο CentOS για να σας μετατρέψει

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Εισαγωγή Το Lighttpd είναι ένα πιρούνι του Apache που έχει ως στόχο να είναι πολύ λιγότερο εντάσεως πόρων. Είναι ελαφρύ, εξ ου και το όνομά του, και είναι αρκετά απλό στη χρήση. Εγκατάσταση

Τρεις δωρεάν πίνακες ελέγχου διακομιστή (Γρήγορη εγκατάσταση)

Τρεις δωρεάν πίνακες ελέγχου διακομιστή (Γρήγορη εγκατάσταση)

1. Virtualmin/Webmin Το Virtualmin είναι ένας ισχυρός και ευέλικτος πίνακας ελέγχου φιλοξενίας ιστοσελίδων για συστήματα Linux και UNIX που βασίζεται στη γνωστή διαδικτυακή βάση ανοιχτού κώδικα

Ρύθμιση μιας εφαρμογής Yii στο Ubuntu 14.04

Ρύθμιση μιας εφαρμογής Yii στο Ubuntu 14.04

Το Yii είναι ένα πλαίσιο PHP που σας επιτρέπει να αναπτύσσετε εφαρμογές πιο γρήγορα και εύκολα. Η εγκατάσταση του Yii στο Ubuntu είναι απλή, όπως θα μάθετε ακριβώς

Χρήση της οθόνης στο Ubuntu 14.04

Χρήση της οθόνης στο Ubuntu 14.04

Το Screen είναι μια εφαρμογή που επιτρέπει πολλαπλή χρήση περιόδων σύνδεσης τερματικού σε ένα παράθυρο. Αυτό σας επιτρέπει να προσομοιώνετε πολλά παράθυρα τερματικού όπου είναι ma

Ρυθμίστε τον δικό σας διακομιστή DNS σε Debian/Ubuntu

Ρυθμίστε τον δικό σας διακομιστή DNS σε Debian/Ubuntu

Αυτό το σεμινάριο εξηγεί πώς να ρυθμίσετε έναν διακομιστή DNS χρησιμοποιώντας Bind9 σε Debian ή Ubuntu. Σε όλο το άρθρο, αντικαταστήστε το your-domain-name.com ανάλογα. Στο ου

Χρήση Logrotate για διαχείριση αρχείων καταγραφής

Χρήση Logrotate για διαχείριση αρχείων καταγραφής

Εισαγωγή Το Logrotate είναι ένα βοηθητικό πρόγραμμα Linux που απλοποιεί τη διαχείριση αρχείων καταγραφής. Συνήθως εκτελείται μία φορά την ημέρα μέσω μιας εργασίας cron και διαχειρίζεται τη βάση καταγραφής

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Το Icinga2 είναι ένα ισχυρό σύστημα παρακολούθησης και όταν χρησιμοποιείται σε μοντέλο master-client, μπορεί να αντικαταστήσει την ανάγκη για ελέγχους παρακολούθησης που βασίζονται σε NRPE. Ο κύριος-πελάτης

Ρύθμιση του Red5 Media Server στο Ubuntu 16.04

Ρύθμιση του Red5 Media Server στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Red5 είναι ένας διακομιστής πολυμέσων ανοιχτού κώδικα που υλοποιείται σε Java που σας επιτρέπει να εκτελείτε εφαρμογές Flash πολλών χρηστών, όπως η ζωντανή ροή

Μεταγλώττιση και εγκατάσταση του Nginx με τη μονάδα PageSpeed ​​στο Debian 8

Μεταγλώττιση και εγκατάσταση του Nginx με τη μονάδα PageSpeed ​​στο Debian 8

Σε αυτό το άρθρο, θα δούμε πώς να μεταγλωττίσετε και να εγκαταστήσετε το Nginx mainline από τις επίσημες πηγές του Nginx με τη μονάδα PageSpeed, η οποία σας επιτρέπει να

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο Ubuntu 16.04 LTS

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο Ubuntu 16.04 LTS

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Apache Cassandra είναι ένα δωρεάν και ανοιχτού κώδικα σύστημα διαχείρισης βάσεων δεδομένων NoSQL που έχει σχεδιαστεί για να παρέχει επεκτασιμότητα, υψηλή

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Apache Cassandra είναι ένα δωρεάν και ανοιχτού κώδικα σύστημα διαχείρισης βάσεων δεδομένων NoSQL που έχει σχεδιαστεί για να παρέχει επεκτασιμότητα, υψηλή

Πώς να εγκαταστήσετε το Vanilla Forum στο Ubuntu 16.04

Πώς να εγκαταστήσετε το Vanilla Forum στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Vanilla forum είναι μια εφαρμογή φόρουμ ανοιχτού κώδικα γραμμένη σε PHP. Είναι πλήρως προσαρμόσιμο, εύκολο στη χρήση και υποστηρίζει εξωτερικά

Πώς να εγκαταστήσετε το Kanboard στο Ubuntu 18.04 LTS

Πώς να εγκαταστήσετε το Kanboard στο Ubuntu 18.04 LTS

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Το Kanboard είναι ένα δωρεάν και ανοιχτού κώδικα πρόγραμμα λογισμικού διαχείρισης έργων που έχει σχεδιαστεί για να διευκολύνει και να οπτικοποιήσει

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα