Deep Learning REST API létrehozása Word2Vec és Flask segítségével

A fejlesztés hagyományos megközelítéseit nehéz fenntartani, ha összetett gépi tanulási modelleket használnak a termelésben. A laptopon vagy helyi gépen történő fejlesztés lassú lehet a gépi tanulási modell betanítása a mélytanulási mérnökök számára. Ennek eredményeként általában erősebb hardverrel rendelkező felhőgépeket használunk gépi tanulási modelljeink betanításához és futtatásához. Ez bevált gyakorlat, mivel az összetett számításokat elvonatkoztatjuk, és ehelyett szükség szerint AJAX kéréseket készítünk. Ebben az oktatóanyagban egy előre betanított Word2Vec nevű mély tanulási modellt teszünk elérhetővé más szolgáltatások számára egy REST API létrehozásával az alapoktól.

Előfeltételek

  • Egy Ubuntu 16.04 szerverpéldány legalább 4 GB RAM-mal. Tesztelési és fejlesztési célokra 4 GB RAM-mal rendelkező példányt választhat
  • A Linux operációs rendszer használatának megértése mappák és fájlok létrehozására/navigációjára/szerkesztésére
  • Egy sudofelhasználó

Mik azok a Word-beágyazások?

A szóbeágyazás a természetes nyelvi feldolgozás és a mélytanulás legújabb fejlesztése, amely a gyors fejlődésnek köszönhetően mindkét területet forradalmasította. A szóbeágyazások lényegében olyan vektorok, amelyek mindegyike egyetlen szónak felel meg, így a vektorok a szavakat jelentik. Ez bizonyos jelenségekkel igazolható, például a vektorral king - queen = boy - girl. A szóvektorokat az ajánlómotoroktól a chat-botokig, amelyek valóban megértik az angol nyelvet, mindent összeállítanak.

A Word beágyazása nem véletlenszerű; neurális hálózat betanításával jönnek létre. A Word2Vec nevű új, hatékony szóbeágyazási implementáció a Google-tól származik, amelyet a nyelv más szavai mellett megjelenő szavak előrejelzésével képez. Például a szó "cat"esetében a neurális hálózat megjósolja a "kitten"és a szavakat "feline". A szavak egymás közelében megjelenő intuíciója lehetővé teszi, hogy vektortérben helyezzük el őket.

A gyakorlatban azonban hajlamosak vagyunk más nagyvállalatok, például a Google előre kiképzett modelljeit használni a prototípus gyors elkészítéséhez és a telepítési folyamatok egyszerűsítéséhez. Ebben az oktatóanyagban letöltjük és használjuk a Google Word2Vec előre betanított szóbeágyazásait. Ezt a következő parancs futtatásával tehetjük meg a munkakönyvtárunkban.

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

A lombik és a mennyiségi csomagok beszerelése

Az általunk letöltött szó beágyazási modellje .magnitudeformátumban van. Ez a formátum lehetővé teszi a modell hatékony lekérdezését SQL használatával, ezért ez az optimális beágyazási formátum éles szerverek számára. Mivel tudnunk kell olvasni a .magnitudeformátumot, telepítjük a pymagnitudecsomagot. Azt is telepítjük, flaskhogy később kiszolgáljuk a modell által készített mély tanulási előrejelzéseket.

pip3 install pymagnitude flask

A következő paranccsal a függőségi nyomkövetőhöz is hozzáadjuk. Ez létrehoz egy nevű fájlt, requirements.txtés elmenti Python-könyvtárainkat, hogy később újratelepíthessük őket.

pip3 freeze > requirements.txt

A Word2Vec modell lekérdezése

Kezdésként létrehozunk egy fájlt, amely kezeli a szóbeágyazások megnyitását és lekérdezését.

touch model.py

Ezután a következő sorokat adjuk hozzá a model.pyMagnitude importálásához.

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

A módszer segítségével eljátszhatjuk a pymagnitudecsomagot és a mély tanulási modellt query, érveket adva egy szó mellett.

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

API-nk magjaként meghatározunk egy függvényt, amely visszaadja a két szó jelentésbeli különbségét. Ez a gerince a legtöbb mély tanulási megoldásnak, például ajánlómotorokhoz (azaz hasonló szavakkal való tartalom megjelenítéséhez).

Ezzel a funkcióval játszhatunk a similarityés most_similar függvények használatával.

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

A hasonlóság-kalkulátort a következőképpen valósítjuk meg. Ezt a metódust a Flask API hívja meg a következő részben. Vegye figyelembe, hogy ez a függvény 0 és 1 közötti valós értéket ad vissza.

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

REST API létrehozása

