meta-something

論文とか研究とか趣味のネタとか

ISC2017のメモ

個人的なまとめ

  • 小電力効率GREEN500で東工大TSUBAME3.0が首位にランクイン
  • LINPACK性能TOP500首位は相変わらず中国Sunway Taihulight
    • 3位にスイスCSCSのPiz Daint
  • バイオインフォ関係のセッションが結構多い(初日Keynote, Session, Workshop, …)
  • LinuxContainer関連ワークショップあり(後述)

ISC2017とは

http://isc-hpc.com/id-2017.html

スーパーコンピューティングの国際会議。ISCはInternational Supercomputing Conferenceの略。規模的には北米で開催されるSCに次いで大きい。ドイツの会社が主催しているらしい。今回は(も?)ドイツのフランクフルトで開催された。

初日のKeynoteが生体ネットワークの数理グラフ的解析とゲノム・プロテオームへの応用事例とHPC基盤のお話だったり、High Performance Computing in Life Sciencesというライフサイエンスそのままなセッションがあったり、結構バイオインフォ関係のセッション多め。内容的には解析手法の紹介とかスクリーニングの紹介、ライフサイエンス業界のツールのプログラム品質問題とか。あとはクラウド利用のユースケース紹介が多くてわりと学びがあったのと、HPC領域でも結構クラウド利用が普及している実感が得られた。

Linux Container to optimise IT Infrastructure and High-Performance Workloads

一番興味があったのが最終日のLinux Container関連のワークショップ。スライド,Youtubeビデオが公開されているのであとから見直すのも楽ですごくいい。

qnib.org

HPC基盤上のコンテナ仮想化実現のためのOSS:Singularityの紹介、SingularityのKubernetes拡張の話、Dockerの動向、ゲノム解析センターのDockerによるワークフローオーケストレーション、などなど。

特にゲノム解析センターの話は、以前に自分のスライドの中で概要を引用した話だったので興味があった。

peerj.com

www.univa.com

ゲノム解析パイプラインのライブラリ管理は難しく、パイプラインを構成するツール毎のライブラリ依存性が複雑怪奇で、しかもそのバージョンに依存して出力結果に差異が発生するので、再現性を確保するために容易にバージョンを更新できない。バージョンを固定したいが、ずっと上げないわけにもいかない。 このレポートのシステムでは、Univa Grid Engineの提供するDocker機能とワークフロー管理Next Flowを使い、ジョブ投入スクリプト「使用したいツール(コンテナ)」「使用したいバージョン(タグ)」を指定してジョブを投げると、以下の感じに処理してくれる。

  1. ワークフロー管理ソフトが全体の進行管理
  2. ジョブスケジューラが計算資源を確保
  3. 確保されたノード上に指定されたコンテナが稼働
  4. スクリプト処理を実行、次のタスクへ

各バージョンはコンテナ毎にファイルシステムの差分で管理されているので省容量で楽、競合するライブラリの管理もしないでよい。

ただ、他のセッションでもMPI通信をガリガリ実行するHPCアプリのコンテナ運用話は扱われているのを見たことがない(ベンチマークはちらほらあるけど)ので、うーん。

論文紹介「Reproducibility of computational workflows is automated using continuous analysis」

タイトル

Reproducibility of computational workflows is automated using continuous analysis

著者

Brett K Beaulieu-Jones, Casey S Greene

  • Perelman School of Medicine, University of Pennsylvania

掲載情報

Nature Biotechnology, vol.35, No.4, pp.342-346, 2017.

  • Nature関連誌、生命工学分野ではトップジャーナル
  • 2-year IF=43.113 (2016)
    • 参考:Nature, IF=38.138 (2016)

www.nature.com

キーワード

Bioinformatics, Continuous Integration, Docker, Reproducibility

概要

計算機上で実施される研究成果(特に計算科学の応用分野)の再現性の問題解決のために、ソフトウェア開発の手法である継続的インテグレーション(Continuous Integration)を導入する論文。 既に公開済みの論文でも、計算結果の再現に必要なデータセットやソフトウェアの情報をすべて記載しているものは少なく、環境依存により同じ結果が得られない場合もある。 著者らは、バージョンの差異やソフトウェア情報を明記は必須であるほか、コンテナ型仮想化技術などを利用した(データやソフトウェアを含む)実行可能な環境で成果を公開することで再現性が担保されると主張している。 さらにGit等のバージョン管理システムと連携した継続的インテグレーション(CI)サービスを導入し、ツールやデータの変更をトリガーに自動的にクラウド上でテスト実行を実施して再現性を担保し続けることで(ソフトウェア開発者と同じように)研究者は研究作業に集中できる。 同時に、検証が容易で再現可能な形式の普及は科学の健全性を押し上げることに繋がり、短期的にも論文のレビュワーや読者が論文を検証する場合に極めて役立つ。

なお、この論文のCI利用例などは以下のリポジトリで公開されている。

github.com

紹介スライド

SlideShare, SpeakerDeckともにスライド内容は同じです。

SlideShare

www.slideshare.net

SpeakerDeck

speakerdeck.com

感想

ソフトウェア開発者兼研究者として、研究成果を再現可能な形で公開して、可用性と健全性を同時に保つことは自然な流れだと思っている。 そのためにはGitHubによるコードの公開、DockerHubによる環境導入の障壁の撤廃が必要であるし、その次に継続的インテグレーションが来るのは極めて自然。 もちろん、こうした流れに乗るのはタダでできるわけではなく、準備なり作業なり必要ではある。が、情報工学では大企業の影響で開発と研究の境目は曖昧になりつつあり、開発者兼研究者として自らの活動を広める上でソフトウェア開発のエコシステムを積極的に取り入れるのは、自らの商業・研究の両方の市場価値を高めるアプローチになる、と思う。(このブログもその活動の一環であるし)

SIGBIO49(とOpen-BIO21)で発表してきました

2017年3月23日に北陸先端大学(JAIST: Japan Advanced Institute of Science and Technology)で開催された、第49回情報処理学会 バイオ情報学研究会(SIG BIO 49)に参加して研究報告をしてきました。

タイトル

  • 『コンテナ型仮想化による分散計算環境におけるタンパク質間相互作用予測システムの性能評価』
  • 『Evaluation of Container Virtualized MEGADOCK System in Distributed Computing Environment』

概要

本研究室で開発されたタンパク質間相互作用予測システムMEGADOCKについて,クラウド上に構築したコンテナ型仮想化による分散計算環境を用いて計算性能の評価を行う. コンテナ型仮想化技術としてLinuxコンテナの実装の1つであるDockerを採用し,仮想マシンの並列数を増加させた際の並列実行性能を調査する.

We evaluate the performance of MEGADOCK system using container virtualization technology in distributed computing environment on cloud. MEGADOCK is a Protein-Protein-Interaction Prediction System for heterogeneous supercomputers. We chosed Docker as a container virtualization technology for Linux container implementation and evaluated parallel execution performance while increasing the number of virtual machines.

