🍋

Boltz-2実行環境の構築 | Apptainer (on WSL2 & with GPU)

に公開

コードブロック における 🍋 は、プロンプトを表している

以下、本記事を執筆した際の自宅環境。

specifications
CPU Ryzen 7 5700X (AMD)
グラフィックボード GeForce RTX 2080 Ti VENTUS GP OC (MSI)
メモリ DDR4-3200 32 GB×2 (Crucial)
version
Windows 10 22H2
NVIDIA グラフィクス ドライバー 576.52
WSL2 2.5.7.0
Ubuntu on WLS2 24.04 LTS
Apptainer 1.4.1

🍋 Boltz-2について

Accurately modeling biomolecular interactions is a central challenge in modern biology. While recent advances, such as AlphaFold3 and Boltz-1, have substantially improved our ability to predict biomolecular complex structures, these models still fall short in predicting binding affinity, a critical property underlying molecular function and therapeutic efficacy. Here, we present Boltz-2, a new structural biology foundation model that exhibits strong performance for both structure and affinity prediction. Boltz-2 introduces controllability features including experimental method conditioning, distance constraints, and multi-chain template integration for structure prediction, and is, to our knowledge, the first AI model to approach the performance of free-energy perturbation (FEP) methods in estimating small molecule–protein binding affinity. Crucially, it achieves strong correlation with experimental readouts on many benchmarks, while being at least 1000× more com putationally efficient than FEP. By coupling Boltz-2 with a generative model for small molecules, we demonstrate an effective workflow to find diverse, synthesizable, high-affinity binders, as estimated by absolute FEP simulations on the TYK2 target. To foster broad adoption and further innovation at the intersection of machine learning and biology, we are releasing Boltz-2 weights, inference, and training code 1 under a permissive open license, providing a robust and extensible foundation for both academic and industrial research.
Passaro, S. et al. (2025).; 6842ee1285b9af247ac5a122_boltz2.pdf

生体分子間相互作用を正確にモデル化することは、現代生物学における中心的な課題です。近年、AlphaFold3やBoltz-1といった技術の進歩によって生体分子複合体の構造予測能力は大きく向上しましたが、これらのモデルは依然として、分子の機能や治療効果の根幹をなす重要な性質である結合親和性の予測には十分に対応できていません。本研究では、構造予測と親和性予測の両面で高い性能を示す新たな構造生物学基盤モデル、Boltz-2を発表します。Boltz-2は、実験手法の条件付けや距離制約、多鎖テンプレート統合などの構造予測における制御性の高い機能を導入しており、我々の知る限り、小分子–タンパク質結合親和性の推定においてフリーエネルギー摂動 (FEP) 法に迫る性能を示した初のAIモデルです。特に、多くのベンチマークで実験結果と高い相関を達成しつつ、FEP法と比較して少なくとも1000倍以上の計算効率を実現しています。さらに、Boltz-2を小分子の生成モデルと組み合わせることで、TYK2を標的とした絶対FEPシミュレーションによる推定において、多様性が高く合成可能で高親和性を持つバインダーの探索ワークフローを構築できることを示しました。機械学習と生物学の融合領域における広範な利用とさらなる革新を促進するため、Boltz-2の重み、推論、学習コード一式を寛容なオープンライセンスで公開し、学術および産業研究のための強固で拡張性の高い基盤を提供します。
(ChatGPT 4.1による翻訳です)

とのことです。個人的には蛋白質・低分子化合物複合体の構造予測はまだまだだな~、と思いつつ、オープンソースコミュニティが活発になるのは嬉しいことですね。

ApptainerBoltz-2 を実行できるコンテナをビルドしたので、ビルドレシピをメモしておきます。

🍋 ApptainerによるBoltz-2のビルドレシピ

適当な場所に boltz-v2.1.1.def を以下のように作ります。例えば ~/Documents/apptainer_build/def_file に作成するとします。

~/Documents/apptainer_build/def_file/boltz-v2.1.1.def
BootStrap: docker
From: nvidia/cuda:12.6.3-cudnn-devel-ubuntu24.04

