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.


Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Installer Lets Encrypt SSL på One-Click WordPress App

Installer Lets Encrypt SSL på One-Click WordPress App

Introduktion Lets Encrypt er en certifikatmyndighedstjeneste, der tilbyder gratis TLS/SSL-certifikater. Installationsprocessen forenkles af Certbot,

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer

Tre gratis serverkontrolpaneler (hurtig installation)

Tre gratis serverkontrolpaneler (hurtig installation)

1. Virtualmin/Webmin Virtualmin er et kraftfuldt og fleksibelt webhotel kontrolpanel til Linux og UNIX systemer baseret på den velkendte Open Source web-base

Opsætning af en Yii-applikation på Ubuntu 14.04

Opsætning af en Yii-applikation på Ubuntu 14.04

Yii er en PHP-ramme, der giver dig mulighed for at udvikle applikationer hurtigere og nemmere. Installation af Yii på Ubuntu er ligetil, da du vil lære nøjagtigt

Brug af skærm på Ubuntu 14.04

Brug af skærm på Ubuntu 14.04

Screen er et program, der tillader flere terminalsessioner inden for et vindue. Dette giver dig mulighed for at simulere flere terminalvinduer, hvor det ma

Brug af Logrotate til at administrere logfiler

Brug af Logrotate til at administrere logfiler

Introduktion Logrotate er et Linux-værktøj, der forenkler administrationen af ​​logfiler. Det kører typisk en gang om dagen via et cron-job og administrerer logbasen

Konfiguration af statisk netværk og IPv6 på CentOS 7

Konfiguration af statisk netværk og IPv6 på CentOS 7

VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Sådan installeres Gitea på Ubuntu 18.04

Sådan installeres Gitea på Ubuntu 18.04

Bruger du et andet system? Gitea er et alternativt open source, selv-hostet versionskontrolsystem drevet af git. Gitea er skrevet på Golang og er

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hvad er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheden udnyttes gennem, hvordan Linux behandler kode. Det giver en uprivilegeret bruger mulighed for at gai

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Det kan være farligt at have kun én bruger, som er root. Så lad os ordne det. Vultr giver os friheden til at gøre som vi vil med vores brugere og vores servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et letvægtsalternativ til phpMyAdmin. Til sammenligning er dens samlede pakkestørrelse 400KB mod 4,2 MB phpMyAdmin. I modsætning til phpMyAdmin, som

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.

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.

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.

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