Sådan opretter du en Deep Learning REST API med Word2Vec og Flask

Traditionelle tilgange til udvikling er svære at opretholde, når man bruger komplekse maskinlæringsmodeller i produktionen. Udvikling på en bærbar eller lokal maskine kan være langsom til at træne maskinlæringsmodellen for deep learning-ingeniører. Som følge heraf gør vi typisk brug af cloud-maskiner med mere kraftfuld hardware til både at træne og køre vores machine learning-modeller. Dette er god praksis, da vi abstraherer kompleks beregning og i stedet foretager AJAX-anmodninger efter behov. I denne tutorial vil vi gøre en forudtrænet dyb læringsmodel ved navn Word2Vec tilgængelig for andre tjenester ved at bygge en REST API fra bunden.

Forudsætninger

  • En Ubuntu 16.04-serverinstans med mindst 4 GB RAM. Til test- og udviklingsformål kan du vælge en instans med 4 GB RAM
  • Forståelse af, hvordan man bruger Linux-operativsystemet til at oprette/navigere/redigere mapper og filer
  • En sudobruger

Hvad er Word-indlejringer?

Ordindlejringer er en nylig udvikling inden for naturlig sprogbehandling og dyb læring, der har revolutioneret begge felter på grund af hurtige fremskridt. Ordindlejringer er i det væsentlige vektorer, der hver svarer til et enkelt ord, således at vektorerne betyder ordene. Dette kan påvises af visse fænomener, såsom vektoren for king - queen = boy - girl. Ordvektorer bruges til at bygge alt fra anbefalingsmotorer til chat-bots, der rent faktisk forstår det engelske sprog.

Ordindlejringer er ikke tilfældige; de genereres ved at træne et neuralt netværk. En nylig kraftfuld implementering af ordindlejring kommer fra Google ved navn Word2Vec, som trænes ved at forudsige ord, der vises ved siden af ​​andre ord på et sprog. For eksempel for ordet "cat"vil det neurale netværk forudsige ordene "kitten"og "feline". Denne intuition af ord, der optræder i nærheden af ​​hinanden, giver os mulighed for at placere dem i vektorrummet.

I praksis har vi dog en tendens til at bruge de fortrænede modeller fra andre store virksomheder som f.eks. Google for hurtigt at lave prototyper og forenkle implementeringsprocesser. I denne tutorial vil vi downloade og bruge Googles Word2Vec fortrænede ordindlejringer. Vi kan gøre dette ved at køre følgende kommando i vores arbejdsmappe.

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

Installation af kolbe- og størrelsespakker

Ordindlejringsmodellen, vi downloadede, er i et .magnitudeformat. Dette format giver os mulighed for at forespørge modellen effektivt ved hjælp af SQL, og er derfor det optimale indlejringsformat til produktionsservere. Da vi skal kunne læse .magnitudeformatet, installerer vi pymagnitudepakken. Vi installerer også flaskfor senere at tjene de dybe læringsforudsigelser, som modellen har lavet.

pip3 install pymagnitude flask

Vi tilføjer det også til vores afhængighedssporer med følgende kommando. Dette opretter en fil med navnet requirements.txtog gemmer vores Python-biblioteker, så vi kan geninstallere dem på et senere tidspunkt.

pip3 freeze > requirements.txt

Forespørgsel efter Word2Vec-modellen

Til at begynde med opretter vi en fil til at håndtere åbning og forespørgsel efter ordet indlejringer.

touch model.py

Dernæst tilføjer vi følgende linjer for model.pyat importere Magnitude.

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

Vi kan lege med pymagnitudepakken og deep learning-modellen ved at bruge querymetoden og give et argument for et ord.

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

For kernen i vores API vil vi definere en funktion til at returnere forskellen i betydning mellem to ord. Dette er rygraden for de fleste deep learning-løsninger til ting såsom anbefalingsmotorer (dvs. at vise indhold med lignende ord).

Vi kan lege med denne funktion ved at bruge similarityog most_similar funktioner.

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

Vi implementerer lighedsberegneren som følger. Denne metode vil blive kaldt af Flask API i næste afsnit. Bemærk, at denne funktion returnerer en reel værdi mellem 0 og 1.

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

Oprettelse af en REST API

Vi opretter vores server i en fil med navnet service.pymed følgende indhold. Vi importerer flaskog requesthåndterer vores serverfunktioner, og vi importerer similaritymotoren fra det modul, vi skrev tidligere.

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)

Vores server er ret bare ben, men kan nemt udvides ved at oprette flere ruter ved hjælp af @app.routedekoratoren.

Foretag API-opkald

Vi kan køre vores Flask-server ved at køre følgende kommandoer for at aktivere vores virtuelle miljø, installere vores pakker og køre dens tilhørende Python-fil.

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

Vores server vil være tilgængelig kl localhost:8000. Vi kan forespørge i vores database på localhost:8000/similarity?word1=cat&word2=dogog se svaret enten i vores browser eller gennem en anden AJAX-klient.

Efterlad en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere