BUSCO コンテナを EC2 インスタンス で実行できる環境構築してローカルPC と処理速度の違いを比較してみる
BUSCOの実行環境構築に EC2インスタンスを利用して Docker コンテナで実行してみた記録です。最終目標はクラウドHPCを駆使した Docker コンテナ実行環境を構築します。
- EC2 インスタンスに Docker インストール
- BUSCO コンテナを起動
- BUSCO で解析処理
これまで
前回ローカルPCで BUSCO コンテナの実行確認をしました。
今回はローカルPCだとスペック不足で解析に2時間かかったので AWS の EC2インスタンスで同じ Docker コンテナでの実行環境を作り試してみます。
EC2で実行環境構築してみた
BUSCO コンテナを利用して EC2 インスタンス上で解析処理を走らせてみます。
検証環境
Product | Version |
---|---|
BUSCO | v5.2.2 |
Docker | 20.10.7 |
Instance Type | C6i.2xlarge |
OS | Amazon Linuex 2 |
CPU | 8vCPU |
Memory | 16 GB |
EC2インスタンスの準備
高性能なコンピュートリソースを従量課金で使えます。今回は現行最新世代のCPU最適化インスタンスのc6i.2xlarge
を使用しました。スペックは 8vCPU, 16GB メモリのスペックです。OS はAmazon Linux2
を使用しています。
EC2の作成方法
EC2の作成方法は以下のリンクを参考にしてください。
インスタンスタイプについて
C6i インスタンスタイプについては以下のリンクを参考にしてください。
Docker インストールの準備
Amzon Linux2 に Docker をインストールして BUSCO コンテナを実行する土台を作ります。
sudo yum update -y sudo yum install docker -y sudo systemctl start docker sudo systemctl enable docker sudo usermod -a -G docker ec2-user
usermod
の実行を反映させるためec2-user
でログインし直すます。設定したsystemctl enable
の確認も兼ねてリブートしました。
sudo reboot
リブート後、SSHまたはセッションマネージャーで接続してください。
BUSCO で解析するインプットファイルの準備
ec2-user
のホームディレクトリにwork
ディレクトリを作成します。そして、後ほど BUSCO コンテナにマウントして使います。そのため BUSCO で解析するテストデータを事前にダウンロードして用意しておきます。前回同様にショウジョウバエのリファレンスゲノムをテストデータとして用います。
mkdir ./work cd ./work wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/001/215/GCF_000001215.4_Release_6_plus_ISO1_MT/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz gunzip GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna.gz
マウント成功した
Docker で BUSCO コンテナ を起動
work
ディレクトリをマウントして BUSCO コンテナを起動しログインします。
docker run --rm -it --mount type=bind,src=/home/ec2-user/work,dst=/mnt ezlabgva/busco:v5.2.2_cv2 bash
busco
コマンドを実行します。-c 8
でCPUコア数/スレッド数をc6i.2xlarge
のvCPU数に合わせています。
cd /mnt busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o test.out -m genome -c 8
ローカルPCと比べるとすぐに終わりました。Total running time: 1000 seconds
なので約17分で解析が完了しました。ちなみにローカルPCで実行したときは完了するまで2時間かかりました。
usco_user@cd63991f92ed:/mnt$ busco -i /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna -l eukaryota -o test.out -m genome -c 8 2022-02-23 10:15:36 INFO: ***** Start a BUSCO v5.2.2 analysis, current time: 02/23/2022 10:15:36 ***** 2022-02-23 10:15:36 INFO: Configuring BUSCO with local environment 2022-02-23 10:15:36 INFO: Mode is genome 2022-02-23 10:15:36 INFO: Downloading information on latest versions of BUSCO data... 2022-02-23 10:15:38 INFO: Input file is /mnt/GCF_000001215.4_Release_6_plus_ISO1_MT_genomic.fna 2022-02-23 10:15:38 INFO: Downloading file 'https://busco-data.ezlab.org/v5/data/lineages/eukaryota_odb10.2020-09-10.tar.gz' 2022-02-23 10:15:56 INFO: Decompressing file '/mnt/busco_downloads/lineages/eukaryota_odb10.tar.gz' 2022-02-23 10:15:57 INFO: Running BUSCO using lineage dataset eukaryota_odb10 (eukaryota, 2020-09-10) 2022-02-23 10:15:59 INFO: Running 1 job(s) on metaeuk, starting at 02/23/2022 10:15:59 2022-02-23 10:24:32 INFO: [metaeuk] 1 of 1 task(s) completed 2022-02-23 10:24:33 INFO: ***** Run HMMER on gene sequences ***** 2022-02-23 10:24:33 INFO: Running 255 job(s) on hmmsearch, starting at 02/23/2022 10:24:33 2022-02-23 10:24:33 INFO: [hmmsearch] 26 of 255 task(s) completed 2022-02-23 10:24:34 INFO: [hmmsearch] 51 of 255 task(s) completed 2022-02-23 10:24:34 INFO: [hmmsearch] 77 of 255 task(s) completed 2022-02-23 10:24:34 INFO: [hmmsearch] 102 of 255 task(s) completed 2022-02-23 10:24:34 INFO: [hmmsearch] 128 of 255 task(s) completed 2022-02-23 10:24:34 INFO: [hmmsearch] 153 of 255 task(s) completed 2022-02-23 10:24:35 INFO: [hmmsearch] 179 of 255 task(s) completed 2022-02-23 10:24:36 INFO: [hmmsearch] 204 of 255 task(s) completed 2022-02-23 10:24:36 INFO: [hmmsearch] 230 of 255 task(s) completed 2022-02-23 10:24:37 INFO: [hmmsearch] 255 of 255 task(s) completed 2022-02-23 10:24:37 INFO: Extracting missing and fragmented buscos from the file refseq_db.faa... 2022-02-23 10:24:39 INFO: Running 1 job(s) on metaeuk, starting at 02/23/2022 10:24:39 2022-02-23 10:32:15 INFO: [metaeuk] 1 of 1 task(s) completed 2022-02-23 10:32:15 INFO: ***** Run HMMER on gene sequences ***** 2022-02-23 10:32:15 INFO: Running 1 job(s) on hmmsearch, starting at 02/23/2022 10:32:15 2022-02-23 10:32:16 INFO: [hmmsearch] 1 of 1 task(s) completed 2022-02-23 10:32:17 INFO: Validating exons and removing overlapping matches 2022-02-23 10:32:17 INFO: Results: C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255 2022-02-23 10:32:18 INFO: -------------------------------------------------- |Results from dataset eukaryota_odb10 | -------------------------------------------------- |C:99.6%[S:99.6%,D:0.0%],F:0.4%,M:0.0%,n:255 | |254 Complete BUSCOs (C) | |254 Complete and single-copy BUSCOs (S) | |0 Complete and duplicated BUSCOs (D) | |1 Fragmented BUSCOs (F) | |0 Missing BUSCOs (M) | |255 Total BUSCO groups searched | -------------------------------------------------- 2022-02-23 10:32:18 INFO: BUSCO analysis done. Total running time: 1000 seconds 2022-02-23 10:32:18 INFO: Results written in /mnt/test.out 2022-02-23 10:32:18 INFO: For assistance with interpreting the results, please consult the userguide: https://busco.ezlab.org/busco_userguide.html 2022-02-23 10:32:18 INFO: Visit this page https://gitlab.com/ezlab/busco#how-to-cite-busco to see how to cite BUSCO
実行結果の出力されたディレクトをローカルPCに持ってきたい場合はSCPで転送してもよいですし、AWS なので EC2 から一度S3バケットにディレクトリをコピーして、ローカルPCからAWS CLIコマンドで取得するか、マネジメントコンソールからS3バケットアクセスしてダウンロードすればよろしいかと。
注意: EC2 から S3 へデータを転送するには EC2 に S3 へアクセスできる権限が必要です。
おわりに
巨大なゲノムを BUSCO で処理するのにスパコンを利用するくらいですから、実行時間を短縮するにはマシンスペックの違いによるものが大きいです。
c6i.2xlarge
で特段ハイスペックなインスタンスではありませんでしたが、それでも実行時間は2時間から20分へ短縮できました。計算時間が短くなるということはトライ & エラーもしやすくなので恩恵を感じるのではないでしょうか。
また、コンテナで実行する分には Docker さえインストールすれば済み非常にお手軽なセットアップでした。計算リソースの確保はクラウドだと従量課金で済むのも相性がいいですね。
次回は解析時間短縮を狙って AWS を利用してクラウドHPC環境で実行したいと思います。
トライアンドエラーを調べてみたら
「トライ & エラー」のアンドの表記方法を調べていたら「トライアンドエラー」は和製英語であることを知りました。英語ではTrial and error
という言うのですね。