ということで

  • Dockerコンテナイメージを作成して何もしない状態からの性能変化を計測
  • 対象はバイオインフォマティクス領域の極めて計算律速なアプリケーション(MEGADOCK
  • 実験は単一ノード実行と並列ノード実行で2種類
    1. ローカルの物理マシン1台上で、通常時とコンテナ内で実行性能を比較(GPU使用も含む)
    2. クラウド環境上の仮想マシン複数台で、MPI並列時の実行性能を比較
  • 結論:計算処理は若干落ちる(0~6%)が、GPU処理の影響はほぼない。クラウド環境上の並列実行時は差はほとんど見えなかった。

クラウド環境のGPUインスタンスを利用してMPI+GPU並列の計測をしたかったものの、DockerからGPUを使うためのNVIDIA-Dockerが、クラスタ上のコンテナ管理のためのDockerSwarmに現時点で対応してなかったため、報告では断念。Kubernetesとか使うとできそうなので、別の場所に報告するつもりです。

スライド

speakerdeck.com

Citation

日本語

青山健人, 山本悠生, 大上雅史, 秋山 泰, “コンテナ型仮想化による分散計算環境におけるタンパク質間相互作用予測システムの性能評価”, 情報処理学会研究報告 バイオ情報学, 2017-BIO-49(3) pp.1-8, 2017.

英語

Kento Aoyama, Yuki Yamamoto, Masahito Ohue, Yutaka Akiyama, “Evaluation of Container Virtualized MEGADOCK System in Distributed Computing Environment”, IPSJ SIG Technical Report, 2017-BIO-49(3), pp.1–8, 2017.


第21回 オープンバイオ研究会

github.com

少しあとに共同開催されたオープンバイオ研究会で、全員参加型の「4コマプレゼン」というライトニングトークのようなセッションがあったので、コンテナ型仮想化の宣伝とMEGADOCKのサンプル実行のデモを行いました。

スライドは即興で作成したものなのでクオリティは低めです。

qiita.com

ゆるふわなDockerの使い方(Docker布教)

Speaker Deck

speakerdeck.com

なにこれ

研究室でDockerの使い方を布教したときのスライドです。 ゆるふわに「とりあえずどんな感じで使えるのかわかればいいや」という感じの内容です。

なんでそんなことを

  • 個人が使う場合でも便利なツールだから
    • 研究領域のアプリケーション配布にもDockerがもっと普及して欲しい
  • 自身の研究を話すときの理解の助けになる
    • 味方を増やしたいのと、人に説明する練習として
  • 東工大が2017年夏に稼働を予定するスパコンがコンテナ型仮想化を前提にするらしい(?)ので、コンテナ型仮想化について知っておいて損はない

個人的な参考資料とか

www.slideshare.net

www.slideshare.net

論文紹介『An Updated Performance Comparison of Virtual Machines and Linux Containers』

タイトル

An Updated Performance Comparison of Virtual Machines and Linux Containers

著者

Wes Felter ♰ , Alexandre Ferreira ♰ , Ram Rajamony ♰ and Juan Rubio ♰
IBM Research Division, Austin Research Laboratory

発表媒体

  • IBM Research Report, RC25482 (AUS1407-001), 2014.
  • IEEE International Symposium on Performance Analysis of Systems and Software, pp.171-172, 2015.

概要

Linux Container (Docker)と Virtual Machine (KVM)を比較対象に CPU, メモリ, ネットワークI/O, ファイル I/O の性能をベンチマークや DB を利用した模擬アプリ等を利用して計測した論文. 設定に依存するが Docker は KVM と同等またはそれ以上で,実環境に近い性能を示している.

スライド(英語)

speakerdeck.com

その他、日本語の紹介文献

blog.yuuk.io speakerdeck.com

『プログラマのためのDocker教科書』感想

数か月前からちまちまDockerを調べては触ってきたのだけれど、そろそろ情報がまとまった書籍を元に知識を整理したくなったので読んでみた。

本書は、Linuxのコンテナ仮想化ツールであるDockerを使って、コードでインフラ環境を構築するための入門書です。開発環境や実行環境などインフラ構築「自動化」の経験がない開発者を対象に、おさえておきたいシステム基盤&インフラの基礎知識に加えて、Dockerによるインフラ構築と管理の方法をやさしく解説します。理解しにくいネットワークや仮想技術などのインフラの基礎概念を図解しながら、開発/実行環境を実際に構築することで、構成管理ツールを使ったインフラ構築の流れを解説していきます。

目次は以下の通り。

  1. おさえておきたいシステム/インフラの知識
  2. コンテナ仮想化技術とDocker
  3. Dockerのインストールと基本コマンド
  4. Dockerfileを使ったコードによるサーバ構築
  5. Dockerイメージの共有─Docker Registry
  6. 複数コンテナの一元管理─Docker Compose
  7. マルチホスト環境でのDocker運用─Docker Machine、Docker Swarm
  8. クラウドでのDocker運用

コンテナ型仮想化技術の難しい&細かい技術の記述は控えめに、インフラの基礎知識を簡単に前置きしたあと、実行環境の仮想化を実現するために「Dcokerをどう使えるか」がまとめてある。「Dockerで何ができて、何が嬉しいのか?」を知りたい入門者向けにはとても良い内容であり、特に1~4章はインフラの基礎知識とDockerの用例が実際のコマンドレベルで書かれているので、社内研修の教科書とかに使えるのでは?という印象を受ける。細かい内容はQiitaとか公式ドキュメントとか個人ブログを見ればもっと詳しく記述されている記事があるけれど、やはり全部まとめて書かれた書籍があることは大事。個人的に身内でDocker利用を布教したいと考えていたので、他人への紹介や参考書としても重宝しそう。

ただし、Docker周辺技術はあまりにも変化が早いので、既に一部記述が最新ではない部分があったりなかったり。本書は初版が2015年11月19日と約1年前なのだけれど、7,8章で触れられているクラスタ管理技術であるDocker Swarmについては、2016年6月末にDocker Engineと統合されてDocker Swarm Modeとしてより簡単にネットワークやサービスの構築が利用できるようになっている。

docs.docker.com

qiita.com

その部分は本書ではおまけのような扱いなので、あまり気にする必要はない(クラスタ管理するような人は、たぶん自分で調べられるだろうし)。特に前半~中盤のコアなDockerコマンド周辺はそうそう変化があるものではないだろう。 総じて、Dockerという技術を利用したいが何処から手を付ければよいのか…という人向けの教科書として良書である。

Docker-Sharif-Judge

DockerでSherif-Judgeを構築する記事をQiitaに書いて、あとGitHubで公開しておきました。

github.com

qiita.com