PSP - AlphaFold2 Multimer のモデル トレーニング パラメーターを構成する

私の CSDN をフォローしてください: https://spike.blog.csdn.net/
この記事のアドレス: https://spike.blog.csdn.net/article/details/133377559

OFマルチマー

AlphaFold2 Multimer のモデル トレーニング パラメーターを整理および構成するには、関連する論文、AlphaFold v2.3.0 テクニカル ノート、OpenFold、UniFold、およびその他のオープン ソース フレームワークを参照してください。AlphaFold2 のモノマー構造予測については、論文ではモデルのトレーニング パラメーターと詳細がより詳細に提供されていますが、化合物 (Multimer) では、すべてのトレーニング パラメーターの構成が明確に提示されていません。

参考文献とソースコード:

トレーニング パラメーター コアは 6 つのモジュールに分割されています。

  1. データdata: 通用(common)、、、、、など含む数据处理(data_module)_ 评估(eval)_预测(predict)训练(train)监督(supervised)
    • その中には监督(supervised)、主にいくつかのスイッチがあり、インポートおよびトレーニング中に評価される関連機能all_atom_maskall_atom_positionsresolutionis_distillation、および とuse_clamped_fape組み合わせて使用​​されますclamp_prob詳細については、OpenFold および AF2 のソース コードを参照してください。
  2. emaモデル パラメーターは動的に更新されます。各ステップではスライディング EMA 更新が実行されます。これを 0.999 に設定すると、1000 回の更新を完了するのと同等になります。
  3. globalsグローバル パラメーター (モデル ネットワーク構造の一部のパラメーター) は OpenFold と一致しています。トレーニング中はchunk_sizeに設定する必要があることに注意してくださいnull
  4. lossパラメータ: chain_centre_mass(差分)、distogram(同じ)、experimentally_resolved(同じ)、fape(Unifold と同じ)、lddt(同じ)、(同じ) masked_msasupervised_chi(同じ) tm、(未使用)、violation(同じ)、rmsd_ca(独自開発) を含みます。
    • 損失を計算するopenfold/utils/loss.py関数はmulti_chain_perm_align()次のとおりです。Unifold
    • 損失部分には調整が必要なハイパーパラメータが多数あります。
  5. modelパラメータ、ネットワーク設計の関連パラメータは AF2 と一致する必要があります。
  6. 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 ロジックから継承されています。
  • trainevalトレーニング: max_msa_clusters508 に変更することをお勧めします。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,不建议修改

参考:
減衰

最適化パラメータの設定については、以下を参照してください。

最適化

おすすめ

転載: blog.csdn.net/u012515223/article/details/133377559