私の CSDN をフォローしてください: https://spike.blog.csdn.net/
この記事のアドレス: https://spike.blog.csdn.net/article/details/133377559
AlphaFold2 Multimer のモデル トレーニング パラメーターを整理および構成するには、関連する論文、AlphaFold v2.3.0 テクニカル ノート、OpenFold、UniFold、およびその他のオープン ソース フレームワークを参照してください。AlphaFold2 のモノマー構造予測については、論文ではモデルのトレーニング パラメーターと詳細がより詳細に提供されていますが、化合物 (Multimer) では、すべてのトレーニング パラメーターの構成が明確に提示されていません。
参考文献とソースコード:
- AlphaFoldによる高精度なタンパク質構造予測
- AlphaFold-Multimer によるタンパク質複合体予測
- GitHub - AlphaFold v2.3.0 テクニカル ノート
- GitHub - オープンフォールド
- GitHub - ユニフォールド
トレーニング パラメーター コアは 6 つのモジュールに分割されています。
- データ
data
:通用(common)
、、、、、などを 含む数据处理(data_module)
_评估(eval)
_预测(predict)
训练(train)
监督(supervised)
- その中には
监督(supervised)
、主にいくつかのスイッチがあり、インポートおよびトレーニング中に評価される関連機能all_atom_mask
、all_atom_positions
、resolution
、is_distillation
、および とuse_clamped_fape
組み合わせて使用されますclamp_prob
。詳細については、OpenFold および AF2 のソース コードを参照してください。
- その中には
ema
モデル パラメーターは動的に更新されます。各ステップではスライディング EMA 更新が実行されます。これを 0.999 に設定すると、1000 回の更新を完了するのと同等になります。globals
グローバル パラメーター (モデル ネットワーク構造の一部のパラメーター) は OpenFold と一致しています。トレーニング中はchunk_size
に設定する必要があることに注意してくださいnull
。loss
パラメータ:chain_centre_mass
(差分)、distogram
(同じ)、experimentally_resolved
(同じ)、fape
(Unifold と同じ)、lddt
(同じ)、(同じ)masked_msa
、supervised_chi
(同じ)tm
、(未使用)、violation
(同じ)、rmsd_ca
(独自開発) を含みます。- 損失を計算する
openfold/utils/loss.py
関数はmulti_chain_perm_align()
次のとおりです。Unifold
- 損失部分には調整が必要なハイパーパラメータが多数あります。
- 損失を計算する
model
パラメータ、ネットワーク設計の関連パラメータは AF2 と一致する必要があります。relax
パラメータ、モデル リラックスに関連するパラメータは、OpenFold
と一致します。
つまり、コアの変更はデータ部分と損失部分であり、残りは変更する必要はありません。
その中でchunk_size
パラメータの説明:
推論モードでは、チャンク化 (AlphaFold 2 補足のセクション 1.11.8 で定義) がデフォルトで有効になっていることに注意してください。無効にするには、構成で に
globals.chunk_size
設定します。None
値が指定されている場合、OpenFold は、構成で指定されているチャンク サイズを最小値として考慮して、その値を動的に調整しようとします。この調整プロセスにより、入力シーケンスの長さに関係なく、一貫して高速な実行時間が自動的に保証されますが、実行時間の変動も生じ、これは特定のユーザーにとっては望ましくない可能性があります。非常に長いチェーンの場合は、この機能を無効にすることもお勧めします (下記を参照)。これを行うには、tune_chunk_size
構成内のオプションを に設定しますFalse
。
chunk_size
トレーニング中は「なし」に設定します。
if train:
c.globals.blocks_per_ckpt = 1
c.globals.chunk_size = None
1. データモジュール
data
データパラメータには、common
一般、data_module
データモジュール、eval
評価、predict
予測train
、トレーニング、supervised
監視などが含まれます。
- 当面は修正不要
data_module
データ処理・predict
予測・supervised
監視 - 共通
common
パラメータ: 変更可能なパラメータはmax_extra_msa
、AF2 と OpenFold Multimer (最新) は両方とも 2048、現在は 1024 で、Monomer ロジックから継承されています。 train
、eval
トレーニング:max_msa_clusters
508 に変更することをお勧めします。640crop_size
に変更します。これはメモリ使用量に関連していることに注意してください。template
当面はすべてのテンプレート パラメーターを変更する必要はなく、現在は 4 です。distillation_prob
:蒸留データ比が0.75から0.5に減少します。- 主な変更点は MSA 部分で、現在のプロジェクトは OpenFold Monomer バージョン 1 から派生しており、一部のパラメーターが Multimer に準拠していません。
注: トレーニング パラメーターでは、パラメーター
interface_threshold
、つまりca_ca_threshold
参照get_spatial_crop_idx()
関数、OpenFold と UniFold は異なる方法で実装されます。
2. 損失モジュール
loss
パラメータには次のものが含まれます。
chain_centre_mass
(差): 重み 1.0、UniFold、1.0、OpenFold 0.05、ギャップは大きく、OpenFold は多くの場所で 0.05 を示し、これはより信頼性が高く、一般に原子レベルの損失は重みが低く、値が大きいため、0.05 が推奨されます。distogram
(同):重さ0.3、一貫experimentally_resolved
(同):重み0.01、一貫性ありfape
(Unifold と同じ): 重量 1.0、一貫性ありlddt
(同じ): 重み 0.01; 一貫しています。masked_msa
(同):重み2.0、一貫性ありsupervised_chi
(同):重さ1.0、一貫性あり。tm
(未使用): OpenFold Multimer デバッグ バージョンが追加されていない、正式バージョンが追加されたから false、UniFold PAE 有効重み 0.1、OpenFold 重み 0.1、有効にすることをお勧めします。violation
(同):0.5、OpenFold 0.03(初期値は信用できない)、UniFold 0.5(Finetune)、0.5を推奨。
その他: eps 1.0e-08、OpenFold は 1.0e-08、UniFold は 1.0e-4 ~ 1.0e-10 の AF2 と一致します。
今すぐ:
loss = chain_centre_mass*0.05 + distogram*0.3 + experimentally_resolved*0.01 + fape*1.0 + lddt*0.01 + masked_msa*2.0 + supervised_chi*1.0 + tm*0.1 + violation*0.5
トレーニングログは次のとおりです。
2023-09-26 07:25:17,232 INFO 25675 [loss.py:1995] [CL] loss_name: fape, weight: 1.0, loss: 1.2547515630722046, add: 1.2547515630722046
2023-09-26 07:25:17,233 INFO 25675 [loss.py:1995] [CL] loss_name: supervised_chi, weight: 1.0, loss: 0.15294387936592102, add: 0.15294387936592102
2023-09-26 07:25:17,234 INFO 25675 [loss.py:1995] [CL] loss_name: distogram, weight: 0.3, loss: 0.40942829847335815, add: 0.12282849103212357
2023-09-26 07:25:17,235 INFO 25675 [loss.py:1995] [CL] loss_name: experimentally_resolved, weight: 0.01, loss: 0.002576087834313512, add: 2.57608771789819e-05
2023-09-26 07:25:17,239 INFO 25675 [loss.py:1995] [CL] loss_name: lddt, weight: 0.01, loss: 1.8179388046264648, add: 0.018179386854171753
2023-09-26 07:25:17,240 INFO 25675 [loss.py:1995] [CL] loss_name: chain_centre_mass, weight: 0.05, loss: 0.0, add: 0.0
2023-09-26 07:25:17,240 INFO 25675 [loss.py:1995] [CL] loss_name: violation, weight: 0.5, loss: 0.0052171749994158745, add: 0.0026085874997079372
2023-09-26 07:25:17,241 INFO 25675 [loss.py:1995] [CL] loss_name: masked_msa, weight: 2.0, loss: 0.39116162061691284, add: 0.7823232412338257
2023-09-26 07:25:17,243 INFO 25675 [loss.py:1995] [CL] loss_name: tm, weight: 0.1, loss: 4.158883094787598, add: 0.41588830947875977
3. 関連資料
AF2 モノマー トレーニング プロトコル (トレーニング プロトコル) のハイパーパラメーター:
異なるトレーニング ステージでは、MSA、テンプレートなどの AF2 モノマー パラメーター構成が異なります。つまり、次のようになります。
AF2 モノマーの重量の減少、つまり:
このうち、clamp_prob
パラメーターは基本的に AF2 と同じです。
supervised:
clamp_prob: 0.9
AF2のパラメータ構成はclamp_prob
以下のとおりです。
このうち、decay
パラメータは AF2 と一致しませんが、OpenFold と UniFold は両方とも 0.999 であるため、0.999 にすることをお勧めします。
ema:
decay: 0.999 # AF2 中是0.99,不建议修改
参考:
最適化パラメータの設定については、以下を参照してください。