AlphaFold3はWindows環境にインストールできるのか

AlphaFold3という面白いたんぱく質(＋DNAやリガンド)の構造予測機がグーグルから2024年に発表されてたんですね
生命科学系ワイ、インストールしようとしたらさ、Linuxサポート、他のOSは知らんっていうじゃん…
Windows信者ワイ、なんとかWindows環境でインストールできないかやってみます
なお、ワイはLinuxについてはcdコマンドすら調べながらやる初心者です
(コマンドミスあったらごめんなさい、またセキュリティやネットワークのことはよくわかってません)

ワイの環境は
GeForce4090
メモリ128GB
Windows11 pro
となっております

基本的な参考URLは以下、あとは適宜記載(URLなどは正しいもののつもりですが、特にダウンロード系は適切なURLかを適宜確認してくださいね)

https://github.com/google-deepmind

https://github.com/google-deepmind/alphafold3

https://qiita.com/Ag_smith/items/3bb110fe576292bbf0ea

:::note alart
予測に必要なモデルデータはAlphafoldのGithubページから飛べるフォームから申請して認可されることで入手できます
商用利用しない、などの宣誓が必要です
:::


インストールはこのページに基づく感じかな？

https://github.com/google-deepmind/alphafold3/blob/main/docs/installation.md

・Linuxが走るマシンを用意しよう
・1TB以上のSSD
・[Compute Capabilityが8.0以上のNVIDIAのGPU](https://developer.nvidia.com/cuda-gpus)(CUDA 12.6が動くことを確認するのが無難)
・メモリは64GB以上
とのこと

CUDAの参考情報を以下に

https://zenn.dev/yumizz/articles/73d6c7d1085d2f

:::note info
CUDAはGPUを並列計算に使うために必要なAPIですね
GPUは十分なRAMを持ち、適切なCUDAが動く世代を選びましょう
:::

https://en.wikipedia.org/wiki/CUDA#GPUs_supported

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299179/b543335e-aeaf-41ff-a39b-f676d09d9362.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299179/7d9a8384-b203-41f0-8808-f46a40e57c07.png)

ワイのGeForce4090であればAda Lovelaceであるので、CUDAの11.8以降であれば対応しています。公式ドキュメントではCUDA12.6で動作確認しているようなので、それに従います

# WSLの構築をする
とてもためになる参考サイト。今回はUbuntu 20.04をインストール

https://www.tohoho-web.com/ex/wsl.html

``` powershell:WSL構築
#WSLをインストールして、対応するLinux一覧を確認したらLinux_nameをインストールする
wsl --install
wsl --list --online
wsl --intall Linax_name

#インストールされたLinuxを確認する
wsl -l -v

#Linuxを起動する
wsl -d Linax_name
```

:::note info
### Linuxのフォルダ構造はここが参考になった
https://qiita.com/nys9302/items/a8ddeedd3cd9d0deb332#linux%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E9%80%A0%E3%81%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%A8%AE%E9%A1%9E
:::

# Dockerのインストールをする
ここからはWSL上で作業をします
公式

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

参考になる解説

https://frees.jp/2025/01/03/ubuntu-24-04%E3%81%ABdocker%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/

```powershell:Dockerのインストール
#衝突を避けるためにすでにインストールされているDocker関連ソフトを削除する
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

#公開鍵関係のことをやっている様子(GPG関係)
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

#Dockerのインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#正しくインストールされていることの確認
sudo docker run hello-world

#ルートレスDockerの有効化(何をやっているのかは全くわからん)
sudo apt-get install -y uidmap systemd-container
sudo machinectl shell $(whoami)@ /bin/bash -c 'dockerd-rootless-setuptool.sh install && sudo loginctl enable-linger $(whoami) && DOCKER_HOST=unix:///run/user/1001/docker.sock docker context use rootless'


```

# GPUサポートのインストール
### NVIDIA driver

NVIDIAドライバーのインストールは買った時点でしてくれていたようなのでパス。
多分Windowsの方からインストールしても問題なさそう

`nvidia-smi`コマンドが意味のある返答を返すことは確認しておく

### NVIDIA Container Toolkit
AlphaFold3のGithubからほぼコピペ。

:::note alert
/etc/nvidia-container-runtime/config.toml
内の以下の書き換えが必要
no-cgroups = false
:::

https://highreso.jp/edgehub/machinelearning/ubuntudocker.html

```powershell:NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json
systemctl --user restart docker

#この行は何をやっているかよくわからないが、必須ではなさそう
sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place

#動作確認
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi
```




# AlphaFoldソースコードのダウンロード
DeepmindのGithubからWindowsでダウンロードすればよい

`git clone https://github.com/google-deepmind/alphafold3.git`
を実行すればよい
Linuxのホームディレクトリに移動して実行
ホームディレクトリにalphafold3のデータがダウンロードされました

# wget zstdのダウンロード
`sudo apt install wget zstd`を実行します