%post
  # localtime関係のWARNINGに対処
  touch /etc/localtime

  # 必要なパッケージのインストール (冗長)
  apt update && apt upgrade -y
  apt install -y build-essential git curl wget aria2 zip
  
  # localeにen_US.UTF-8を追加する (WSL2だけで使用するなら不要)
  apt install -y locales
  locale-gen en_US.UTF-8
  
  # apt関係のお掃除
  rm -rf /var/lib/apt/lists/* && apt autoremove -y && apt clean

  # Pyenvを/usr/local/appsにインストール
  git clone https://github.com/yyuu/pyenv.git /usr/local/apps/pyenv
  export PYENV_ROOT="/usr/local/apps/pyenv"
  export PATH="${PYENV_ROOT}/bin:${PATH}"

  # PyenvでMiniforgeをインストールし、MiniforgeにPATHを通す
  pyenv install --list
  pyenv install miniforge3-24.11.3-2
  pyenv global miniforge3-24.11.3-2
  pyenv versions
  export MINIFORGE3_ROOT="${PYENV_ROOT}/versions/miniforge3-24.11.3-2"
  export PATH="${MINIFORGE3_ROOT}/bin:${PATH}"
  
  # conda自身のアップデート
  conda update -n base conda
  # conda環境boltz-condaを作成
  conda create -n boltz-conda python=3.10
  
  # conda関係のお掃除
  conda clean --all --force-pkgs-dirs --yes
  # conda環境boltz-condaをアクティベート
  export BOLTZ_CONDA="${MINIFORGE3_ROOT}/envs/boltz-conda"
  export PATH="${BOLTZ_CONDA}/bin:${PATH}"
  
  # pip自身のアップデート
  python3 -m pip install --no-cache-dir --upgrade pip
  # Boltz-2のインストール
  git clone https://github.com/jwohlwend/boltz.git /usr/local/apps/boltz-2
  cd /usr/local/apps/boltz-2
  python3 -m pip install --no-cache-dir -e ./
  # warningへの対応
  python3 -m pip install --no-cache-dir tensorboard pytorch-lightning==2.5.0.post0

  # conda環境boltz-condaにインストールしたパッケージの由来 (channel) を確認する
  conda list -n boltz-conda

  # Boltz-2の学習済みパラメーターをダウンロード
  mkdir -p /usr/local/apps/boltz-2/weights
  cd /usr/local/apps/boltz-2/weights
  curl -L -O 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt'
  curl -L -O 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt'
  curl -L -O 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar'
  tar -xvf ./mols.tar
  rm -f ./mols.tar

%environment
  # Boltz-2のための環境設定
  export MINIFORGE3_ROOT="/usr/local/apps/pyenv/versions/miniforge3-24.11.3-2"
  export BOLTZ_CONDA="${MINIFORGE3_ROOT}/envs/boltz-conda"
  export PATH="${BOLTZ_CONDA}/bin:${PATH}"
  export BOLTZ_CACHE="/usr/local/apps/boltz-2/weights"

%runscript
  # コンテナ実行時のスクリプトを定義
  # "$@"は追加の引数を利用するための設定
  boltz predict "$@"

そんなに特殊なことはしていません。

Boltz-2-1 のときと同様に初回実行時に学習済み重みパラメーターなどが ~/.boltz にダウンロードされる仕様ですが、コンテナ内に最初からダウンロードしておきたいのでそうしています。

boltz predict --cache or 環境変数 BOLTZ_CACHE で指定したディレクトリに boltz2_aff.ckpt boltz2_conf.ckpt mols ( mols.tar を展開したディレクトリ) があれば、boltz predict 実行時にダウンロードはスキップされる仕様です。

また nvidia/cuda:12.6.3-cudnn-devel-ubuntu24.04 はなんとなくで選んだため、cudaubuntu のver.はこれじゃないとダメということはないと思います ( cuda12 以降がよさげだけど)。

boltz-v2.1.1.def を作成したら以下のようにコンテナをビルドします。

# Boltz-2実行コンテナをビルド
🍋 cd ~/Documents/apptainer_build
🍋 apptainer build ./boltz-v2.1.1.sif ./def_file/boltz-v2.1.1.def

🍋 boltz-v2.1.1.sifを実行する

例えば ~/Documentz/boltz-2/test に予測したい配列 fasta/test.fasta があるとして、~/Documentz/boltz-2/test に以下のシェルスクリプト run_boltz2.sh を作成します。

#!/usr/bin/bash -e

# 本.shが配置されたディレクトリをDIR_WORKとして設定
DIR_WORK="$(cd $(dirname $0) && pwd)"
# Apptainer
export APPTAINER_IMAGE="~/Documents/apptainer_build"
# Boltz-2コンテナを実行するコマンドを定義
function boltz2-app() {
  apptainer run --nvccli \
    ${APPTAINER_IMAGE}/boltz-v2.1.1.sif "$@"
}

# Boltz-2による構造予測を実行する
boltz2-app \
  --use_msa_server \
  --model boltz2 --use_potentials --accelerator gpu \
  --recycling_steps 6 --sampling_steps 200 \
  --out_dir ./output \
  ./fasta/test.fasta

あとは以下のように実行するだけです。
上記の設定ではMSA作成に外部サーバーを利用するため、外部に出したくない配列などについては注意が必要です。

🍋 cd ~/Documentz/boltz-2/test
🍋 chmod u+x ./run_boltz2.sh
🍋 ./run_boltz2.sh

Discussion