簡単!GCP+Dockerで新型コロナウィルス解析プロジェクトに参加しよう


新型コロナウィルス解析プロジェクト

今更なので説明は省略しますが、私も分散コンピューティングプロジェクト Folding@Home の新型コロナウィルス解析プロジェクトに参加しました。
たくさんの参加者でかなりの演算能力になっているようですが、まだ解析は継続しています。
Folding@Home について素晴らしい記事を既に書かれた人達と同様に、新型コロナウィルス解析プロジェクトに参加される方が増え、1日でも早く解析が進み好転に繋がることを願いこの記事を書きました。
本記事は Google Cloud Platform (以降、GCP) で、Docker コンテナを使った方法を記載しています。

解析プロジェクトの参加は簡単!

実際に GCP で参加するための環境構築手順を記載します。
環境構築の方法は複数ありますが、かなり簡単に構築できました。
GCP で Docker となると GKE が浮かびますが、GKE は使いません。

前提条件

  • GCP を触ったことがある人向け。ある程度わかっている人向け。(細かく説明していません。)
  • 簡単に構築ということで・・・
    • GPU 使用の手順は未記載。
    • VPC は Default をそのまま使用。
    • コマンドのオプションは使用したもののみ記載。

1. GCP プロジェクトを作成する

GCP の始め方など詳細説明は割愛しますが、本記事では analysis-covid19 という名前でプロジェクトを作成しました。

2. 実行用 Docker コンテナの Dokerfile の取得

Github にて john k tims さんが提供されている Folding@Home 実行用 Docker コンテナから Dokerfile などをダウンロードします。
Cloud Shell を立ち上げ、以下のコマンドを実行します。

gitコマンド
git clone https://github.com/johnktims/folding-at-home.git

ダウンロードされると、folding-at-home フォルダが作成されます。

3. Cloud Build で Docker イメージの作成、Container Registry に保存

作成された folding-at-home フォルダに移動し、以下のコマンドを実行します。(Cloud Build を使わなくてもできますが楽なので・・・)
gcloud builds submit --tag gcr.io/[PROJECT_ID]/[IMAGE_NAME] .

Docker イメージ名を "folding-at-home" として、以下のコマンドを実行しました。(プロジェクト名は "analysis-covid19")

gcloudコマンド
gcloud builds submit --tag gcr.io/analysis-covid19/folding-at-home .

gcloud builds コマンドが SUCCESS となると、Cloud Build のビルド履歴画面に作成した履歴と Container Registry のリポジトリ画面に作成したイメージが表示されます。

Cloud Build ビルド履歴画面は履歴が表示されます。

Container Registry リポジトリ画面は指定したリポジトリ名が表示され、リポジトリが作成されています。

4. ファイアウォールルールの作成

Folding@home の WEB コントロール画面のアクセスは、ポート7396を空ける必要があるので、ファイアウォールルールを作成します。

gcloud compute firewall-rules create [FIREWALLRULE_NAME] --action (deny | allow ) --source-ranges [SOURCE_RANGE] --rules (PROTOCOL[:PORT[-PORT]])

本記事では以下のコマンドを実行しました。

gcloudコマンド
gcloud compute firewall-rules create default-allow-7396 --action allow --source-ranges 0.0.0.0/0 --rules tcp:7396

ファイアウォールルールが作成され、リストの1番上に表示されました。

5. Compute Engine インスタンスの作成

Compute Engine インスタンスを、コンテナ専用コマンドで作成します。
オプションはいろいろありますが、使用したものだけ記載しています。

gcloud compute instances create-with-container [INSTANCE_NAME] --zone [ZONE_NAME] --machine-type [MACHINE_TYPE] --container-image [IMAGE_NAME]

 --machine-type を指定しない場合は、デフォルト n1-standard-1 になります。
 前述していますが、本記事ではGPU使用の手順は未記載です。

gcloudコマンド
gcloud compute instances create-with-container foldingathome-covid19 --zone us-central1-b --machine-type n1-standard-4 --container-image gcr.io/analysis-covid19/folding-at-home

ここでは、n1-standard-4(4Core)を指定しています。変更可能ですので課金を考慮して指定しましょう。

指定したインスタンス名が表示され、VM インスタンスが作成されます。

インスタンス作成と同時にコンテナが実行されている状態となります。

6. Folding@home WEB コントロール画面の表示

Compute Engine の画面でコンテナが乗っている Compute Engine の外部IPアドレスを確認し、ブラウザでURLを指定し、Folding@home の WEB コントロール画面を表示します。
http://[Compute Engine の外部IPアドレス]:7396

正常に実行できていれば、以下のWEBコントロール画面が表示され実行中となっています。

終わりに

新型コロナウイルスの状況が好転する兆しはまだ見えませんが、好転に向けて少しでもできることがあればやっていきたいという思いはみなさん同じかと思います。
分散コンピューティングプロジェクトに更に多くの人が参加することで、早く解析が完了し次のステージに進めることを願っています。
みなさまが参加する上で、本記事が少しでも参考になったら幸いです。

謝辞

Folding@home 関係者の方々、Folding@homeの情報提供の記事、参考URLの記事を執筆された方々に厚く御礼申し上げます。

参考URL