meta-something

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

スイスで3ヶ月間の留学を完走した感想

昨年2017年秋~冬にかけて経験した3ヶ月ほど滞在したスイスのCSCSで行った海外留学について書いてみます。ほとんど研究内容には触れず、かなり一般的な話です。タイトルにある通り、研究というよりもただの感想です。

海外留学の概要

  • 滞在場所
    • Lugano, Switzerland
  • 渡航期間
    • 2017年9月中旬 ~ 2017年12月中旬(約3ヵ月間)
  • ホスト機関
    • Swiss National Supercomputing Centre
      • (Italian: Centro Svizzero di Calcolo Scientifico; CSCS)
  • 研究内容(ざっくり)

CSCSについて

www.cscs.ch

  • スイス連邦工科大学(ETH Zurich)の運営するスーパーコンピューティングセンター
  • 正式名称はSwiss National Supercomputing Centre (Italian: Centro Svizzero di Calcolo Scientifico) で、イタリア語の頭文字を取って CSCSと呼ばれる
  • 2017年7月のTOP500において3位にランクインしたPiz Daintを運用している
  • スーパーコンピューターに関連するインフラ基盤から応用研究のアプリケーションまで、HPC分野の研究者が幅広く所属する

f:id:MetaVariable:20180405142654j:plain
山頂から見下ろしたルガーノ湖と市街

全体的なスケジュール

時期 内容
2016.12 - ? 受け入れ先の候補を探す
2017.3 - 2017.4 受け入れ交渉
2017.4 - 2017.5 滞在ビザ等の調整
2017.9.19 渡航(日本→スイス)
2017.12.15 帰国(スイス→日本)

受け入れ先の交渉(?)

もともとHPC環境向けのコンテナ型仮想化OSSであるSingularityShifter等に興味があったので、主にコンテナ型仮想化をキーワードに関連する論文の著者や研究機関を探していたところ、色々な幸運に恵まれてShifterの研究開発・運用を行うCSCSに海外留学(インターンシップ)として参加できることになった。

スイス渡航にあたってのあれこれ

スイス渡航にあたって少し面倒だったのがビザの扱い。 基本的には90日以内の滞在の場合、日本国籍の人はスイス入国にビザ/査証は必要ない大使館情報)のだが、今回の滞在はこれが適用できなかった(微妙に合計90日を超えていたので)。

上記が適用できない場合、スイスの居住地を管轄する現地の行政組織(カントン)に滞在許可発行確認書を直接申請する必要があるのだが、現地の行政機関のページを覗いてみると日本語はもちろん英語情報もなく、イタリア語だったため、非常に困った。

結局、留学先の事務担当の方に必要書類を取得して頂いて、国際郵便で届けてもらうことで解決した。留学にあたっては受け入れ機関の事務の人が手続きしてくれる場合が多いらしいので、頑張って英語メールを書きましょう。

研究環境とか開発環境とか

今回はCSCSでHPCシステム(PizDaintを含む)の運用や研究開発を担当するHPC Operasions部門のSystem Integration Teamに参加して3ヵ月間を過ごした。 共同研究者用の広めのスペースでデスクを1つ借りて、持ち込んだSurface Bookで毎日Shfiterのコーディングしたり、テスト環境でコードをテストしたり、開発中コードの性能をメンバーと議論したり。

ミーティングはほぼ毎週行われ、進捗状況・計測データ・採用したアルゴリズムなどを資料にまとめて、事前にSlackで共有後に30分~1時間程度メンバーと方針について議論をしていた。開発中の性能測定やデバッグにあたってはPizDaintを利用できた。また、サクッとベンチマーク走らせたりする上ではPizDaint上のShifterは結構便利だったので、個人的にはやっぱりHPC環境でもコンテナ使いたい。

ちなみにミーティング資料について特に何も指定がなかったのでMarkdownで書いていたが、Visual Studio Codeの機能含めてわりとウケは良かった。(Visual Studio CodeのMarkdown Preview機能 + PDF変換プラグイン

また、内部のソフトウェア開発ではGitLabをベースにしたCIパイプラインが運用されていて、

  1. 内部ネットワーク上でホストしているGitLabからcloneして開発
  2. PullRequest等をトリガーにGitLab CIのパイプライン開始、仮想テスト環境(Vagrant, Docker)を立ち上げてテストを実行
  3. テスト結果を見ながらレビューしたり諸々、大丈夫ならマージ
  4. コードマージ後、実テスト環境(PizDaintと同じ構成のマシン)で諸々の検証
  5. 問題なければ実際にリリース

という流れで開発と運用が行われていた。CS系の研究機関としてちゃんと開発ツールを使っている感じがあり、個人的にはとても居心地がよい場所だった。

最終日には滞在中の研究成果をまとめてCSCSスタッフの前でプレゼンテーションを行った。流石に緊張したが、それなりにスライドも作り込んで話したのでムードも悪くはなく、よい経験になったと思う。

f:id:MetaVariable:20180405143008p:plain

人間関係とか

基本的には毎日チームメンバーとお昼を一緒に食べていたのと、帰国前の最後の週にはメンバーの家でチーズフォンデュパーティーをしたりできたので、かなり仲良くなれたように感じる。

特にチームメンバーに過去に日本の国立大学で5年間ほど研究員をしていた人(ただし日本語は話せない)がいて、日本という共通のネタがあったこともあって、研究でも日常生活でも大変にお世話になった。また、チームメンバー以外でもスタッフ向けのパーティーやExcursionに参加して交流できたので結構充実していた。

その他

  • 居住地がイタリア語圏だったので主食がピザ、パスタ、ケバブ。深刻な野菜不足
  • 研究施設では英語が通じたが、市内は全くわからないイタリア語なので大変だった
  • 物価が高い(適当に安いものを食べても約10CHFくらい(≒約1200円)する)
  • 店舗の閉店時間が早い(19時には大手スーパー含めて閉店、日曜日は何処も開いていない)

完走した感想

これまでも学会等で何度か海外出張に行く機会はあったものの、1ヶ月以上の長期滞在は初体験だったので、大変に緊張していた。とはいえ2週間も経つ頃には、同じコンピュータサイエンスの背景知識があれば多少不完全な英語でもミーティングは可能で、難しい表現がなくとも日常会話はできるということがなんとなく理解できて、いつの間にかすっかり生活に馴染んでしまった。

1ヶ月も経つ頃には宿泊施設のキッチンでのんびり料理しながらチームメンバーオススメの専門書を読むのを楽しんだり、週末にはまた別の人にオススメされた観光地に旅行へ行ったり、CSCSでの研究作業が順調だったのもあって、いつの間にか海外での研究生活を楽しむ自分が居た。

興味がある対象の研究開発ができて、目の前のことに集中できる環境って、素晴らしいですね。。。

特によく言われる「限られた時間で最大限の仕事を行う」という意識はチームメンバーとの議論でも強く伝わってきたので、この意識は日本に持ち帰ってからの研究にも活かしたいところです。

おまけ:週末の旅行

欧州に長期滞在する機会は今後あるかわからないと思ったので、週末には長距離バスでイタリアの首都(ミラノ)、特急で片道4時間でヴェネツィアに旅行に行ったり、電車でチューリッヒに行ったりした。文化的な土台が違うと街並みも観光の名所も違って面白いですね。特にヴェネティアは人生で最も行ってみたい場所だったので、旅行的な意味ではもう悔いがないです。

f:id:MetaVariable:20180405142429j:plainf:id:MetaVariable:20180405142330j:plainf:id:MetaVariable:20180405141722j:plain
欧州旅行(ミラノチューリッヒベネツィア

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

https://speakerdeck.com/metavariable/reproducibility-of-computational-workflows-is-automated-using-continuous-analysis

感想

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