Amazon Web Services ブログ

大規模なタンパク質構造予測を行うための研究者向けウェブアプリを構築するには

はじめに

タンパク質の構造を理解することは、その働きを知るうえで非常に重要な要素であるだけでなく、創薬などの応用にも用いられます。このようなタンパク質の構造を予測するうえで、AlphaFold2OpenFold などの機械学習を用いたアルゴリズム・ソフトウェアは、多くの研究者にとって欠かせないものとなりつつあります。しかし各研究者の視点では、環境構築や処理を実行するためのハードウェアの管理は煩雑なものです。一方で、研究者を支える IT リソース管理者の視点では、研究者向けの計算リソースの準備や適切な統制・権限付与には大きな労力がかかります。

本ブログではこのような研究者と IT リソース管理者がかかえる課題に対して、purpose built なウェブフロントエンドと、それと連携したクラウド HPC 環境によるサンプル実装を紹介します。この構成では、研究者はシンプルなウェブフロントエンドから構造予測を行うためのジョブをバックエンドの HPC クラスタに投入することができます。

また IT リソース管理者は、スケーラブルな HPC 環境により計算リソース準備の負担が減ることに加え、研究者からのアクセスをこのウェブフロントエンドに絞ることで権限管理が容易になります。このように、単にクラスタをデプロイするだけでなく、用途やユーザーに応じて様々なインターフェースや構成をとれることは、クラウド HPC の非常に有用かつ面白い点です。

ウェブフロントエンドの実装例

上述したような研究者と IT リソース管理者がかかえる課題に対するソリューションとして、AWS Samples として公開された実装例をご紹介します(デプロイ方法についてはリンク先をご参照ください)。

この実装例では、Figure 1に示すような構造予測のジョブを実行するためのウェブフロントエンドを提供しています。研究者は、このウェブフロントエンドを利用することで簡単に AlphaFold2 を用いた立体構造予測を行えます。画面上部の入力欄に解析したい FASTA 形式のテキストを入力して、ジョブ作成ボタンを押すことで、ジョブ実行できます。また、その下にはジョブ一覧が表示されていて、実行状況を確認することができます。さらに、完了したジョブの結果を可視化したり、結果の PDB 形式のファイルをダウンロードすることも可能です。

AlphaFold2 webapp on AWS: User interface

Figure 1 – ウェブフロントエンドの実装例。研究者はシンプルなフォームに FASTA 形式のテキストを入力し、しばらく待つと構造予測の結果を得ることができる。

アーキテクチャ:ウェブフロントエンドと統合された HPC クラスタ

実際に、上のセクションで紹介したポータル画面を操作すると、裏側では何が起きているのでしょうか。以下のアーキテクチャ図(Figure 2)を用いて説明していきます。

ユーザがウェブフロントエンドを操作すると、API を経由してコンピューティング環境に指示が送られます(1)。例えば、ユーザが解析したい FASTA ファイルとともにジョブ実行を開始したとします。すると、Amazon API GatewayAWS Lambda を介して、FASTA ファイルが S3 バケットに保存されます(2)。また、AWS Systems Manager を経由して、AWS ParallelCluster で管理される HPC クラスターで、AlphaFold2 のスクリプトが実行されます(3)。AlphaFold2 を実行するのに必要なデータベースは、分散ファイルシステムであるAmazon FSx for Lustre に保存されており、HPC クラスターから高速にアクセスできます(4)。この FSx for Lustre は、裏側で S3 バケットと双方向に同期されている(5)ので、例えば Lambda から S3 バケットに書き込んだ FASTA ファイルなども、FSx for Lustre 上で利用可能です。また、この実装では ParallelCluster のジョブ管理に Slurm を利用していますが、ジョブ実行履歴の保存に Amazon Aurora Serverless v1 を利用しています(6)。

ここまでで、ウェブアプリ全体の動作概要を説明しましたが、実際には、ユーザが裏側の仕組みを意識する必要はなく、AWS コンソールの操作権限も必要ありません。クラウドを活用してタンパク質構造予測の解析してみたいけれども、所属組織で管理されている AWS アカウントのコンソール操作権限を持っていない、という場合でもこのウェブアプリを活用することができます。

また、ウェブアプリでは GUI で操作できるので、HPC を操作するための事前知識がない方でもご利用いただけます。

AlphaFold2 webapp on AWS: Architecture

Figure 2 – タンパク質立体構造予測を行うウェブアプリのアーキテクチャ図。ウェブフロントエンドから FASTA ファイルを 送信すると、Amazon API Gateway / AWS Lambda を経由して、AWS ParallelCluster にジョブが投入される。

アーキテクチャの各コンポーネントの詳細

ここまでで、アーキテクチャの全体像について紹介してきました。本節ではこのウェブアプリで活用されているサービスやコンポーネントについてより詳しく紹介します。

AWS CDK

このウェブアプリ全体は、AWS リソースをコードで定義できるツールである AWS CDK (Cloud Development Kit) で実装されていて、ほとんど自動で構築することができます。詳しい手順は実装例のリポジトリ内の説明に記載されていますが、バックエンド・フロントエンドの2つのパートをそれぞれ順番に CDK で構築して接続し、HPC クラスターを立ち上げて構造予測ツールを設定することでアプリ全体を準備することができます。

AWS ParallelCluster

ここで、HPC クラスター環境を構築する上での選択肢について触れておきます。今回のように、タンパク質構造予測のソフトウェアを実行するコンピュート環境の選択肢としては、AWS ParallelClusterAWS Batch も両方とも適しています。それぞれのサービスの概要を簡単に説明すると、ParallelCluster は、AWS 上で HPC クラスターの管理を容易にするツールで、すでに HPC クラスター環境を利用した経験があるユーザにおすすめです。一方、Batch はコンテナベースのジョブ実行を容易にするサービスで、裏側で動いている仮想サーバのことを意識する必要がなく、コンテナの利用に慣れているユーザにおすすめです。

ParallelCluster と Batch という2つのサービスの選択肢の中で、今回の実装例で ParallelCluster を利用した理由は、AlphaFold2 や ColabFold 以外にも、今後新たなソフトウェアが出てきても柔軟に対応しやすいためです。タンパク質構造予測の分野では、次々に新しいツールやバージョンが発表されています。そのようなツールがコンテナ環境を公式にサポートしていない場合でも、実行環境を用意しやすい構成となっています。

コスト

アーキテクチャを検討する上で、コストの観点を持つことも大切です。今回ご紹介した実装例では、定常的に発生する費用と、ジョブ実行のたびに発生する費用の2種類があります。それぞれの費用について、以下で内訳を説明します。なお、具体的な費用は、このブログ記事公開時点におけるバージニア北部リージョンでの価格をもとに計算しています。

まず、定常的な費用としては、1ヶ月あたり約290USD かかり、その大半を FSx for Lustre が占めています。この実装例では、FSx for Lustre の費用をなるべく削減するために、デフォルトでストレージを圧縮する設定を適用しています。残りは、ParallelCluster 関連の費用であり、head node の機能を果たす EC2 インスタンス、NAT Gateway、ジョブ記録を管理する Aurora Serverless v1 による費用です。また、ここで、仮に HPC 環境として ParallelCluster ではなく Batch を選択すると、ここで述べた ParallelCluster 関連の定常的な費用を削減することができる可能性があります。

次に、ジョブ実行のたびに発生する費用についてです。例として、GPU インスタンスとして g4dn.2xlarge を使用すると、1時間あたり 0.752USD かかります。ジョブを実行している間だけ EC2 インスタンスを使用しますので、ジョブにかかる時間に比例した費用が発生します。今回はバージニア北部リージョンで試算していますが、リージョンによっては EC2 インスタンスを含め各サービスの単価が異なります。コストを最適化できるよう、適切にリージョン選択することもご検討ください。

まとめ

本ブログでは、研究者にも利用しやすく、ITリソース管理者にとっては管理しやすい環境を構築するため、ウェブフロントエンド経由で AlphaFold2 によるタンパク質立体構造予測ジョブをバックエンドの AWS ParallelCluster に投入する構成について紹介しました。

上述した通り、この構成は汎用性のあるもので、バックエンド側のプログラムを差し替えることで、OmegaFoldOpenFold など、様々なソフトウェアについても同様に実行することが可能です。また、ウェブフロントエンドも併せてカスタマイズすることで、利用するプログラムを選択可能にしたり、同時に複数のプログラムを実行したりすることも可能です。

また、管理者としては Amazon Cognito を用いたユーザー管理の仕組みや、AWS Budgets によるコスト制限の仕組みを入れたくなるかもしれません。AWS ではこのようにサービスを組み合わせることで、HPC 環境をソリューションとして提供することができます。ぜひ皆さんも、より良い研究環境を提供するため、様々なアイディアをこの環境に組み込んでみてください。

なお、AWS Blog では、ほかにも RoseTTAFold を AWS Batch 上で実行するためのアーキテクチャや、OpenFold でのベンチマーク結果についてのブログ を公開していますので、そちらも併せてご参照ください。

謝辞

このブログで紹介した実装例の構築にあたっては、AWS Japan の次の方々に貢献いただきました。
ソリューションアーキテクト 伊藤 ジャッジ向子
ソリューションアーキテクト 加藤 知愛
ソリューションアーキテクト 安部 文紀
ソリューションアーキテクトマネージャー 安司 仁
アカウントマネージャー 秋元 北斗
プロトタイピングエンジニア 鈴木 毅洋
HPC スペシャリストソリューションアーキテクト 小林 広志

著者紹介

Chiaki Ishio

石尾 千晶は、アマゾンウェブサービスのソリューションアーキテクトです。現在は、エンタープライズの製薬業界のお客様向けに技術支援をおこなっています。

Shingo Chiyoda

千代田 真吾は、アマゾンウェブサービスのソリューションアーキテクトです。現在は、エンタープライズの小売・消費財業界のお客様が AWS を用いてビジネスを拡大するのを支援しています。

Daiki Kuriyama

栗山 太希は、アマゾンウェブサービスのシニアプロトタイピングエンジニアです。現在は、AWS を用いてお客様と共にプロトタイピングを構築するのを支援しています。

Daisuke Miyamoto

宮本 大輔は、アマゾンウェブサービスのシニア Compute/HPC スペシャリストソリューションアーキテクトです。