Git Product home page Git Product logo

mlgrid-services's Introduction

機械学習サービス基盤 - 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.

mlgrid-services's People

Contributors

takawitter avatar m04uc513 avatar

Stargazers

luffycheung avatar  avatar

Watchers

Thich AI avatar  avatar  avatar  avatar  avatar  avatar Mardan Hoshur avatar  avatar

mlgrid-services's Issues

KerasのDenseNetをブラウザから呼べるようにする

  • org.langrid.mlgridservices.service.KerasService に定義を追加
  • org.langrid.mlgridservices.service.ServiceInvokerに定義を追加
  • src/main/resources/static/http.htmlに定義を追加して動作確認
  • src/main/resources/static/websocket.htmlに定義を追加して動作確認

エラーが返ってきた際に表示する

  • 翻訳でエラーが返ってきた際に表示
  • 画像認識でエラーが返ってきた際に表示
  • オブジェクト検出でエラーが返ってきた際に表示

現在"processing..."と表示している部分(結果が返ってくると結果で置き換わる)にエラーが返ってきた場合はエラー内容を表示する。

APIキー発行機能を追加する

ログインした状態でAPIキーを発行画面からAPIキーを発行できるようにする。
発行時に、アクセス元ドメイン(localhostもあり。)を登録し、CORSで外部からAPIを叩けるようにする。

ユーザ登録・ログイン機能を追加する

各サービス呼び出し画面はログイン状態でしか利用できないようにする。
ログインせずにサービス呼び出し画面にアクセスするとログイン画面にリダイレクト。

Mockサービスを追加する

各種画面の動作確認用に、モック版のサービス(実際にはサービス実行を行わない)を追加する。

  • モック翻訳(Translation)サービスの追加
  • モック画像認識(ImageClassification)サービスの追加
  • モックオブジェクト検出(ObjectDetection)サービスの追加

上記からissueを作成して作業してください。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.