BioPlayground

🧬
목록으로

RoseTTAFold2 · OpenFold · DiffDock: AlphaFold 바깥의 오픈 생태계

AlphaFold 계열 바깥에서 자라난 삼중 트랙 네트워크 RoseTTAFold2, 오픈소스 재구현체 OpenFold, 확산모델 기반 도킹 DiffDock을 비교합니다.

심화
|
22
|
검증 완료 (2026-07-29)
RoseTTAFold2OpenFoldDiffDock
진행률0/120 (0%)

F07 다음 질문 — DeepMind만 이 게임을 하는 게 아니다

F02~F07까지 AlphaFold 계열(2, 3, Multimer)과 Meta의 ESMFold, MIT의 Boltz-2를 다뤘습니다. 이쯤에서 자연스레 드는 의문이 있습니다. 애초에 AlphaFold2가 CASP14에서 압도적 성능을 보였을 때, 왜 다른 연구실들은 손 놓고 있지 않았을까요? 실제로는 정반대였습니다. **워싱턴 대학 베이커 연구실(Baker Lab)**은 독자적인 아키텍처로 거의 동시에 따라붙었고, 컬럼비아 대학은 AlphaFold2 자체를 오픈소스로 처음부터 다시 구현해 재현성과 접근성을 넓혔으며, MIT는 구조 예측이 아니라 도킹이라는 인접 문제를 완전히 새로운 방식으로 풀었습니다. 이 편에서는 이 세 갈래 — RoseTTAFold2, OpenFold, DiffDock — 을 나란히 놓고 비교합니다.

원리 — 세 갈래가 각각 무엇을 다르게 했는가

RoseTTAFold와 RoseTTAFold2: 원형의 삼중 트랙과 후속 모델 구분

Baker Lab의 RoseTTAFold(2021)가 제시한 대표 아이디어는 정보를 세 가지 표현으로 동시에 흘리는 three-track network입니다.

1D (서열)2D (잔기쌍 거리⋅각도)3D (원자 좌표)\text{1D (서열)} \longleftrightarrow \text{2D (잔기쌍 거리·각도)} \longleftrightarrow \text{3D (원자 좌표)}

각 트랙은 독립적으로 정보를 처리하면서도 서로 정보를 주고받습니다. 1D 트랙이 서열 문맥을, 2D 트랙이 잔기쌍 관계를, 3D 트랙이 좌표를 담당합니다. RoseTTAFold2를 이 2021년 원형과 동의어로 부르면 안 됩니다. 후속 모델은 원형의 계보를 잇되 SE(3)-equivariant 구조 추론과 all-atom 표현 등 설계를 크게 바꿨습니다. 따라서 이 절의 삼중 트랙 설명은 RoseTTAFold 원 논문의 핵심이지, RoseTTAFold2 전체 아키텍처의 완전한 요약은 아닙니다.

OpenFold: 같은 아키텍처를 다시 지은 이유

OpenFold(컬럼비아 대학, AlQuraishi Lab)는 새로운 아키텍처를 제안하지 않습니다. 대신 AlphaFold2의 아키텍처를 PyTorch로 처음부터 다시 구현하고, 학습 코드까지 공개했습니다. 왜 이게 중요할까요? DeepMind가 공개한 AlphaFold2는 추론용 코드와 사전학습된 가중치는 공개했지만, 학습 파이프라인 전체를 재현할 수 있는 완전한 코드는 공개하지 않았습니다. 연구자가 "AlphaFold2를 우리 데이터로 처음부터 다시 학습시키면 무슨 일이 일어나는가"를 검증하려면, 그 학습 과정 자체가 오픈소스로 존재해야 합니다.

추론 코드 공개학습 파이프라인 공개완전한 재현성(Reproducibility)\text{추론 코드 공개} \neq \text{학습 파이프라인 공개} \neq \text{완전한 재현성(Reproducibility)}

OpenFold는 이 세 번째 단계를 채워, AlphaFold2와 동등한 성능을 재현하면서도 연구 커뮤니티가 아키텍처를 수정하고 재학습할 수 있는 발판을 제공했습니다.

DiffDock: 도킹을 확산모델로 다시 정의하기

전통적 도킹(F09에서 다룰 AutoDock Vina 등)은 리간드가 결합 부위에서 취할 수 있는 자세(pose)들을 미리 정의된 스코어 함수로 하나씩 평가하며 최적해를 찾는 탐색 문제로 다룹니다. DiffDock(MIT, 2023)은 이를 완전히 다른 틀로 바꿉니다. 리간드의 자세를 결정하는 자유도 — 병진(translation), 회전(rotation), 결합 내부 회전각(torsion) — 를 하나의 확률분포 공간으로 보고, F03·F07에서 다룬 것과 같은 확산모델로 그 공간 위에서 직접 샘플링합니다.

자세 공간=Rtranslation3×SO(3)rotation×Ttorsionm\text{자세 공간} = \mathbb{R}^3_{\text{translation}} \times SO(3)_{\text{rotation}} \times \mathbb{T}^m_{\text{torsion}}

SO(3)SO(3)는 3차원 회전군, Tm\mathbb{T}^mmm개의 회전 가능한 결합 각도를 나타내는 토러스(torus) 공간입니다. 이 각 공간마다 확산 과정을 정의하고, 노이즈에서 출발해 점점 더 그럴듯한 결합 자세로 수렴하도록 모델을 학습시킵니다. 스코어 함수로 하나하나 평가하는 대신, "그럴듯한 자세 분포에서 직접 샘플링한다"는 접근이 핵심 전환입니다.

손 계산 예제: 탐색 공간의 차이

전통적 도킹이 회전 각도를 10°10° 간격으로 그리드 탐색한다고 가정하면, 회전 자유도 하나당 탐색해야 할 후보 수는 360/10=36360/10 = 36개입니다. 결합 내부 회전각이 m=5m=5개인 유연한 리간드라면 이 축만으로도 후보 수는 다음과 같이 폭증합니다.

365=60,466,17636^5 = 60{,}466{,}176

여기에 병진·회전 3자유도까지 곱하면 그리드 탐색 공간은 사실상 감당하기 어려운 규모가 됩니다. 실제 도킹 소프트웨어는 이 전체를 그리드로 다 훑지 않고 유전 알고리즘, 몬테카를로 등의 휴리스틱 탐색으로 줄이지만, 그래도 자유도가 늘어날수록 탐색 비용이 조합적으로 폭증한다는 근본 구조는 남습니다. 확산모델 기반 접근은 이 조합적 탐색 대신, 학습된 분포에서 직접 소수의 샘플(가령 10~40개)을 뽑아 후보를 좁히므로 원리적으로 다른 스케일링을 보입니다.

실습: 세 도구의 설치·추론 진입점 비교

bash
# RoseTTAFold2 — Baker Lab 공식 저장소 (설치는 로컬/서버 환경 권장, 대형 가중치 다운로드 필요)
git clone https://github.com/baker-laboratory/RoseTTAFold2
# 상세 설치는 README의 conda env 파일을 따릅니다. Colab 무료 티어에서는 디스크·메모리 제약으로 버겁습니다.
# OpenFold — Colab 친화적인 추론 데모 제공
git clone https://github.com/aqlaboratory/openfold
# DiffDock — Colab에서 바로 도킹 데모 실행 가능
git clone https://github.com/gcorso/DiffDock
%cd DiffDock
!pip install -q -r requirements.txt
!python -m inference --protein_path example_protein.pdb --ligand example_ligand.sdf \
--out_dir results/ --num_samples 10
# num_samples를 늘리면 더 다양한 결합 자세 후보를 확산 과정으로 샘플링합니다.

RoseTTAFold2는 대형 모델이라 로컬 GPU 서버나 Kaggle의 더 넉넉한 디스크 환경이 Colab 무료 티어보다 적합할 수 있습니다. OpenFold와 DiffDock은 상대적으로 가벼운 추론 데모를 제공해 Colab T4에서도 시도해볼 만합니다.

CS 매핑

  • 오픈소스 재구현(Open Reimplementation)의 가치: OpenFold 사례는 "논문 + 추론 코드"만으로는 과학적 재현성이 완결되지 않으며, 학습 파이프라인까지 독립적으로 재현해야 진정한 검증이 가능하다는 소프트웨어 공학의 원칙을 그대로 보여줍니다.
  • 멀티모달 표현 융합(Multi-branch Fusion): RoseTTAFold2의 삼중 트랙 구조는 서로 다른 표현(1D 서열, 2D 관계, 3D 좌표)을 별도 브랜치로 처리하다 주기적으로 합류시키는 멀티모달 신경망 설계와 같은 계열입니다.
  • 조합 탐색에서 생성 모델로(Search to Generation): DiffDock이 도킹을 탐색 문제에서 생성 문제로 재정의한 것은, 전통적 조합 최적화 알고리즘이 지수적으로 폭증하는 탐색 공간을 학습된 생성 모델로 우회하는 최근 AI4Science 전반의 패턴을 대표합니다.

자주 만나는 결함

  • DiffDock에 pocket 입력이 필수라고 오해: DiffDock의 대표 설정은 단백질 전체를 입력으로 받는 blind docking입니다. 별도의 pocket 좌표가 반드시 필요하다고 설명하면 핵심 차별점을 거꾸로 말하게 됩니다. 다만 pose 신뢰도·물리적 타당성 검증과 후속 rescoring은 여전히 필요합니다.
  • 세 도구를 성능만으로 줄세우기: RoseTTAFold2·OpenFold·AlphaFold2는 각기 다른 학습 데이터·시점·목적으로 개발돼, 단순 벤치마크 숫자 비교보다 "무엇을 위해 만들어졌는가"(연구 재현성, 아키텍처 실험, 실무 정확도)를 먼저 봐야 공정한 비교가 됩니다.
  • DiffDock 샘플 수를 임의로 줄이기: num_samples를 지나치게 줄이면 확산 과정이 다양한 결합 자세를 충분히 탐색하지 못해, 최적해를 놓친 것을 마치 "결합이 약하다"는 결론으로 오독할 수 있습니다.

더 깊게 파고 싶다면

본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.

  • RoseTTAFold 원 논문: Baek et al. (2021), Accurate prediction of protein structures and interactions using a three-track neural network, Science 373(6557).
  • OpenFold 공식 저장소: github.com/aqlaboratory/openfold — 학습 파이프라인 재현 세부사항.
  • DiffDock 원 논문: Corso et al. (2023), DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking, ICLR 2023.

다음 편 F09에서는 도킹을 더 실무적으로 파고들어, AutoDock Vina·Glide·Rosetta 세 도킹 도구의 스코어 함수를 직접 뜯어봅니다.