遺伝研スパコンでのalphafold 3.0.1の実行
概略
AlphaFold3 はDeepMind社が開発したタンパク質立体構造予測プログラムです。
遺伝研スパコンでは alphafold 3.0.1 をインストールした apptainer image、AlphaFold3で使用する配列・構造データベース、slurmにジョブを投入するサンプルスクリプトを用意してあります。
AlphaFold3 の実行に必要なモデルパラメータファイルは、後述するようにユーザー様ご自身でDeepMind社から取得していただく必要がございます。
AlphaFold3の実行には個人ゲノム解析区画のアクセラレータ最適化ノード Type2(L40Sノード)を使用します。個人ゲノム解析区画の利用は利用申請が必要となりますので、利用の準備(個人ゲノム解析区画) | NIG supercomputerを参照して利用申請を行い、利用計画表をご提出ください。
L40S では、3500アミノ酸残基程度までの大きさのタンパク質の立体構造予測が可能です。後述するようにUnified Memoryを有効化するとさらに大きなタンパク質の立体構造予測が可能ですが、実行速度は低下します。
AlphaFold3 の実行内容について
AlphaFold3によるタンパク質の立体構造の推論は以下のステップで実行されます。
- jackhmmerによる配列データベースを対象とした入力アミノ酸配列のMultiple Sequence Alignment(CPU使用)
- hmmsearchによる構造データベースを対象とした構造テンプレート検索(CPU使用)
- モデル推論(GPU使用)
入力アミノ酸配列が多量体の場合、ステップ1-2は多量体を構成する異なる種類のサブユニットのアミノ酸配列ごとに実行されます。
ステップ1-2の実行時間は300アミノ酸残基程度のアミノ酸配列1個でおおよそ500秒~800秒です。
L40Sを使用したステップ3の実行時間はタンパク質のサイズが600アミ ノ酸残基で90秒、1100アミノ酸残基で180秒、3500アミノ酸残基で1400秒程度です。
モデル推論にUnified Memoryを使用した場合、実行時間は3900アミノ酸残基で2100秒、4300アミノ酸残基で3900秒、4700アミノ酸残基で12900秒程度になります。
CPUを使用するステップ1-2のデータベース検索パートとGPUを使用するステップ3のモデル推論パートはAlphaFold3の実行オプションで分割して実行可能です。一括して実行する場合は、データベース検索パートの実行時間もL40Sノード使用の課金対象になることにご注意ください。L40Sノードの使用料金は、日数単位(小数点以下切り上げ)で算出いたします。
分割して実行する場合、データベース検索パートは一般解析区画または個人ゲノム解析区画のCPUノードをご使用ください。個人ゲノム解析区画のCPUノードを使用する場合は、L40Sノードと併せて利用計画表をご提出ください。
モデルパラメータファイルの準備
モデルパラメータファイルは、事前にユーザ様ご自身でDeepMind社に利用申請を行い、DeepMind社からダウンロードして頂く必要があります。
モデルパラメータの利用申請は、DeepMind社の用意しているGoogle Formから行ってくださ い。申請後、数日でモデルパラメータファイルのダウンロードリンクがメールで送信されます。
ダウンロードしたモデルパラメータファイルは、以下のようにzstdコマンドを使用して解凍してください。zstdコマンドは遺伝研スパコンの各ノードにインストールされています。
zstd -d af3.bin.zst
入力ファイルの準備
AlphaFold3に入力する配列データはJSON形式で準備する必要があります。AlphaFold3 のドキュメント を参考にJSONファイルをご用意ください。
全行程の一括実行
データベース検索パートとモデル推論パートを個人ゲノム解析区画の**アクセラレータ最適化ノード Type2(L40Sノード)**で一括して実行する場合について説明いたします。
実行環境へのアクセス
L40Sノードへのアクセス方法は アクセラレータ最適化ノード Type 2 (L40Sノード)の使い方 | NIG supercomputer をご参照ください。
ジョブスクリプトの準備
ジョブスクリプトのサンプルは /lustre12/software/alphafold3/sample_scripts/run_alphafold3.sh に置いてあります。
以下がslurmに登録するジョブスクリプト run_alphafold3.shの内容になります。
#!/bin/bash
#SBATCH -p l40s
#SBATCH -A l40s
#SBATCH --gres=gpu:1
#SBATCH -c 16
#SBATCH --mem-per-cpu=1g
INPUT_JSON_PATH="${HOME}/alphafold3/input/input.json"
OUTPUT_DIR="${HOME}/alphafold3/output"
MODEL_DIR="${HOME}/alphafold3/models"
DB_DIR="/data1/alphafold3/database"
IMAGE_PATH="/lustre12/software/alphafold3/alphafold3-v3.0.1.sif"
MAX_TEMPLATE_DATE="2099-12-31"
ALPHAFOLD3DIR="/app/alphafold"
HMMER3_BINDIR="/hmmer/bin"
apptainer exec \
--nv \
-B ${DB_DIR}:${DB_DIR} \
${IMAGE_PATH} \
python3.11 ${ALPHAFOLD3DIR}/run_alphafold.py \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--db_dir="${DB_DIR}" \
--model_dir=${MODEL_DIR} \
--max_template_date=${MAX_TEMPLATE_DATE} \
--json_path=${INPUT_JSON_PATH} \
--output_dir=${OUTPUT_DIR}
8-10行目のINPUT_JSON_PATH, OUTPUT_DIR, MODEL_DIRを自身の環境に合わせて修正してください。
- 8行目:
INPUT_JSON_PATH="${HOME}/alphafold3/input/input.json"
INPUT_JSON_PATHは入力ファイルのパスです。
- 9行目:
OUTPUT_DIR="${HOME}/alphafold3/output"