A szerverünket service.pya következő tartalommal rendelkező fájlban hozzuk létre . Szerver képességeinket importáljuk flaskés requestkezeljük, illetve a similaritymotort a korábban írt modulból importáljuk .

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)

Szerverünk meglehetősen csupasz, de könnyen bővíthető, ha több útvonalat készítünk a @app.routedekorátor segítségével.

API-hívások kezdeményezése

Flask szerverünket a következő parancsok futtatásával tudjuk futtatni a virtuális környezet aktiválásához, a csomagok telepítéséhez és a hozzá tartozó Python fájl futtatásához.

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

Szerverünk a címen lesz elérhető localhost:8000. Lekérdezhetjük adatbázisunkat a címen, localhost:8000/similarity?word1=cat&word2=dogés megtekinthetjük a választ a böngészőnkben vagy egy másik AJAX kliensen keresztül.


Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Cacti beállítása a Debian Jessie-n

A Cacti beállítása a Debian Jessie-n

Bevezetés A Cacti egy nyílt forráskódú megfigyelő és grafikus eszköz, amely teljes mértékben az RRD adatokon alapul. A Cactuson keresztül szinte bármilyen típusú eszközt felügyelhet

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Bevezetés A Lets Encrypt egy hitelesítésszolgáltató szolgáltatás, amely ingyenes TLS/SSL-tanúsítványokat kínál. A telepítés folyamatát a Certbot leegyszerűsíti,

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Más rendszert használ? Mi az a Tekkit Classic? A Tekkit Classic egy modpack ahhoz a játékhoz, amelyet mindenki ismer és szeret; Minecraft. Tartalmaz néhányat a ver

Az iRedMail beállítása a Debian Wheezy rendszeren

Az iRedMail beállítása a Debian Wheezy rendszeren

Más rendszert használ? Ez az oktatóanyag megmutatja, hogyan telepítheti a csoportmunka iRedMail programot a Debian Wheezy friss telepítésére. Használnia kell egy szervát

Jekyll blog létrehozása Ubuntu 16.04-en

Jekyll blog létrehozása Ubuntu 16.04-en

Más rendszert használ? A Jekyll nagyszerű alternatíva a WordPress helyett blogíráshoz vagy tartalommegosztáshoz. Nem igényel adatbázist, és nagyon egyszerű i

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Más rendszert használ? Ha Debian szervert vásárol, akkor mindig rendelkeznie kell a legújabb biztonsági javításokkal és frissítésekkel, akár alszik, akár nem

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP és a kapcsolódó csomagok a leggyakrabban használt összetevők a webszerverek telepítésekor. Ebben a cikkben megtudjuk, hogyan kell beállítani a PHP 7.0 vagy PHP 7.1 o verzióját

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

Három ingyenes szervervezérlő panel (gyors telepítés)

Három ingyenes szervervezérlő panel (gyors telepítés)

1. Virtualmin/Webmin A Virtualmin egy hatékony és rugalmas web hosting vezérlőpanel Linux és UNIX rendszerek számára, amely a jól ismert nyílt forráskódú webbázison alapul.

Yii alkalmazás beállítása Ubuntu 14.04-en

Yii alkalmazás beállítása Ubuntu 14.04-en

A Yii egy PHP-keretrendszer, amely lehetővé teszi alkalmazások gyorsabb és egyszerűbb fejlesztését. A Yii telepítése Ubuntura egyszerű, amint azt pontosan megtudhatja

A képernyő használata Ubuntu 14.04-en

A képernyő használata Ubuntu 14.04-en

A Screen egy olyan alkalmazás, amely lehetővé teszi a terminálmunkamenetek többszöri használatát egy ablakon belül. Ez lehetővé teszi több terminálablak szimulálását, ahol ez ma

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Ez az oktatóanyag elmagyarázza, hogyan állíthat be DNS-kiszolgálót a Bind9 használatával Debian vagy Ubuntu rendszeren. A cikkben ennek megfelelően helyettesítse be a saját-domain-neve.com címet. TH-nál

A Logrotate használata naplófájlok kezelésére

A Logrotate használata naplófájlok kezelésére

Bevezetés A Logrotate egy Linux segédprogram, amely leegyszerűsíti a naplófájlok kezelését. Általában naponta egyszer fut egy cron-feladaton keresztül, és kezeli a naplóbázist

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

Más rendszert használ? A Red5 egy Java nyelven megvalósított nyílt forráskódú médiaszerver, amely lehetővé teszi többfelhasználós Flash-alkalmazások, például élő streamin futtatását.

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Ebben a cikkben látni fogjuk, hogyan fordíthatja le és telepítheti az Nginx fővonalat az Nginx hivatalos forrásaiból a PageSpeed ​​modullal, amely lehetővé teszi a

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket