Table Of Contents

Next topic

ダウンロード

This Page

RaSC (Rapid Service Connector)

概要

RaSCは,国立研究開発法人 情報通信研究機構 情報分析研究室が開発した,ユーザプログラムを高速・高並列に実行可能にするフリーのミドルウェアです.

  • (参考文献) 田仲 正弘, 大竹 清敬, 鳥澤 健太郎, 田浦 健次朗, RaSC: 高速なストリーム通信をサポートする言語処理プログラムの高速化・高並列化ミドルウェア, 言語処理学会第20回年次大会, 2014. [発表スライド]

RaSCは,既存の形態素解析器や係り受け解析器などのプログラムを大量のWebページに高速に適用することを念頭に開発されたものであり,多種のユーザプログラムを複数起動し,それらを相互に接続して分散並列実行させるためのミドルウェアです.処理の例としては,一つのファイルやストリームにある複数件の入力に対して,ユーザプログラムを複数起動し,マルチコアCPUを活用して並列実行したり,複数の計算機上で分散実行することを容易にします.また,大規模データを分割して異なる計算機上に格納し,それぞれに対応する多種のユーザプログラムを複数起動し,分割されたデータをそれぞれ処理することで,大規模データの高速な処理が可能になります.また,自然言語処理を念頭においてはいますが,ユーザプログラムは自然言語処理のプログラムには限定されず広い範囲のプログラムに適用可能です.標準入力またはファイルから入力を受け取り,標準出力またはファイルに結果を出力するプログラムであれば,ほとんどの場合軽微な変更でRaSC上で分散実行することが可能です.

RaSC上で稼働するユーザプログラムのプロセスは,一度起動されると計算機に常駐します.そのため,辞書ファイルをロードする言語処理プログラムのように,巨大ファイルのロードなどにより起動時間が長くなっているプログラムであっても,効率的に実行できます.また,ユーザプログラムはネットワークを介して容易に利用でき,複数件の入力があった際には,複数の計算機上で並列化・分散実行することによって高速化されます.ユーザプログラム同士は,UNIXのパイプのように,簡便にストリーム通信により接続できる他,ユーザプログラムの実行はユーザが意識することなく並列に行われます (RaSC動作の概要 参照).

以下は,構文解析システム KNP をRaSC上で実行した例です.一行を1件の文として500行の入力を与え,それを複数の実行プロセスに割り振ることで,マルチコアCPUによる並列化(Intel Xeon X5675*2 上で8並列実行)で,5倍程度の高速化がなされています.また,オリジナルの入力ファイル (INPUT_TXT) における入力の順序は,出力ファイル (OUTPUT_TXT) でも保存されます(この例は, パイプでの入力を並列処理する で説明している手順で実現できます).

$ time cat INPUT_TXT | juman | knp > OUTPUT_TXT  # ユーザプログラムを直接実行する場合
real    2m28.456s   # 並列化なし
user    2m17.557s
sys     0m1.011s
$ ./server.sh KNPService 19999 start # KNPを実行するRaSCサービスを起動
$ time cat INPUT_TXT | java -cp ./lib/*: RaSCClient localhost 19999 > OUTPUT_TXT   # ホスト・ポートを変更すれば他の計算機ノードへもアクセス可能
real    0m29.402s   # マルチコアCPUにより並列化(Intel Xeon X5675*2 上で8並列実行)
user    0m0.566s
sys     0m0.045s

RaSCは,国立研究開発法人 情報通信研究機構が開発した大規模Web情報分析システム WISDOM X 及び対災害SNS情報分析システム DISAANA で使用されています.WISDOM Xにおける,係り受け解析・評価情報抽出・因果関係抽出などの各種解析を,一日あたり最大1億以上のWebページを対象に実行できます.

RaSC は LGPL v2.1 の下で配布されています.

ニュース

  • 2014/09/24: パッケージをアップデートしました (Version 1.0.2).
  • 2014/09/19: 英語のドキュメントページ を公開しました.
  • 2014/05/15: 様々な言語からMessagePack RPCで呼び出す にRubyからの呼び出し例を記載しました.
  • 2014/04/21: 東北大学の五十嵐祐貴さんが,音声認識エンジン Julius をRaSCから利用する手順を公開されたため (RaSCとJuliusを用いた音声認識サーバーの構築),「RaSC上で動作を確認したユーザプログラム」にJuliusを追加し,記事へのリンクを掲載させていただきました.
  • 2014/03/27: 「RaSC上で動作を確認したユーザプログラム」に, Enju, GENIA tagger を追加しました.
  • 2014/03/27: パッケージをアップデートしました (Version 1.0.1).
  • 2014/03/17: RaSC Version 1.0.0 を公開しました.

コンテンツ

RaSC上で動作を確認したユーザプログラム

以下の表にはRaSC上での動作を確認したユーザプログラムを掲載しています. また,ユーザプログラムをRaSC上で稼働させるために必要な サービス定義XML を掲載しています.サービス定義XMLは,ユーザプログラムのコマンドラインや,並列実行における並列数などを指定するための設定ファイルです.サービス定義XMLの利用方法については, MessagePack RPCでユーザプログラムを呼び出す (MessagePack RPCのみで利用する場合) , 各種のネットワーク呼び出しプロトコルに対応させる (JSON RPC, ProtocolBuffers, SOAPを利用する場合) を参照してください.

Note

ダウンロードできるXMLについては,ユーザプログラムやモデルファイルなどのパスは環境に合わせて設定してください.

ユーザプログラム サービス定義XML 備考
形態素解析器 MeCab サービス定義XML, サービス定義XML (8並列実行設定)  
形態素解析器 Juman サービス定義XML, サービス定義XML (8並列実行設定)  
構文解析器 J.DepP サービス定義XML, サービス定義XML (8並列実行設定) MeCab等とパイプで接続するシェルスクリプトを用意する必要があります (複数のユーザプログラムをパイプで接続してRaSC上で動作させるには を参照)
構文解析器 KNP サービス定義XML, サービス定義XML (8並列実行設定) Jumanとパイプで接続するシェルスクリプトを用意する必要があります (複数のユーザプログラムをパイプで接続してRaSC上で動作させるには を参照)
構文解析器 Enju サービス定義XML, サービス定義XML (8並列実行設定)  
GENIA tagger サービス定義XML, サービス定義XML (8並列実行設定)  
音声認識エンジン Julius - RaSCとJuliusを用いた音声認識サーバーの構築 で,利用手順が説明されています (外部サイト: 東北大学の五十嵐祐貴さんによるブログ)
SVM Perf サービス定義XML SVM Perfのソースにパッチをあててからコンパイルし直してください (SVM Perfを使う を参照)
CRF++ サービス定義XML CRF++のソースにパッチをあててからコンパイルし直してください (CRF++を使う を参照)
TinySVM サービス定義XML TinySVMのソースにパッチをあててからコンパイルし直してください (TinySVMを使う を参照)

お問い合わせ

  • rasc-user [at] ml.nict.go.jp: 利用に関する質問,要望等のためのメーリングリスト
    • 参加するには,#subscribe ご自身のお名前※メールアドレスではありません. お名前の記述は,ローマ字にするなどしてASCII文字でお願いします ) という行を含むメールを, rasc-user-ctl [at] ml.nict.go.jp に送り,返信されたメールに記載の手続きに従ってください.
    • 投稿は原則として英語でお願いします.
    • 参加ユーザのみが投稿できます.
  • rasc-contact [at] ml.nict.go.jp: 上記以外のお問い合わせはこちらにお願いします.

[at] はアットマークで置き換えてください.

リンク