Word2Vec ve Flask ile Derin Öğrenme REST API Nasıl Oluşturulur

Üretimde karmaşık makine öğrenimi modelleri kullanılırken geleneksel kalkınma yaklaşımlarının sürdürülmesi zordur. Bir dizüstü bilgisayarda veya yerel makinede geliştirme, derin öğrenme mühendisleri için makine öğrenme modelini eğitmek için yavaş olabilir. Sonuç olarak, makine öğrenme modellerimizi hem eğitmek hem de çalıştırmak için genellikle daha güçlü donanıma sahip bulut makinelerini kullanıyoruz. Karmaşık hesaplamayı soyutladığımız ve bunun yerine AJAX isteklerini yaptığımız için bu iyi bir uygulamadır. Bu derste, Word2Vec adlı önceden eğitilmiş bir derin öğrenme modelini sıfırdan bir REST API oluşturarak diğer hizmetlere sunacağız.

Ön şartlar

  • En az 4GB RAM'e sahip bir Ubuntu 16.04 sunucu örneği. Test ve geliştirme amacıyla, 4GB RAM ile bir örnek seçebilirsiniz
  • Klasörleri ve dosyaları oluşturmak / içinde gezinmek / düzenlemek için Linux işletim sisteminin nasıl kullanılacağını anlama
  • Bir sudokullanıcı

Sözcük Yerleştirme Nedir?

Kelime düğünleri, hızlı ilerleme nedeniyle her iki alanda da devrim yaratan doğal dil işlemede ve derin öğrenmede yeni bir gelişmedir. Kelime düğünleri esasen her biri tek bir kelimeye karşılık gelen vektörlerdir, öyle ki vektörler kelimeler anlamına gelir. Bu, vektörü gibi bazı fenomenlerle gösterilebilir king - queen = boy - girl. Kelime vektörleri, öneri motorlarından İngilizce dilini anlayan sohbet botlarına kadar her şeyi oluşturmak için kullanılır.

Kelime düğünleri rastgele değildir; sinir ağı eğitimi ile üretilirler. Yakın zamanda güçlü bir kelime yerleştirme uygulaması, bir dildeki diğer kelimelerin yanında görünen kelimeleri tahmin ederek eğitilen Word2Vec adlı Google'dan gelir. Örneğin, bir kelime için "cat", sinir ağı sözcükleri tahmin edecek "kitten"ve "feline". Birbirine yakın görünen kelimelerin bu sezgisi, onları vektör alanına yerleştirmemizi sağlar.

Bununla birlikte, uygulamada, Google gibi diğer büyük şirketlerin önceden eğitilmiş modellerini, hızlı bir şekilde prototip oluşturmak ve dağıtım süreçlerini basitleştirmek için kullanma eğilimindeyiz. Bu eğitimde Google'ın önceden eğitilmiş Word2Vec kelime düğünlerini indirip kullanacağız. Bunu çalışma dizinimizde aşağıdaki komutu çalıştırarak yapabiliriz.

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

Şişe ve Büyüklük Paketlerini Kurma

İndirdiğimiz kelime gömme modeli bir .magnitudebiçimdedir. Bu biçim, modeli SQL kullanarak verimli bir şekilde sorgulamamıza olanak tanır ve bu nedenle üretim sunucuları için en uygun yerleştirme biçimidir. .magnitudeBiçimi okuyabilmemiz gerektiğinden pymagnitudepaketi yükleyeceğiz . Daha flasksonra model tarafından yapılan derin öğrenme tahminlerine de hizmet edeceğiz .

pip3 install pymagnitude flask

Ayrıca aşağıdaki komutla bağımlılık izleyicimize ekleyeceğiz. Bu, requirements.txtdaha sonra yeniden yükleyebilmemiz için Python kitaplıklarımız adlı bir dosya oluşturur ve kaydeder.

pip3 freeze > requirements.txt

Word2Vec Modelini Sorgulama

Başlamak için, kelime düğünlerini açıp sorgulamak için bir dosya oluşturacağız.

touch model.py

Ardından, model.pyMagnitude'u içe aktarmak için aşağıdaki satırları ekleyeceğiz .

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

Bir kelime için argüman sağlayarak yöntemi pymagnitudekullanarak paket ve derin öğrenme modeli ile oynayabiliriz query.

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

API'mizin çekirdeği için, iki kelime arasındaki anlam farkını döndürmek için bir işlev tanımlayacağız. Bu, öneri motorları gibi şeyler için en derin öğrenme çözümlerinin belkemiğidir (yani benzer kelimelerle içerik göstermek).

similarityVe most_similar fonksiyonlarını kullanarak bu fonksiyonla oynayabiliriz .

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

Benzerlik hesaplayıcısını aşağıdaki gibi uyguluyoruz. Bu yöntem bir sonraki bölümde Flask API'sı tarafından çağrılır. Bu işlevin 0 ile 1 arasında gerçek bir değer döndürdüğünü unutmayın.

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

Bir REST API'si oluşturma

Sunucumuzu service.pyaşağıdaki içeriğe sahip bir dosyada oluşturacağız . Sunucu kapasitemizi içeri aktarıyor flaskve requestele alıyoruz ve similaritymotoru daha önce yazdığımız modülden içeri aktarıyoruz.

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)

Sunucumuz oldukça çıplak kemiklerdir, ancak @app.routedekoratör kullanarak daha fazla rota oluşturarak kolayca genişletilebilir .

API Çağrıları Yapma

Sanal ortamımızı etkinleştirmek, paketlerimizi yüklemek ve ilişkili Python dosyasını çalıştırmak için aşağıdaki komutları çalıştırarak Flask sunucumuzu çalıştırabiliriz.

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

Sunucumuz adresinde mevcut olacak localhost:8000. Veritabanımızı sorgulayabilir localhost:8000/similarity?word1=cat&word2=dogve yanıtı tarayıcımızdan veya başka bir AJAX istemcisi aracılığıyla görüntüleyebiliriz.



Leave a Comment

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun