Hvernig á að búa til Deep Learning REST API með Word2Vec og Flask

Erfitt er að viðhalda hefðbundnum aðferðum við þróun þegar flókin vélanámslíkön eru notuð í framleiðslu. Þróun á fartölvu eða staðbundinni vél getur verið hæg til að þjálfa vélanámslíkanið fyrir djúpnámsverkfræðinga. Fyrir vikið notum við venjulega skýjavélar með öflugri vélbúnaði til að bæði þjálfa og keyra vélanámslíkön okkar. Þetta er góð venja þar sem við tökum saman flókna útreikninga og gerum í staðinn AJAX beiðnir eftir þörfum. Í þessari kennslu munum við gera fyrirfram þjálfað djúpnámslíkan sem heitir Word2Vec aðgengilegt fyrir aðra þjónustu með því að byggja upp REST API frá grunni.

Forkröfur

  • Ubuntu 16.04 netþjónstilvik með að minnsta kosti 4GB vinnsluminni. Í prófunar- og þróunarskyni geturðu valið tilvik með 4GB vinnsluminni
  • Skilningur á því hvernig á að nota Linux stýrikerfið til að búa til/flotta/breyta möppum og skrám
  • A sudonotandi

Hvað eru orð innfellingar?

Orðainnfelling er nýleg þróun í náttúrulegri málvinnslu og djúpnámi sem hefur gjörbylt báðum sviðum vegna örra framfara. Orðainnfellingar eru í meginatriðum vektorar sem hver um sig samsvarar einu orði þannig að vigrarnir þýða orðin. Þetta er hægt að sýna fram á með ákveðnum fyrirbærum eins og vektornum fyrir king - queen = boy - girl. Orðvigrar eru notaðir til að byggja allt frá meðmælavélum til spjallbotna sem skilja í raun ensku.

Innfelling orða er ekki tilviljunarkennd; þau verða til með því að þjálfa taugakerfi. Nýleg öflug innfelld orðaútfærsla kemur frá Google sem heitir Word2Vec sem er þjálfuð með því að spá fyrir um orð sem birtast við hlið annarra orða á tungumáli. Til dæmis, fyrir orðið "cat", mun tauganetið spá fyrir um orðin "kitten"og "feline". Þetta innsæi orða sem birtast nálægt hvert öðru gerir okkur kleift að setja þau í vektorrými.

Hins vegar, í reynd, höfum við tilhneigingu til að nota fyrirfram þjálfuð líkön annarra stórfyrirtækja eins og Google til að gera fljótt frumgerð og einfalda dreifingarferli. Í þessari kennslu munum við hlaða niður og nota Word2Vec fyrirfram þjálfað orð innfellingar frá Google. Við getum gert þetta með því að keyra eftirfarandi skipun í vinnuskránni okkar.

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

Uppsetning á flöskunni og stærðarpakkanum

Orðainnfellingarlíkanið sem við haluðum niður er á .magnitudesniði. Þetta snið gerir okkur kleift að spyrjast fyrir um líkanið á skilvirkan hátt með því að nota SQL og er því ákjósanlegasta innfellingarsniðið fyrir framleiðsluþjóna. Þar sem við þurfum að geta lesið .magnitudesniðið munum við setja upp pymagnitudepakkann. Við munum einnig setja upp flasktil að þjóna síðar spár um djúpnám sem líkanið gerir.

pip3 install pymagnitude flask

Við munum einnig bæta því við rekja spor einhvers með eftirfarandi skipun. Þetta býr til skrá sem heitir requirements.txtog vistar Python bókasöfnin okkar svo við getum sett þau upp aftur síðar.

pip3 freeze > requirements.txt

Spurning um Word2Vec líkanið

Til að byrja, munum við búa til skrá til að sjá um opnun og fyrirspurn um orðinnfellingar.

touch model.py

Næst munum við bæta eftirfarandi línum við model.pytil að flytja inn Magnitude.

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

Við getum leikið okkur með pymagnitudepakkann og djúpnámslíkanið með því að nota queryaðferðina og koma með rök fyrir orði.

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

Fyrir kjarna API okkar munum við skilgreina aðgerð til að skila merkingarmuninum á milli tveggja orða. Þetta er burðarás fyrir flestar djúpnámslausnir fyrir hluti eins og meðmælavélar (þ.e. sýna efni með svipuðum orðum).

Við getum leikið okkur með þessa aðgerð með því að nota similarityog most_similar aðgerðirnar.

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

Við útfærum líkindareiknivélina sem hér segir. Þessi aðferð verður kölluð af Flask API í næsta kafla. Athugaðu að þessi aðgerð skilar raungildi á milli 0 og 1.

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

Að búa til REST API

Við munum búa til netþjóninn okkar í skrá sem heitir service.pymeð eftirfarandi innihaldi. Við flytjum inn flaskog requesttil að sjá um getu miðlara okkar og við flytjum inn similarityvélina úr einingunni sem við skrifuðum áðan.

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)

Miðlarinn okkar er frekar beinn, en auðvelt er að stækka hann með því að búa til fleiri leiðir með @app.routeskreytingunni.

Að hringja í API

Við getum keyrt Flask netþjóninn okkar með því að keyra eftirfarandi skipanir til að virkja sýndarumhverfið okkar, setja upp pakkana okkar og keyra tengda Python skrána.

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

Miðlarinn okkar verður aðgengilegur kl localhost:8000. Við getum spurt gagnagrunninn okkar á localhost:8000/similarity?word1=cat&word2=dogog skoðað svarið annað hvort í vafranum okkar eða í gegnum annan AJAX viðskiptavin.


Settu upp Cacti á Debian Jessie

Settu upp Cacti á Debian Jessie

Inngangur Cacti er opinn vöktunar- og grafatól sem byggir að fullu á RRD gögnum. Í gegnum Cacti geturðu fylgst með næstum hvers kyns tækjum

Settu upp Lets Encrypt SSL á WordPress appi með einum smelli

Settu upp Lets Encrypt SSL á WordPress appi með einum smelli

Inngangur Lets Encrypt er vottunaryfirvaldsþjónusta sem býður upp á ókeypis TLS/SSL vottorð. Uppsetningarferlið er einfaldað af Certbot,

Hvernig á að setja upp Tekkit Classic Server á Ubuntu 16.10

Hvernig á að setja upp Tekkit Classic Server á Ubuntu 16.10

Að nota annað kerfi? Hvað er Tekkit Classic? Tekkit Classic er modpack fyrir leikinn sem allir þekkja og elska; Minecraft. Það inniheldur eitthvað af ver

Settu upp iRedMail á Debian Wheezy

Settu upp iRedMail á Debian Wheezy

Að nota annað kerfi? Þessi kennsla mun sýna þér hvernig á að setja upp hópbúnaðinn iRedMail á nýrri uppsetningu á Debian Wheezy. Þú ættir að nota þjóna

Að búa til Jekyll blogg á Ubuntu 16.04

Að búa til Jekyll blogg á Ubuntu 16.04

Að nota annað kerfi? Jekyll er frábær valkostur við WordPress til að blogga eða deila efni. Það krefst enga gagnagrunna og það er mjög auðvelt i

Hvernig á að setja upp og stilla PHP 7.0 eða PHP 7.1 á Ubuntu 16.04

Hvernig á að setja upp og stilla PHP 7.0 eða PHP 7.1 á Ubuntu 16.04

PHP og tengdir pakkar eru algengustu íhlutirnir þegar vefþjónn er notaður. Í þessari grein munum við læra hvernig á að setja upp PHP 7.0 eða PHP 7.1 o

Hvernig á að setja upp Squid Proxy á CentOS

Hvernig á að setja upp Squid Proxy á CentOS

Smokkfiskur er vinsælt, ókeypis Linux forrit sem gerir þér kleift að búa til framsendingarforrit á vefnum. Í þessari handbók muntu sjá hvernig á að setja upp Squid á CentOS til að snúa þér

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Inngangur Lighttpd er gaffal af Apache sem miðar að því að vera miklu minna auðlindafrekt. Hann er léttur, þess vegna heitir hann, og er frekar einfaldur í notkun. Uppsetning

