PIONE
PIONE(ピオーネ: Process-rule for Input/Output Negotiation Environmentは、
PIONEは、ヘテロな計算機資源を有効に利用した分散環境での、入出力ファイル群のプロセス処理としてのワークフロー処理を実現するためのプラットフォームです。HadoopによるMapReduceや日立が提唱しているグリッド・バッチソリューションなどが目指すものに似ていますが、PIONEが優位な点があります。
ヘテロな計算機資源:特性(PIONE)によって定義され、ホストごとに異なる機能をもつ計算機群のことを指す。
ワークフロー処理:PIONEにおけるワークフローとは、入力ファイル群(パラメータ含む)からあるアクション(動作)を行って、出力ファイル群をつくるものの集まりのことを指す。
その詳細は、PIONEの詳細をご覧下さい。
歴史的経緯
makeによる記述方法の不足を補い、かつ、分散環境/クラウド環境での実行を可能とした、プロセス定義書のためのプラットフォームとして開発してきました。その中で、特に気にしたのが、ホストごとで得意な計算が異なる小規模なラボの計算機環境にありました。GPGPUを搭載したホスト、メニーコアを搭載したホスト、マルチコアホストなどがあります。さらに加えると、電子顕微鏡などの先端機器が接続したホストもあります。これらを有効に利用するシステムはないかと検討しましたが、適切なものはありませんでした。そこで、PIONEの開発へと至りました。
ちょうど、JSTからSENTANのソフトウェア開発予算を頂き、プロセス定義書に基づいた分散処理システムの開発を、2011年より「(株)なうデータ研究所」と共同開発することになりました。
2013年12月には、第6回FUKUOKA Ruby大賞の奨励賞をいただきました。2015年3月には引き続き、pione-webclientに対して、第7回FUKUOKA Ruby大賞の奨励賞をいただきました。
機能上の特徴
第一に、入出力ファイルリスト、及び、パラメターの編集時間を更新判定基準に利用し、ワークフローに従ったプロセス制御がなされます。また、makeと異なり、フローは解析順に従ってなされ、ストリーム型入力にも対応することにしています。このことから、電子顕微鏡写真を撮りおわった段階から随時作業に対応していけるようになります。 更に、ワークフローパラダイムによるフローのパータンニング、ログのマイニングなどの情報技術を取り込んでいくことができるような方向性を検討しています。
第二に、クラスタ環境、クラウド環境を含む並列処理環境、とくに、それぞれのサーバ毎に機能性が異なるヘテロな環境での並列プロセスの実行を意図した作りになっています。現在は、LINDA形式のタプル空間を利用した並列処理環境を採用し、クラウド型のファイルサーバ(dropbox等)にも対応しています。このことは、TRONプロジェクトがめざす「協調型機能分散システム」に近いイメージをもつ概念で、それぞれのエージェント(タスクワーカー)が、特性(feature)に応じて、協調して仕事をします。その中では、ネゴシエーション(negotiation: 交渉)が重要となる、「関係構築交渉型分散処理環境」とよぶべきものであることを考えています。
技術上の特徴
技術的には、次の点に注目しています。
アルゴリズム関連
前向き推論: makeで採用されていた後ろ向き連鎖(後ろ向き推論)ではなく、前向き連鎖(前向き推論)に変更しました。これらの推論規則は、これらは人工知能の分野で使われている推論規則です。前向き連鎖を採用したのは、変化に対応して行うべき処理の自由度を上げることを目的としたものです。
ルールベース:前向き推論を実践するために、データ駆動型のルールベースシステムを採用しています。また、これにより、エージェント間のネゴシエーションを実現しています。
ストリーム処理:変更があるたびに随時、プロセスが実行されるシステムとするために、ルールがストリーム処理に対応できるように設計しています。
LINDA: LINDA形式の並列処理環境を採用しました。これにより、タプル空間を共有空間として用いた並列処理(強調計算システム)が可能になりました。ネットワーク越しの並列計算処理が可能となる仕組みとなるように採用しました。
ワークフロー:ワークフローは、PIONEが目指すようなプロセス管理の分野で研究が進んでいる一つの研究パラダイムです。オブジェクト指向のデザインパターンのように、ワークフローもパターニングの研究が進んでいます。ここでは、PIONEの抽象的なワークフローに利用できると考えています。
ペトリネット:ペトリネットは、離散分散システムを数学的に表現する手法であり、分散システムを注釈付きの有向2部グラフを用いて、視覚的に表現します.ワークフローなどのシステムの動的な動きを表現する方法です。PIONEでは、ペトリネットで表現される分散システムに類似のシステムを表現できます.
特性(PIONE): それぞれのタスクを行うサーバ側が自らの特性を理解して、特性を活かせるタスクを優先的に実行する仕組み(feature)を持たせました。これにより、ネゴシエーションの後ろ盾となるそれぞれの個性を作り出しています。
PIONEの特徴
ファイルベース(PIONE):ファイルという単位のデータをInput/Outputの基礎としました。UNIXは、デバイスも含めて、全てファイルを単位としてOSが作成されています。ファイル(ストリーム含む)を単位とすることにより、個々のアプリケーションやAPIが独立して作成できるようになりました。このことがUNIXというOSを普及させた原因のひとつだと考えています。
隠蔽化パッケージ:隠蔽化されたルールを、パッケージを呼び出すことで利用することが出来ます。呼び出し順序をかえることで、オーバーライドすることが可能であり、パッケージの継承が可能となっています。それぞれの画像処理後とのフロールールを規定した後、特定のアクション・ルールを設定することで、同じ流れの画像処理を異なる処理方法を用いて実行することが出来ます。
標準フォーマット
PNML: PNML(Petri Net Markup Language)は、ペトリネットを表現するための標準フォーマットです。 http://www.pnml.org が正式なサイトです。PIONEでは、アクション、入出力をそれぞれトランジッション、プレートとして記述されたPNMLと具体的なアクションの内容を記述したMarkdownとから、PIONEの定義書を生成するためのコンパイラを用意しています。
Markdown: 具体的なアクションを記述するためにMarkdownを利用しています。PNMLと組み合わせて、定義書を表現できます。
XES:イベントログとしては、XES形式を採用することにしました。これは、ワークフローの研究分野などで標準化がすすんでいるものです。
PIONEのインストール方法
makeに替わる分散プロセス処理プラットフォーム(PIONE)のインストール方法を示します。現在、PIONEはgithubにて開発を進めています。
ユーザ向けガイド
PIONEの起動方法
ウェブブラウザ操作によりPIONEコマンドを実行するための準備を示しています。
PIONE Webclientチュートリアル
ウェブブラウザ操作によりPIONEコマンドを実行する方法を示しています。
エキスパート向けガイド
PIONEチュートリアル
PIONEの使い方を示したチュートリアルです。
PIONEチュートリアル-PNML
PIONEチュートリアル-XES
ログファイルをXES形式に変換し、ProMを利用して処理結果を確認する方法を示しています。
PIONEチュートリアル-package
PIONE定義書などをひとつにまとめたパッケージを作成する方法を示しています。
PIONEコマンド一覧
PIONEが提供するコマンドの一覧を示します。
機能別PIONEコマンド一覧
PIONEが提供するコマンドの機能別一覧を示します。
インタラクションAPI
PIONE Webclientにおいてユーザがインタラクティブに操作するために使用しているAPIを示します。
PIONEの式
PIONEの構文にて使用するメソッドを示します。