Word2VecとFlaskを使用してディープラーニングREST APIを作成する方法

本番環境で複雑な機械学習モデルを使用する場合、従来の開発アプローチを維持することは困難です。ラップトップまたはローカルマシンでの開発は、ディープラーニングエンジニア向けの機械学習モデルのトレーニングに時間がかかる場合があります。その結果、私たちは通常、より強力なハードウェアを備えたクラウドマシンを使用して、機械学習モデルのトレーニングと実行の両方を行います。複雑な計算を抽象化し、代わりに必要に応じてAJAXリクエストを行うため、これは良い方法です。このチュートリアルでは、REST APIを一から構築して、事前トレーニング済みのWord2Vecというディープラーニングモデルを他のサービスで利用できるようにします。

前提条件

  • 4GB以上のRAMを備えたUbuntu 16.04サーバーインスタンス。テストと開発の目的で、4GB RAMのインスタンスを選択できます
  • Linuxオペレーティングシステムを使用してフォルダーとファイルを作成/移動/編集する方法の理解
  • sudoユーザー

単語の埋め込みとは何ですか?

単語の埋め込みは、自然言語処理とディープラーニングの最近の発展であり、急速な進歩により両方の分野に革命をもたらしました。単語の埋め込みは、基本的にはベクトルであり、それぞれが単一の単語に対応するため、ベクトルは単語を意味します。これは、のベクトルなどの特定の現象によって示されking - queen = boy - girlます。単語ベクトルは、レコメンデーションエンジンから実際に英語を理解するチャットボットまで、あらゆるものを構築するために使用されます。

単語の埋め込みはランダムではありません。これらは、ニューラルネットワークをトレーニングすることによって生成されます。最近の強力な単語埋め込みの実装は、Word2Vecという名前のGoogleに由来しています。これは、言語内の他の単語の隣に現れる単語を予測することによってトレーニングされます。たとえば、単語の"cat"場合、ニューラルネットワークは単語"kitten"とを予測します"feline"。互いに近くに現れる単語のこの直感は、ベクトル空間にそれらを配置することを可能にします。

ただし、実際には、Googleのような他の大企業の事前トレーニング済みモデルを使用して、プロトタイプを迅速に作成し、導入プロセスを簡略化する傾向があります。このチュートリアルでは、GoogleのWord2Vec事前トレーニング済み単語埋め込みをダウンロードして使用します。これを行うには、作業ディレクトリで次のコマンドを実行します。

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

FlaskおよびMagnitudeパッケージのインストール

ダウンロードした単語埋め込みモデルは、ある.magnitude形式です。この形式により、SQLを使用してモデルに効率的にクエリを実行できるため、運用サーバーに最適な埋め込み形式です。.magnitudeフォーマットを読み取る必要があるため、pymagnitudeパッケージをインストールします。またflask、モデルによって行われたディープラーニング予測を後で提供するためにインストールします。

pip3 install pymagnitude flask

また、次のコマンドを使用して、依存関係トラッカーに追加します。これにより、という名前のファイルが作成され、requirements.txtPythonライブラリが保存されるため、後で再インストールできます。

pip3 freeze > requirements.txt

Word2Vecモデルのクエリ

まず、埋め込みという単語のオープンとクエリを処理するファイルを作成します。

touch model.py

次に、次の行をmodel.pyに追加して、マグニチュードをインポートします。

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

このメソッドpymagnitudeを使用しqueryて、単語の引数を提供することで、パッケージとディープラーニングモデルをいじることができます。

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

APIの中核として、2つの単語の意味の違いを返す関数を定義します。これは、レコメンデーションエンジンなどのほとんどのディープラーニングソリューションのバックボーンです(つまり、類似した単語でコンテンツを表示する)。

similarityand most_similar 関数を使用して、この関数を試すことができます。

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

類似度計算機は次のように実装します。このメソッドは、次のセクションでFlask APIによって呼び出されます。この関数は0と1の間の実際の値を返すことに注意してください。

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

REST APIの作成

service.py次の内容のファイルにサーバーを作成します。サーバー機能をインポートflaskrequestて処理し、similarity以前に作成したモジュールからエンジンをインポートします。

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)

私たちのサーバーはかなり必要@app.route最低限のものですが、デコレーターを使用してさらにルートを作成することで簡単に拡張できます。

API呼び出しを行う

次のコマンドを実行してFlaskサーバーを実行し、仮想環境をアクティブにして、パッケージをインストールし、関連するPythonファイルを実行できます。

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

私たちのサーバーはで利用可能になりますlocalhost:8000。でデータベースにクエリを実行localhost:8000/similarity?word1=cat&word2=dogし、ブラウザまたは別のAJAXクライアントを介して応答を表示できます。



ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、