Þrjú ókeypis stjórnborð miðlara (fljót uppsetning)

Þrjú ókeypis stjórnborð miðlara (fljót uppsetning)

1. Virtualmin/Webmin Virtualmin er öflugt og sveigjanlegt stjórnborð fyrir vefhýsingu fyrir Linux og UNIX kerfi byggt á hinum vel þekkta Open Source vefgrunni

Setja upp Yii forrit á Ubuntu 14.04

Setja upp Yii forrit á Ubuntu 14.04

Yii er PHP ramma sem gerir þér kleift að þróa forrit hraðar og auðveldlega. Uppsetning Yii á Ubuntu er einföld, þar sem þú munt læra nákvæmlega

Notkun Skjár á Ubuntu 14.04

Notkun Skjár á Ubuntu 14.04

Skjár er forrit sem leyfir margs konar notkun flugstöðvarlota innan eins glugga. Þetta gerir þér kleift að líkja eftir mörgum flugstöðvum gluggum þar sem það ma

Settu upp þinn eigin DNS netþjón á Debian/Ubuntu

Settu upp þinn eigin DNS netþjón á Debian/Ubuntu

Þessi kennsla útskýrir hvernig á að setja upp DNS netþjón með Bind9 á Debian eða Ubuntu. Í gegnum greinina skaltu skipta út-léninu þínu.com í samræmi við það. Á þ

Notkun Logrotate til að stjórna annálaskrám

Notkun Logrotate til að stjórna annálaskrám

Inngangur Logrotate er Linux tól sem einfaldar stjórnun annálaskráa. Það keyrir venjulega einu sinni á dag í gegnum cron-vinnu og stjórnar annálagrunni

Stilla Static Networking og IPv6 á CentOS 7

Stilla Static Networking og IPv6 á CentOS 7

VULTR hefur nýlega gert breytingar á enda þeirra og allt ætti nú að virka vel út úr kassanum með NetworkManager virkt. Ef þú vilt slökkva á

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Icinga2 er öflugt eftirlitskerfi og þegar það er notað í aðal-viðskiptavinamódel getur það komið í stað þörf fyrir NRPE-undirstaða vöktunareftirlit. Húsbóndinn

Settu upp Red5 Media Server á Ubuntu 16.04

Settu upp Red5 Media Server á Ubuntu 16.04

Að nota annað kerfi? Red5 er opinn uppspretta miðlara útfærður í Java sem gerir þér kleift að keyra Flash fjölnotendaforrit eins og straumspilun í beinni

Settu saman og settu upp Nginx með PageSpeed ​​Module á Debian 8

Settu saman og settu upp Nginx með PageSpeed ​​Module á Debian 8

Í þessari grein munum við sjá hvernig á að setja saman og setja upp Nginx mainline frá opinberum heimildum Nginx með PageSpeed ​​einingunni, sem gerir þér kleift að

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Að nota annað kerfi? Apache Cassandra er ókeypis og opinn uppspretta NoSQL gagnagrunnsstjórnunarkerfi sem er hannað til að veita sveigjanleika, háan

Hvernig á að setja upp Vanilla Forum á Ubuntu 16.04

Hvernig á að setja upp Vanilla Forum á Ubuntu 16.04

Að nota annað kerfi? Vanilla forum er opinn uppspretta spjallforrit skrifað í PHP. Það er fullkomlega sérhannaðar, auðvelt í notkun og styður utanaðkomandi

Hvernig á að setja upp Gitea á Debian 9

Hvernig á að setja upp Gitea á Debian 9

Að nota annað kerfi? Gitea er annað opinn uppspretta, sjálfhýst útgáfustýringarkerfi knúið af Git. Gitea er skrifað á Golang og er

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.

DDOS árásir: Stutt yfirlit

DDOS árásir: Stutt yfirlit

Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.

Þróun gagnageymslu – Infographic

Þróun gagnageymslu – Infographic

Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.

Virkni Big Data Reference Architecture Layers

Virkni Big Data Reference Architecture Layers

Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira