F03 무거운 아키텍처를 어떻게 무료로 돌리는가
F02~F03에서 AlphaFold2·3의 신경망 아키텍처를 뜯어봤습니다. 그런데 실제로 이 모델을 돌려보려고 하면 예상치 못한 벽에 부딪힙니다 — 신경망 추론 자체보다, 입력으로 넣을 MSA(다중 서열 정렬)를 만드는 단계가 훨씬 오래 걸린다는 것입니다. 원래 AlphaFold2 공식 파이프라인은 BFD·Uniclust30 같은 수억~수십억 서열 규모의 데이터베이스를 jackhmmer·HHblits로 검색하는데, 이 단계만 서열 하나당 수십 분에서 몇 시간이 걸리고 수백 GB~2TB 이상의 로컬 데이터베이스 저장 공간도 필요합니다.
ColabFold(Mirdita et al., 2022)는 이 병목을 훨씬 빠른 검색 엔진으로 크게 줄이고 클라우드로 이전합니다 — MMseqs2를 서버로 운영해, 로컬에 거대한 DB 없이도 몇 초~몇 분 안에 비슷한 품질의 MSA를 받아올 수 있게 만든 것입니다(서버 혼잡·요청 제한·데이터베이스 갱신 시점 같은 운영상의 병목은 여전히 남습니다). 이 편에서는 MMseqs2가 검색을 빠르게 만드는 원리, 그리고 무료 Colab T4 GPU로 실제 예측을 돌릴 때 마주치는 실무적 한계를 다룹니다.
MMseqs2의 k-mer 색인화, 그리고 GPU 메모리 한계
전통적 검색의 문제: 모든 서열과 정직하게 비교하기엔 너무 느리다
HHblits·jackhmmer 계열 도구는 프로파일 HMM(은닉 마르코프 모델) 기반으로 매우 민감한 정렬을 수행하지만, 그만큼 계산량이 큽니다. 데이터베이스 서열이 개이고 평균 길이가 일 때, 정직한 전체 대 전체 정렬(Smith-Waterman 등)은 사실상 데이터베이스 전체를 훑어야 해서 검색 하나당 계산량이 에 비례해 그대로 늘어납니다.
MMseqs2의 해법: k-mer 사전 필터링으로 후보를 먼저 좁히기
MMseqs2(Many-against-Many sequence searching 2)는 BLAST 계열이 쓰던 시드-확장(seed-and-extend) 전략을 훨씬 공격적으로 벡터화합니다. 핵심은 2단계입니다.
- k-mer 색인화(k-mer Indexing): 데이터베이스의 모든 서열을 길이 (보통 6~7)의 짧은 부분서열(k-mer) 단위로 미리 잘라 역색인(inverted index — 각 k-mer가 데이터베이스의 어느 위치들에 나타나는지 찾아가는 색인)을 만들어 둡니다. 검색 서열도 같은 방식으로 k-mer로 쪼개고, 단백질 검색에서는 정확히 같은 k-mer뿐 아니라 치환 점수(substitution score)상 유사한 k-mer까지 함께 고려합니다.
- 사전 필터링(Prefiltering): 검색 서열과 공유하는 k-mer가 일정 개수 이상인 데이터베이스 서열만 후보로 남깁니다. 이 단계는 해시 테이블 조회이므로 매우 빠르고, 전체 데이터베이스 중 극히 일부만 다음 단계로 넘어갑니다.
정밀한 정렬(gapped alignment)은 이렇게 좁혀진 소수의 후보에게만 수행합니다. 데이터베이스 서열의 극히 일부(비율 )만 정밀 정렬 단계까지 가므로, 전체 계산량은 대략 이 아니라 이보다 훨씬 작은 수준으로 줄어든다는 것이 핵심 직관입니다(실제로는 색인 조회·유사 k-mer 열거·대각선 처리 비용까지 더해지므로, 이를 같은 단순한 식으로 정확히 나타낼 수는 없습니다). 이 필터링 조건을 얼마나 엄격하게 잡느냐에 따라 속도와, 놓칠 수 있는 원거리 상동서열(remote homolog)의 양이 갈리는 트레이드오프가 있습니다.
손 계산 예제: T4 GPU 16GB에서 서열 길이 상한이 생기는 이유
AlphaFold류 신경망의 Pair 표현은 서열 길이 에 대해 크기의 텐서를 여러 채널(channel) 차원 로 유지합니다. fp32(4바이트) 기준 메모리는 대략
에 비례합니다. 이라고 하면, 서열 길이 일 때 텐서 하나의 메모리는
서열 길이가 으로 늘면(길이가 2.5배),
메모리는 길이 비율의 제곱, 즉 배로 늘어납니다. 이는 Pair 표현 텐서 하나만 계산한 값이며, 실제 추론 메모리는 MSA 깊이, attention 중간 계산값, recycle·ensemble 설정, 단량체/다량체 여부, 프레임워크의 메모리 재사용(rematerialization) 전략 등 여러 요인에 더 좌우됩니다. 따라서 이 계산은 "왜 서열이 길어질수록 T4에서 OOM(메모리 부족) 위험이 급격히 커지는가"를 보여주는 것이지, "16GB에서 정확히 2000~2500 잔기가 상한"이라는 고정된 수치를 이 계산만으로 도출할 수 있는 것은 아닙니다 — 실제 상한은 쓰는 ColabFold 버전·설정에서 직접 벤치마크해 확인해야 합니다.
CS 매핑
- k-mer 색인화와 시드-확장(Seed-and-Extend): MMseqs2의 2단계 검색은 검색 엔진이 역색인(inverted index)으로 후보 문서를 빠르게 좁힌 뒤 정밀 랭킹을 매기는 구조와 동일한 설계 패턴입니다.
- 시공간 트레이드오프(Time-Space Tradeoff): k-mer를 더 길게(또는 유사 k-mer 허용 폭을 더 엄격하게) 잡을수록 후보가 줄어 계산은 빨라지지만 민감도(원거리 상동서열 탐지력)가 떨어지고, 반대로 k-mer를 짧게 잡거나 유사 k-mer를 폭넓게 허용할수록 후보가 늘어 더 민감해지지만 느려집니다. 이는 메모리를 더 써서 정확도를 높이거나 메모리를 아껴 정확도를 희생하는 것과 같은 종류의 트레이드오프입니다.
- 이차 복잡도의 실무적 한계(): Pair 표현의 제곱 스케일링은, 알고리즘 교과서에서 "이론적으로는 동작하지만 입력이 커지면 실무에서 못 쓰게 되는" 이차 알고리즘의 전형적 사례입니다.
R 및 Bash 실습: 메모리 스케일링 계산 재현
# Pair 표현 메모리 스케일링 계산
pair_memory_gb <- function(L, channels = 128, bytes_per_elem = 4) {
(L^2 * channels * bytes_per_elem) / 1e9
}
for (L in c(500, 1000, 1500, 2000, 2500, 3000)) {
cat(sprintf("L=%d: %.2f GB\n", L, pair_memory_gb(L)))
}#!/usr/bin/env bash# ColabFold 로컬 실행 예시 (Colab 노트북 셀 또는 로컬 GPU 환경)colabfold_batch \ --num-recycle 3 \ --amber \ --num-relax 1 \ input_sequences.fasta \ output_dir/자주 만나는 결함
- T4 상한을 넘는 서열을 그대로 시도: 메모리 부족(OOM)으로 실행이 중간에 실패하는 경우가 흔합니다. 생물학적으로 근거가 뚜렷한 도메인 경계가 있다면 도메인 단위로 나누어 개별 예측 후 도킹을 고려할 수 있지만, 경계를 잘못 자르면 접힘 자체가 달라지거나 도메인 간 상대 배치를 복원하지 못할 수 있어 일반적인 해법은 아닙니다. 더 큰 VRAM의 GPU(A100 등)를 쓰는 것이 더 안전한 대안입니다.
- MMseqs2 MSA와 공식 파이프라인 MSA의 품질 차이를 무시: MMseqs2 기반 MSA는 대부분의 경우 비슷한 정확도를 내지만, 매우 희귀하거나 얕은 계통의 서열에서는 원거리 상동서열을 덜 찾아내 예측 신뢰도가 낮아질 수 있습니다. pLDDT가 낮게 나오면 MSA 깊이(depth)부터 확인해야 합니다.
- num-recycle·relax 설정을 기본값만 사용: recycle 횟수를 늘리면 정확도가 개선되는 경우가 많지만 계산 시간이 비례해 늘어납니다. Amber relax는 국소적인 입체 충돌·비정상 결합각을 완화하는 후처리이지, 잘못된 backbone이나 interface 배치 자체를 검증·교정해주지는 않으므로, 목적(빠른 스크리닝 vs 최종 구조)에 맞게 설정을 조정해야 합니다.
더 깊게 파고 싶다면
본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.
- ColabFold 원 논문: Mirdita et al. (2022), ColabFold: making protein folding accessible to all, Nature Methods.
- MMseqs2 원 논문: Steinegger & Söding (2017), MMseqs2 enables sensitive protein sequence searching for the analysis of massive data sets, Nature Biotechnology.
- ColabFold 공식 저장소:
github.com/sokrypton/ColabFold— 노트북과 실행 옵션 문서.
단일 사슬 예측을 무료 환경에서 돌리는 법을 배웠습니다. 그런데 실제 생물학적 기능은 대부분 단백질이 다른 단백질이나 리간드와 복합체를 이룰 때 나타납니다.
다음 편 F05에서는 여러 사슬로 이루어진 다량체 구조와 리간드 결합을 예측하는 AlphaFold-Multimer, 그리고 CASP15 벤치마크 결과를 다룹니다.