トラブルシューティング¶
このページでは、mlmm でよく遭遇するエラーと対処法をまとめます。
エラーメッセージでページ内検索すると、該当するセクションを素早く見つけることができます。
症状から先に当たりを付けたい場合は、先に 典型エラー別レシピ を見てからこのページに戻ってください。
実行前チェックリスト¶
長時間の計算を実行する前に、以下を確認してください。
mlmm -hでヘルプが表示されるUMA のモデルがダウンロードできる(Hugging Face のログイン/トークンが利用可能)
酵素系ワークフローでは、入力 PDB に 水素 と 元素記号(element column) が入っている
複数の PDB を与える場合、同じ原子が同じ順序 で並んでいる(座標だけが異なる)
AmberTools(tleap, antechamber, parmchk2)が PATH 上にある(
mm-parmを使う場合)hessian_ff の C++ 拡張がビルド済み(
cd hessian_ff/native && make)
入力 / 抽出の問題¶
「Element symbols are missing… add-elem-info を実行してください」¶
典型的なメッセージ:
Element symbols are missing in '...'.
Please run `mlmm add-elem-info -i...` to populate element columns before running extract.
対処:
次を実行して element 列(元素記号列)を補完します:
mlmm add-elem-info -i input.pdb -o input_with_elem.pdb
その後、
extract/allを補完後の PDB で再実行します。
なぜ発生するか:
多くの PDB では元素カラムが一貫して埋められていません。
extractは正確な原子型判定のために元素記号を必要とします。
「Atom count mismatch」「Atom order mismatch」¶
典型的なメッセージ:
[multi] Atom count mismatch between input #1 and input #2:...
[multi] Atom order mismatch between input #1 and input #2.
対処:
すべて の構造を同じ前処理ワークフロー(同じプロトン化ツール、同じ設定)で作り直します。
水素付加を行う場合は、全フレームで一貫した原子順序になる方法を使用してください。
ヒント:
MD 由来のアンサンブルでは、異なるツールで作った PDB を混在させるのではなく、同一のトポロジー/軌跡 からフレーム抽出する方が安全です。
「ポケットが空っぽ / 必要な残基が落ちる」¶
症状:
抽出ポケットが想定より小さい
触媒残基が含まれない
対処の例:
--radiusを増やす(例: 2.6 → 3.5 Angstrom)--selected-resnで残基を強制包含する(例:--selected-resn 'A:123,B:456')主鎖削除が強すぎる場合は
--no-exclude-backboneを試す
電荷 / スピンの問題¶
「電荷が必須」系のエラー¶
計算系サブコマンドでは -q/--charge を必ず明示する必要があります。
all では電荷は -q/--charge 上書き -> 抽出サマリー -> (抽出スキップ時)--ligand-charge フォールバック の順で解決されます。
対処:
電荷と多重度を明示的に指定します:
mlmm path-search -i R.pdb P.pdb --parm real.parm7 --model-pdb model.pdb -q 0 -m 1
あるいは、抽出経由で自動導出させるため
allを使い、残基名ごとの電荷マッピングを与えます:
mlmm -i R.pdb P.pdb -c 'SAM,GPP' -l 'SAM:1,GPP:-3'
AmberTools / mm-parm の問題¶
tleap が見つからない¶
典型的なメッセージ:
FileNotFoundError: tleap not found on PATH
または
mm-parm requires AmberTools (tleap, antechamber, parmchk2).
対処:
conda で AmberTools をインストールします:
conda install -c conda-forge ambertools -y
HPC クラスターでは環境モジュールでロードする場合もあります:
module load ambertools
利用可能か確認します:
which tleap
which antechamber
which parmchk2
AmberTools なしでも、
--parmを手動で用意すればopt、tsopt、path-search等は動作します。
antechamber が失敗する¶
症状:
mm-parm実行中にリガンドパラメータ化が失敗する原子型割り当てや電荷計算に関するエラーが出る
対処の例:
リガンドの PDB で元素記号と結合構造が正しいか確認する
--ligand-chargeが正しく指定されていることを確認:-l 'GPP:-3,SAM:1'--keep-tempを付けて再実行し、<resname>.antechamber.logを確認する:
mlmm mm-parm -i input.pdb -l 'LIG:-1' --keep-temp
水素が正しく付加されているか、TER レコードが適切か確認する
抽出されたリガンド PDB に対して antechamber を手動実行して原因を切り分ける:
antechamber -i ligand.pdb -fi pdb -o ligand.mol2 -fo mol2 -c bcc -nc -3 -at gaff2
parm7/rst7 の不整合エラー¶
典型的なメッセージ:
Atom count in parm7 (...) does not match input PDB (...)
または
RuntimeError: parm7 topology does not match the input structure
または
Coordinate shape mismatch for... got (N, 3), expected (M, 3)
対処:
parm7 を生成した PDB と、計算に使う PDB が同一の原子セット(同じ順序)であることを確認します。
mm-parmで parm7 を再生成してください。mm-parm実行後に PDB の原子を編集・並べ替え しない でください。tleap が水素を追加/削除している可能性があるため、
mm-parm出力の PDB(<prefix>.pdb)を計算入力として使用してください。
parm7 の元素順序が PDB と一致しない¶
症状:
oniom-exportで「Element sequence mismatch at atom index…」
対処:
--no-element-checkで元素チェックを無効化(結果を手動で検証すること)正しい対処は、parm7 生成時と同じ PDB を
-iに指定することです。
hessian_ff ビルドの問題¶
ビルドが失敗する(”make” エラー)¶
典型的な症状:
hessian_ff/native/でのmakeがコンパイルエラーを出すImportError: cannot import name 'ForceFieldTorch' from 'hessian_ff'RuntimeError: hessian_ff build attempts failed: ...
対処の例:
C++ コンパイラ(g++ >= 9)がインストールされていることを確認:
g++ --version
PyTorch のヘッダが利用可能であることを確認:
python -c "import torch; print(torch.utils.cmake_prefix_path)"
HPC ではコンパイラモジュールをロード:
module load gcc/11
クリーンしてリビルド:
conda install -c conda-forge ninja -y
cd hessian_ff/native && make clean && make
hessian_ff の import エラー¶
典型的なメッセージ:
ImportError: cannot import name 'ForceFieldTorch' from 'hessian_ff'
または:
RuntimeError: hessian_ff build attempts failed: ...
To rebuild hessian_ff native extensions in this environment:
conda install -c conda-forge ninja -y
cd $(python -c "import hessian_ff; print(hessian_ff.__path__[0])")/native && make clean && make
対処:
C++ ネイティブ拡張を先にビルドする必要があります:
cd hessian_ff/native && make
hessian_ffパッケージが Python パス上にあることを確認してください(pip install -e .でインストールしていれば問題ありません)。
B-factor レイヤー割り当ての問題¶
レイヤー割り当てが想定と異なる¶
症状:
原子が想定外のレイヤーに割り当てられる
ML 領域が小さすぎる、または大きすぎる
対処の例:
レイヤーが割り当てられた PDB を分子ビューアで可視化(B-factor で色分け)する
--model-pdbが正しく ML 領域の原子を定義しているか確認するdefine-layerの距離カットオフを調整する:--radius-freeze(デフォルト 8.0 Angstrom): Movable-MM/Frozen の境界を制御必要に応じて、計算オプション(
hess_cutoff,hess_mm_atoms)でヘシアン対象 MM を別途制御するYAML で
use_bfactor_layers: trueを使う場合、B-factor 値が期待されるエンコーディング(0.0, 10.0, 20.0; 許容差 1.0)と一致するか確認する
B-factor 値が認識されない¶
典型的な症状:
計算機がすべての原子を Frozen または ML として扱う
B-factor 値が {0.0, 10.0, 20.0} のいずれでもない
対処:
define-layerを再実行して正しい B-factor エンコーディングを確保してください。許容差 1.0 が適用されます: 0/10/20 に近い B-factor が ML/Movable/Frozen にマッピングされます。
B-factor を任意の値に手動編集しないでください。
–detect-layer が想定どおりに働かない¶
症状:
B-factor からのレイヤー自動判定で、ML / Movable / Frozen の分割が想定と異なる
--detect-layer有効時に--model-pdbなしで実行すると失敗する
対処の例:
入力が PDB(または
--ref-pdb付き XYZ)であることを確認するdefine-layerで B-factor を明示的に再付与し、生成された PDB を使う距離ベース制御を使う場合は
hess_cutoff/movable_cutoffを指定し、必要なら--no-detect-layerに切り替える--movable-cutoffを与えると--detect-layerが無効化される点に注意する
インストール / 環境の問題¶
UMA のダウンロード/認証エラー(Hugging Face)¶
症状:
モデルをダウンロードできない、認証が必要、といったエラー。
対処:
環境/マシンごとに一度ログインします:
huggingface-cli login
HPC では、計算ノードから HF キャッシュ(ホームディレクトリ等)に書き込み可能か確認してください。
CUDA / PyTorch の不整合¶
症状:
GPU があるのに
torch.cuda.is_available()が Falseimport 時に CUDA runtime error が出る
対処:
クラスタの CUDA バージョンに適合する PyTorch をインストールしてください。
GPU が見えているか確認します:
nvidia-smi
python -c "import torch; print(torch.version.cuda, torch.cuda.is_available())"
DMF モードが動かない(cyipopt がない)¶
DMF(--mep-mode dmf)を使うときに IPOPT/cyipopt の import エラーが出る場合:
対処:
mlmmをインストールする前に、conda-forge からcyipoptをインストールしてください:
conda install -c conda-forge cyipopt
図のエクスポートが失敗する(Chrome がない)¶
Plotly/Chrome 系のエラーで静的画像が出ない場合:
対処:
headless Chrome をインストールしてください:
plotly_get_chrome -y
計算 / 収束の問題¶
CUDA メモリ不足(OOM)¶
症状:
torch.cuda.OutOfMemoryError: CUDA out of memory「CUDA out of memory」メッセージ
ヘシアン計算中にシステムがハングまたはクラッシュする
ML/MM 系は純粋なクラスターモデルよりも一般的に大きいため、VRAM の負荷が高くなります。
対処の例:
ML 領域サイズを縮小: 抽出半径を小さくするか、
--model-pdbを手動で絞る有限差分 ML ヘシアンを使用:
--hessian-calc-mode FiniteDifference(VRAM 消費が少ないが低速)MM を CPU に移動: YAML で
mm_device: cpuを指定(デフォルト)ヘシアン対象 MM 領域を縮小:
hess_cutoffを小さくする3 層 + Hessian 対象制御を活用:
hess_cutoffとmovable_cutoffを設定し、ヘシアン計算対象の原子数を制限:
calc:
hess_cutoff: 3.6
movable_cutoff: 8.0
define-layerで事前に層を定義 し、use_bfactor_layers: trueで読み取るGPU メモリが大きいカードに変更: 500 原子以上の ML 領域には 24 GB 以上推奨、1000 原子以上には 48 GB 以上推奨
ポケットサイズを縮小: 抽出時の
--radiusを小さくする
TS 最適化が収束しない¶
症状:
TS 最適化が多くのサイクルを回しても収束しない
最適化後も複数の虚振動数が残る
対処の例:
オプティマイザモードを切り替える:
--opt-mode grad(Dimer) または--opt-mode hess(RS-I-RFO)余分な虚モードのフラット化を有効にする:
--flatten最大サイクル数を増やす:
--max-cycles 20000より厳しい収束閾値を使う:
--thresh bakerまたは--thresh gau_tighthess_cutoffを調整して、ヘシアン計算に含む原子の範囲を広げる
IRC が正常に終了しない¶
症状:
IRC が明確な極小に到達する前に停止
エネルギーが振動したり勾配が大きいまま
対処の例:
ステップサイズを減らす:
--step-size 0.05(デフォルトは 0.10)最大サイクル数を増やす:
--max-cycles 200IRC 実行前に TS 候補で虚数振動数が 1 本であることを確認
MEP 探索(GSM/DMF)が失敗または予期しない結果¶
症状:
経路探索が有効な MEP なしで終了
結合変化が正しく検出されない
対処の例:
--max-nodesを増やす(複雑な反応には 15 や 20 など)端点の事前最適化を有効にする:
--preopt別の MEP 手法を試す:
--mep-mode dmf(GSM が失敗した場合)またはその逆YAML で結合検出パラメータを調整(
bond.bond_factor、bond.delta_fraction)
パフォーマンス / 安定性のヒント¶
VRAM 不足: ML 領域サイズを縮小、ヘシアン対象 MM 領域を縮小、ノード数を削減(
--max-nodes)、または軽量なオプティマイザ設定(--opt-mode grad)を使用。解析ヘシアンが遅いまたは OOM:
--hessian-calc-mode FiniteDifferenceを使用。Analyticalは十分な VRAM がある場合のみ推奨(ML 原子 300 以上には 24 GB 以上推奨)MM ヘシアン:
mm_fd: true(デフォルト)は MM ヘシアンに有限差分を使用。解析 MM ヘシアン(mm_fd: false)は小規模系では高速だがメモリ消費が増える場合があるMM ヘシアン計算が遅い:
hess_cutoffを設定して Hessian-MM 原子数を制限する大規模系(2000 原子以上):
define-layerで Frozen 層(B=20)を適切に設定し、可動自由度数を削減するマルチ GPU: ML を 1 つの GPU(
ml_cuda_idx: 0)、MM を別の GPU(mm_device: cuda,mm_cuda_idx: 1)に配置可能ML と MM の並列実行: デフォルトで ML(GPU)と MM(CPU)は並列実行されます。
mm_threadsで CPU スレッド数を調整可能
バックエンド固有の問題¶
–backend orb/mace/aimnet2 で ImportError が出る¶
症状: ImportError: orb-models is required for the ORB backend のようなエラーが表示される
対処: 使用するバックエンドに対応するオプション依存パッケージをインストールします:
pip install "mlmm-toolkit[orb]" # ORB バックエンド
pip install "mlmm-toolkit[aimnet2]" # AIMNet2 バックエンド
# MACE: pip uninstall fairchem-core && pip install mace-torch(別環境が必要)
非 UMA バックエンドで CUDA メモリ不足になる¶
症状: ORB、MACE、AIMNet2 の使用時に RuntimeError: CUDA out of memory が発生する
対処: 非 UMA バックエンドは有限差分ヘシアンを使用するため、より多くの VRAM を消費します。以下の方法を試してください:
--radius-partial-hessianを小さくし、ヘシアン対象の原子数を制限する--hessian-calc-mode FiniteDifferenceを明示的に指定し、hess_cutoffを小さめに設定するYAML で
ml_device: cpuを指定する(遅くなるが VRAM 制限を回避できる)
–embedcharge 使用時に xTB が見つからない¶
症状: FileNotFoundError: xtb command not found が表示される
対処: xTB をインストールし、$PATH 上にあることを確認します:
conda install -c conda-forge xtb
不具合報告のときに添えると助かる情報¶
実行したコマンド(コピペ可能な形)
summary.log(またはコンソール出力)再現する最小入力(可能なら)
OS / Python / CUDA / PyTorch バージョン
AmberTools / hessian_ff のバージョン