Kuidas luua Word2Veci ja Flaskiga süvaõppe REST API-t

Traditsioonilisi arenduskäsitlusi on keeruline säilitada, kui tootmises kasutatakse keerukaid masinõppemudeleid. Sülearvutis või kohalikus masinas arendamine võib süvaõppe inseneride masinõppemudeli väljaõpetamiseks olla aeglane. Seetõttu kasutame masinõppemudelite koolitamiseks ja käitamiseks tavaliselt võimsama riistvaraga pilveseadmeid. See on hea tava, kuna abstraktselt võtame keeruka arvutuse ja teeme selle asemel vajaduse korral AJAX-i päringuid. Selles õpetuses teeme eelkoolitatud süvaõppe mudeli nimega Word2Vec teistele teenustele kättesaadavaks, luues REST API juba algusest peale.

Eeltingimused

  • Ubuntu 16.04 serveri eksemplar, millel on vähemalt 4 GB muutmälu. Testimise ja arendamise eesmärgil saate valida 4 GB muutmäluga eksemplari
  • Arusaam, kuidas kasutada Linuxi operatsioonisüsteemi kaustade ja failide loomiseks/navigeerimiseks/redigeerimiseks
  • sudokasutaja

Mis on sõna manustamine?

Sõna manustamine on loomuliku keele töötlemise ja süvaõppe hiljutine areng, mis on kiire arengu tõttu mõlemas valdkonnas revolutsiooniliselt muutnud. Sõnade manused on sisuliselt vektorid, millest igaüks vastab ühele sõnale, nii et vektorid tähendavad sõnu. Seda saab näidata teatud nähtustega, näiteks vektoriga king - queen = boy - girl. Sõnavektoreid kasutatakse kõige ehitamiseks alates soovitusmootoritest kuni vestlusrobotiteni, mis tegelikult mõistavad inglise keelt.

Sõna manustamine ei ole juhuslik; need genereeritakse närvivõrgu treenimisel. Hiljutine võimas sõna manustamise rakendus pärineb Google'ilt nimega Word2Vec, mida õpetatakse ennustama sõnu, mis ilmuvad mõnes keeles teiste sõnade kõrval. Näiteks sõna "cat", närvivõrk ennustab sõnu "kitten"ja "feline". See üksteise lähedale ilmuvate sõnade intuitsioon võimaldab meil paigutada need vektorruumi.

Praktikas kipume aga kasutama teiste suurettevõtete, näiteks Google'i, eelkoolitatud mudeleid kiireks prototüüpimiseks ja juurutamisprotsesside lihtsustamiseks. Selles õpetuses laadime alla ja kasutame Google'i Word2Vec eelkoolitatud sõna manustamisi. Seda saame teha, käivitades oma töökataloogis järgmise käsu.

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

Kolvi ja magnituudipakettide paigaldamine

Sõna manustamismudel, mille alla laadisime, on .magnitudevormingus. See vorming võimaldab meil SQL-i abil tõhusalt mudelit päringuid teha ja on seetõttu tootmisserverite jaoks optimaalne manustamisvorming. Kuna peame suutma .magnitudevormingut lugeda , installime pymagnitudepaketi. Installime ka, flasket hiljem pakkuda mudeli põhjal tehtud sügavaid õppimisprognoose.

pip3 install pymagnitude flask

Lisame selle ka oma sõltuvuse jälgijasse järgmise käsuga. See loob faili nimega requirements.txtja salvestab meie Pythoni teegid, et saaksime need hiljem uuesti installida.

pip3 freeze > requirements.txt

Word2Vec mudeli päringu tegemine

Alustuseks loome faili sõna manustamise avamiseks ja päringute tegemiseks.

touch model.py

Järgmisena lisame model.pyMagnitude importimiseks järgmised read .

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

Meetodit pymagnitudekasutades saame paketi ja süvaõppe mudeliga ringi mängida query, pakkudes sõna kasuks argumenti.

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

Meie API tuuma jaoks määratleme funktsiooni, mis tagastab kahe sõna tähenduse erinevuse. See on enamiku süvaõppelahenduste selgroog selliste asjade jaoks nagu soovitusmootorid (st sisu näitamine sarnaste sõnadega).

Selle funktsiooniga saame mängida, kasutades funktsioone similarityja most_similar .

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

Rakendame sarnasuskalkulaatorit järgmiselt. Järgmises jaotises kutsub seda meetodit Flask API. Pange tähele, et see funktsioon tagastab tegeliku väärtuse vahemikus 0 kuni 1.

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

REST API loomine

Loome oma serveri service.pyjärgmise sisuga failis . Impordime flaskja requesthaldame oma serveri võimalusi ning impordime similaritymootori varem kirjutatud moodulist.

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)

Meie server on üsna paljaste luudega, kuid seda saab hõlpsasti laiendada, luues @app.routedekoraatori abil rohkem marsruute .

API-kõnede tegemine

Saame käitada oma Flask-serverit, käivitades järgmised käsud, et aktiveerida meie virtuaalne keskkond, installida oma paketid ja käitada sellega seotud Pythoni faili.

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

Meie server on saadaval aadressil localhost:8000. Saame teha päringuid oma andmebaasist aadressil localhost:8000/similarity?word1=cat&word2=dogja vaadata vastust kas oma brauseris või mõne muu AJAX-kliendi kaudu.

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit