Skip to content

A framework to serve various generative AIs and other machine learning functions via WebSocket and JSONRPC.

License

Notifications You must be signed in to change notification settings

openlangrid/mlgrid-services

Repository files navigation

機械学習サービス基盤 - mlgrid-services

mlgrid-servicesは、様々な機械学習ソフトウェアをWebサービスとして提供する機械学習サービス基盤です。 定義ファイルを読み込んでサービスを登録する機能、JSON-RPC(又はBSON/WebSocket)でのサービス呼び出し機能、GPU管理機能(GPUを使用するサービスにラウンドロビンでGPUを割り当て。一部サービスのみ対応)などを備えています。 Java17およびSpringbootを使って開発されています。

現在以下の17種類のサービスインタフェースが定義され、214のサービスが実装されています。以下はインタフェースの一覧と、各サービスに使用されている学習モデルや外部サービスです。学習モデルを利用するための環境はDockerコンテナとして構築されています。procsディレクトリ以下にそれぞれのモデル毎の設定ファイルや実行スクリプト(bash, pythonなど)が格納されています。各モデルの利用により生成されたデータの扱いは、それぞれの利用規約を参照してください。

起動方法

必要なハードウェア

mlgrid-servicesに含まれている多くのサービスは、GPUを利用します。どのサービスがどの程度のGPUを使用するかは、 各学習モデルのドキュメント等を参照してください。 開発・テストにはNVIDIA Quadro RTX A6000(48GB RAM)を利用しています。

必要なソフトウェア

以下のソフトウェアを使用しています。mlgrid-serviceを起動するシステムに、あらかじめインストールしておく必要があります。

ビルド方法

準備

まず、このリポジトリをcloneし、設定ファイルをコピーしてください。

git clone https://github.com/openlangrid/mlgrid-services/
cd ./mlgrid-services
cp ./src/main/resources/application.yml ./application.yml

次に、コピーした設定ファイル(./application.yml)の内容を環境に応じて編集してください。

server:
  port: ${SERVER_PORT:8080}
  servlet:
    context-path: ${CONTEXT_PATH:/mlgrid-services}

services:
  langrid:
    url: ${LANGRID_URL:https://langrid.org/service_manager/invoker/}
    username: ${LANGRID_USERNAME:langrid-user}
    password: ${LANGRID_PASSWORD:langrid-pass}

  keras:
    docker-service-name: ${KERAS_SERVICE_NAME:keras-gpu}

  empath:
    endpoint: ${EMPATH_ENDPOINT:https://api.webempath.net/v2/analyzeWav}
    api-key: ${EMPATH_APIKEY:empath-api-key}

  google:
    tts-api-key-file: ${GOOGLE_TTS_APIKEY:./google-tts-key.json}

言語グリッド, Empath, Google Cloud TTS を利用する場合、それぞれのURLや認証情報を変更してください。

Kerasを用いた画像認識でCPUを使用する場合は、keras.docker-service-nameをkeras-cpuに変更してください。

ビルド

上記の準備を行なった上で、JDK17をインストールし、以下のコマンドを実行してください。

./gradlew build -x test

起動方法

ビルド後、以下のコマンドを実行すると、mlgrid-servicesが起動します。

java -jar ./build/libs/mlgrid-services-0.0.1-SNAPSHOT.jar

簡易UIによる動作確認

mlgrid-servicesが起動すると、以下のURLで、簡易UIが利用できます(簡易UIのビルド結果がmlgrid-servicesのsrc/main/resouces/static/ 以下に取り込まれており、それがブラウザに返されます)。

http://localhost:8080/mlgrid-services/index.html

簡易UI

サービスの種別毎にタブが表示され、タブ内にサービスとサービスへの入力を指定するテキストボックスや画像ファイルなどを選択するボタン、実行ボタンなどが配置されています。入力を指定し、実行するサービスをチェックし、実行ボタンをクリックすると、サービスが実行され結果が表示されます。

多くのサービスが、実行されるたびにDockerを用いて環境構築、モデルのロード、実行を行うため、相応の時間がかかります(十数秒から数分)。

Acknowledgements

このソフトウェアは、科研費19K20243の助成を受けた研究において作成されたものです。

References

  • 中口孝雄. 機械学習システムへの複合サービス技術の適用. 電子情報通信学会技術研究報告; 信学技報, 2019, 119.178: 39-40.
  • 中口孝雄. 機械学習サービスを登録・提供するサービス基盤の構築に向けて. NAIS Journal, 2021, 15: 66-73.

About

A framework to serve various generative AIs and other machine learning functions via WebSocket and JSONRPC.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published