# fetch_databases.shの実行
Alphafold3フォルダに移動したはず

```powershell:fetch_databases.shの実行
#アクセス権限がなくて難渋しましたが、fetch_databases.shのアクセス権限を変更
chmod 755 fetch_databases.sh

#homeディレクトリ下にpublick_databesesというフォルダを作ってデータベースをダウンロード
./fetch_databases.sh
```

:::note warn
* AlphaFold3ディレクトリの直下にダウンロードしないこと(Dockerが超遅くなる)
* 解凍前で252GB、解凍したら630GBになるのでダウンロードに時間がかかるのと、SSDへのダウンロードが望ましい
* 必要に応じsudo chmod 755 --recursiveなどで適切なアクセス権限に変更すること
:::
https://qiita.com/takuyanin/items/18590600d077df707923#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B

# モデルの解凍
DeepMind社への申請が通ればメールが来ますので、そこに記載のリンクからモデルをダウンロード
$HOME/modelsにダウンロードしたモデルをコピー、そのフォルダに移動して`zstd -d af3.bin.zst`を実行します

`af3.bin`というファイルができます

# Dockerのビルド
AlphaFoldディレクトリ内に移動してからコマンドを打ち込む

```powershell:ビルド
sudo docker build -t alphafold3 -f docker/Dockerfile .
```

# Alphafoldの実行

サンプル用の入力データを作ります
Alphafold3のReadmeからとってきました
```json:fold_input.json
{
  "name": "2PV7",
  "sequences": [
    {
      "protein": {
        "id": ["A", "B"],
        "sequence": "GMRESYANENQFGFKTINSDIHKIVIVGGYGKLGGLFARYLRASGYPISILDREDWAVAESILANADVVIVSVPINLTLETIERLKPYLTENMLLADLTSVKREPLAKMLEVHTGAVLGLHPMFGADIASMAKQVVVRCDGRFPERYEWLLEQIQIWGAKIYQTNATEHDHNMTYIQALRHFSTFANGLHLSKQPINLANLLALSSPIYRLELAMIGRLFAQDAELYADIIMDKSENLAVIETLKQTYDEALTFFENNDRQGFIDAFHKVRDWFGDYSEQFLKESRQLLQQANDLKQG"
      }
    }
  ],
  "modelSeeds": [1],
  "dialect": "alphafold3",
  "version": 1
}
```
実行までに難渋
多分アクセス権限の問題などでいろいろ難渋した感じです
管理者権限で実行

```powershell:実行
#<MODEL_PARAMETERS_DIR>にはモデルを解凍したフォルダを入れます
#ワイの場合は$HOME/models
#<DB_DIR>にはデータベースを入れたフォルダを入れます
#標準では$HOME/public_databasesになるかと思います
#入力にはfold_input.jsonを使います(以下、入力ファイルと呼ぶ)
#あとはroot直下にaf_input,af_outputのフォルダを作成します
#root/af_inputフォルダ、$HOME/af_inputフォルダに入力ファイルを入れました
#sudo直下のフォルダ、ファイルは一応sudo chmod 777 ~ファイル/フォルダ名~で
#アクセス権限をゆるゆるにしておきました
#うまくいかない中での調整なのでここらへんのフォルダ関係はいらないかもしれません

sudo docker run -it \
    --volume $HOME/af_input:/root/af_input \
    --volume $HOME/af_output:/root/af_output \
    --volume <MODEL_PARAMETERS_DIR>:/root/models \
    --volume <DB_DIR>:/root/public_databases \
    --gpus all \
    alphafold3 \
    python run_alphafold.py \
    --json_path=/root/af_input/fold_input.json \
    --model_dir=/root/models \
    --output_dir=/root/af_output
```

うまくいくと$HOME/af_output内に予測結果が出力されました

# 結果を見る
結果はpymolやUCSF Chimeraなどのビューワーで見れるとのこと
pymolはライセンスが分かりにくく、とりあえず結果を見たかったので

https://www.cgl.ucsf.edu/chimera/

からChimeraをダウンロードしてインストールしました
Chimeraからcifファイルを読み込んで結果が出力されたら成功です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299179/f808cc7f-51cd-40c6-a696-37cd83f6a08f.png)

**やったー！！！！できた！！！**
カラー化などの課題はありますが、とりあえずこれでローカル環境でAlphafold3が動きました
試行錯誤しながらなので
・ここに書いてあるけどいらないこと
・ここに書いてないけどいること
があるかもしれませんので、何かあればコメントいただければと思います
アクセスや権限の関係で難渋しました…こういう、記載外のトラブルが環境構築を難しくするんですよね…笑
記載以外にも数多くのWebサイトを参考にしましたので、お礼申し上げます

とにかくこれでワイもAlphafold3ユーザーの仲間入りです
ほかの設定についてはまた勉強していければと思います


~~結論としては、Dockerすごい！というオチか…？~~