Kā izveidot Deep Learning REST API, izmantojot Word2Vec un Flask

Tradicionālās attīstības pieejas ir grūti uzturēt, ražošanā izmantojot sarežģītus mašīnmācīšanās modeļus. Izstrāde klēpjdatorā vai vietējā mašīnā var būt lēna, lai apmācītu mašīnmācīšanās modeli dziļās apmācības inženieriem. Tā rezultātā mēs parasti izmantojam mākoņa mašīnas ar jaudīgāku aparatūru, lai gan apmācītu, gan darbinātu mūsu mašīnmācīšanās modeļus. Tā ir laba prakse, jo mēs abstrakti sarežģītu aprēķinu un tā vietā veicam AJAX pieprasījumus, ja nepieciešams. Šajā apmācībā mēs padarīsim iepriekš apmācītu dziļās mācīšanās modeli ar nosaukumu Word2Vec pieejamu citiem pakalpojumiem, izveidojot REST API no paša sākuma.

Priekšnoteikumi

  • Ubuntu 16.04 servera gadījums ar vismaz 4 GB RAM. Testēšanas un izstrādes nolūkos varat izvēlēties gadījumu ar 4 GB RAM
  • Izpratne par to, kā izmantot operētājsistēmu Linux, lai izveidotu/pārvietotos/rediģētu mapes un failus
  • sudolietotāju

Kas ir vārdu iegulšana?

Vārdu iegulšana ir nesena attīstība dabiskās valodas apstrādē un dziļā apguvē, kas straujā progresa dēļ ir mainījusi abas jomas. Vārdu iegulšana būtībā ir vektori, no kuriem katrs atbilst vienam vārdam tā, ka vektori nozīmē vārdus. To var parādīt ar dažām parādībām, piemēram, vektoru king - queen = boy - girl. Vārdu vektorus izmanto, lai izveidotu visu, sākot no ieteikumu dzinējiem līdz tērzēšanas robotiem, kas faktiski saprot angļu valodu.

Vārdu iegulšana nav nejauša; tie tiek ģenerēti, apmācot neironu tīklu. Nesenā jaudīgā vārdu iegulšanas ieviešana nāk no Google ar nosaukumu Word2Vec, kas tiek apmācīta, paredzot vārdus, kas parādās blakus citiem valodas vārdiem. Piemēram, vārdam "cat", neironu tīkls prognozēs vārdus "kitten"un "feline". Šī vārdu intuīcija, kas parādās blakus viens otram, ļauj tos ievietot vektoru telpā.

Tomēr praksē mēs mēdzam izmantot citu lielu korporāciju, piemēram, Google, iepriekš apmācītus modeļus, lai ātri izveidotu prototipus un vienkāršotu izvietošanas procesus. Šajā apmācībā mēs lejupielādēsim un izmantosim Google Word2Vec iepriekš apmācītās vārdu iegulšanas iespējas. Mēs to varam izdarīt, izpildot šādu komandu mūsu darba direktorijā.

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

Kolbas un lieluma pakotņu uzstādīšana

Mūsu lejupielādētais vārda iegulšanas modelis ir .magnitudeformātā. Šis formāts ļauj efektīvi vaicāt modelim, izmantojot SQL, un tāpēc tas ir optimālais iegulšanas formāts ražošanas serveriem. Tā kā mums ir jāspēj nolasīt .magnitudeformāts, mēs instalēsim pymagnitudepakotni. Mēs arī instalēsim, flasklai vēlāk sniegtu modeļa sniegtās dziļās mācīšanās prognozes.

pip3 install pymagnitude flask

Mēs to arī pievienosim mūsu atkarības izsekotājam ar šādu komandu. Tādējādi tiek izveidots fails ar nosaukumu requirements.txtun tiek saglabātas mūsu Python bibliotēkas, lai mēs varētu tās vēlāk instalēt no jauna.

pip3 freeze > requirements.txt

Word2Vec modeļa vaicājumi

Lai sāktu, mēs izveidosim failu, lai apstrādātu vārdu iegulšanas atvēršanu un vaicājumu veikšanu.

touch model.py

Pēc tam mēs pievienosim tālāk norādītās rindiņas, model.pylai importētu lielumu.

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

Mēs varam apspēlēt pymagnitudepaketi un dziļās mācīšanās modeli, izmantojot querymetodi, sniedzot argumentu vārdam.

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

Mūsu API kodolam mēs definēsim funkciju, lai atgrieztu divu vārdu nozīmes atšķirību. Tas ir mugurkauls lielākajai daļai dziļo mācību risinājumu tādām lietām kā ieteikumu dzinēji (ti, satura rādīšana ar līdzīgiem vārdiem).

Mēs varam spēlēt ar šo funkciju, izmantojot similarityun most_similar funkcijas.

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

Mēs ieviešam līdzības kalkulatoru šādi. Nākamajā sadaļā šo metodi izsauks Flask API. Ņemiet vērā, ka šī funkcija atgriež reālu vērtību no 0 līdz 1.

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

REST API izveide

Mēs izveidosim savu serveri failā service.pyar šādu saturu. Mēs importējam flaskun requestapstrādājam savas servera iespējas, kā arī importējam similaritydzinēju no moduļa, kuru rakstījām iepriekš.

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)

Mūsu serveris ir diezgan tukšs, taču to var viegli pagarināt, izveidojot vairāk maršrutu, izmantojot @app.routedekoratoru.

API zvanu veikšana

Mēs varam palaist savu Flask serveri, izpildot šādas komandas, lai aktivizētu mūsu virtuālo vidi, instalētu pakotnes un palaistu saistīto Python failu.

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

Mūsu serveris būs pieejams plkst localhost:8000. Mēs varam veikt vaicājumus mūsu datu bāzē vietnē localhost:8000/similarity?word1=cat&word2=dogun skatīt atbildi vai nu mūsu pārlūkprogrammā, vai izmantojot citu AJAX klientu.

Atstājiet komentāru

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk