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クライアントを介して応答を表示できます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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

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

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