BioPlayground

🧬
목록으로

ESM3: 서열·구조·기능을 한 모델 안에서 오가는 법

서열·구조·기능이라는 세 가지 트랙을 하나의 생성모델 토큰 공간에서 함께 다루는 ESM3의 원리와, 비상업 라이선스 제약을 다룹니다.

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

F11 다음 질문 — 서열만 아는 모델의 한계

F11에서 ESM-2가 서열만 보고도 진화적 제약을 학습한다는 것을 봤습니다. 그런데 실제 단백질을 이해하려면 서열만으로는 부족한 지점이 분명히 있습니다. 두 단백질이 서열은 완전히 달라도 구조는 거의 같을 수 있고(수렴 진화), 구조는 비슷해도 기능은 전혀 다를 수 있습니다. F06의 ESMFold는 "서열 → 구조"라는 한 방향만 다뤘고, F11의 zero-shot 점수도 서열 확률 안에서만 움직였습니다. 서열, 구조, 기능이라는 세 종류의 정보를 하나의 모델이 자유롭게 오가며 다루려면 어떻게 해야 할까요?

ESM3(EvolutionaryScale, 2024; Science 2025)는 이 세 트랙을 하나의 통합된 생성모델로 묶었습니다. 이용 조건은 “ESM3 전체가 한 라이선스”가 아니라 코드·공개 체크포인트·호스팅 API·모델 규모별로 확인해야 합니다. 특정 시점의 비상업 조건을 계열 전체의 영구 규칙처럼 적지 않고, 사용하려는 artifact의 LICENSE와 서비스 약관을 각각 확인합니다.

원리 — 서로 다른 모달리티를 같은 토큰 공간으로

세 트랙을 이산 토큰으로 통일하기

ESM-2는 아미노산이라는 이산 알파벳(20종 + 특수 토큰)을 다뤘습니다. ESM3의 발상은, 구조기능도 각각 이산 토큰의 알파벳으로 바꿔서 서열과 같은 형식으로 다루자는 것입니다.

서열 토큰{A,C,D,}20,구조 토큰{s1,,sK},기능 토큰{f1,,fM}\text{서열 토큰} \in \{A, C, D, \ldots\}^{20}, \quad \text{구조 토큰} \in \{s_1, \ldots, s_K\}, \quad \text{기능 토큰} \in \{f_1, \ldots, f_M\}

구조 토큰화는 대략 이렇게 이뤄집니다. 국소적인 3차원 백본 형태(짧은 구간의 좌표 패턴)들을 클러스터링해 KK개의 대표 형태로 양자화(quantize)하고, 각 잔기 위치에 "이 위치의 국소 구조가 어느 클러스터에 가장 가까운가"를 나타내는 정수 토큰을 붙입니다. 기능 토큰도 비슷하게, Gene Ontology 같은 기능 주석 체계를 이산 토큰 집합으로 인코딩합니다. 이렇게 하면 서열·구조·기능이 모두 "토큰 시퀀스"라는 같은 자료형으로 표현되어, 하나의 Transformer가 세 가지를 동시에 입출력할 수 있습니다.

조건부 생성: 어떤 트랙을 주면 어떤 트랙이 나오는가

토큰 공간이 통일되면, F06에서 다룬 마스크 예측을 트랙 간에도 적용할 수 있습니다.

P(서열구조),P(구조서열),P(서열,구조기능)P(\text{서열} \mid \text{구조}), \quad P(\text{구조} \mid \text{서열}), \quad P(\text{서열}, \text{구조} \mid \text{기능})

예를 들어 "이런 구조를 갖는 단백질의 서열은 무엇일까"나 "이런 기능을 갖는 서열·구조를 새로 만들어보자" 같은 질문을 한 모델로 표현할 수 있습니다. 저자들은 형광 단백질을 조건부 생성하고 합성·발현해 형광을 실험 검증한 사례를 보고했습니다. 이는 기능 조건화가 가능하다는 증거이지, 임의 기능에서 높은 wet-lab 성공률이 보장된다는 뜻은 아닙니다.

손 계산 예제: 이산 토큰화가 정보를 얼마나 압축하는가

3차원 좌표 하나(x, y, z)를 32비트 부동소수점 3개로 저장하면 32×3=9632 \times 3 = 96비트가 듭니다. 이걸 K=4096K=4096개의 구조 클러스터 중 하나를 가리키는 정수 토큰으로 바꾸면 필요한 비트 수는

log2(4096)=12비트\log_2(4096) = 12\,\text{비트}

9696비트에서 1212비트로, 압축 비율은 96/12=896/12=8배입니다. 물론 이 압축은 손실 압축(lossy compression)입니다 — 연속적인 좌표를 유한한 대표 형태 중 가장 가까운 것으로 근사하는 것이므로 세부 정보가 일부 손실됩니다. 그런데 이 손실이 오히려 유용할 수 있습니다. Transformer가 다루기 좋은 이산 토큰 형식으로 구조를 표현함으로써, 서열 생성과 똑같은 방식(다음 토큰 예측, 마스크 예측)으로 구조 생성·조건화가 가능해지기 때문입니다.

실습: ESM3 API로 구조 조건부 서열 조회 (개념 실습)

python
# API 이동과 SDK 버전 변경 가능성을 의식한 개념 예시입니다.
# 실행 전 Biohub 공식 ESM3 README의 현재 client factory와 모델 ID를 확인합니다.
# 설치 명령은 Biohub 공식 ESM3 README의 현재 고정 revision을 사용합니다.
from esm.sdk import client
from esm.sdk.api import ESMProtein, GenerationConfig
# forge.evolutionaryscale.ai는 biohub.ai로 이전됐습니다.
model = client(model="esm3-open", url="https://biohub.ai", token="YOUR_API_TOKEN")
# 구조만 주어진 상태에서, 그 구조에 맞는 서열을 생성 요청
protein = ESMProtein(coordinates=my_backbone_coordinates) # 사전에 준비된 백본 좌표
generated = model.generate(
protein,
GenerationConfig(track="sequence", num_steps=8)
)
print(generated.sequence)

정확한 API 시그니처와 무료로 접근 가능한 범위(오픈 가중치 vs API 전용)는 공식 저장소·이용약관에서 최신 상태를 직접 확인해야 합니다.

CS 매핑

  • 멀티모달 토큰화(Multimodal Tokenization): 서로 다른 자료형(연속 좌표, 이산 서열, 주석 체계)을 하나의 이산 토큰 공간으로 통일하는 것은, 비전-언어 모델이 이미지 패치를 벡터양자화(VQ-VAE 등)로 토큰화해 텍스트 토큰과 나란히 다루는 방식과 원리적으로 같습니다.
  • 벡터 양자화(Vector Quantization): 연속 공간의 값을 유한한 코드북(codebook)의 대표값으로 근사하는 것은 손실 압축·클러스터링의 고전적 기법이며, 여기서는 구조 정보를 이산화하는 데 응용됩니다.
  • 조건부 생성모델(Conditional Generative Model): 특정 트랙을 조건으로 고정하고 다른 트랙을 샘플링하는 것은, 텍스트-이미지 생성모델에서 텍스트 프롬프트를 조건으로 이미지를 샘플링하는 것과 동일한 조건부 생성의 틀입니다.

자주 만나는 결함

  • 라이선스 이름 하나로 계열 전체를 판단: 코드 라이선스, 모델 가중치 라이선스와 호스팅 API 약관은 서로 다를 수 있습니다. 사용할 정확한 모델 ID와 배포 방식별 조건을 확인해야 합니다.
  • 구조 토큰화의 손실을 무시: 벡터 양자화는 근본적으로 손실 압축입니다. 미세한 구조적 차이가 중요한 응용(예: 활성 부위의 정밀한 형태)에서는 이 양자화 오차가 결과에 영향을 줄 수 있음을 감안해야 합니다.
  • 생성 결과를 검증 없이 실험으로 직행: 생성 모델이 만든 서열·구조는 어디까지나 가설입니다. F15에서 다룰 것처럼, AlphaFold류 모델로 재접힘을 확인하는 self-consistency 검증 없이 바로 실험 합성 단계로 넘어가는 것은 위험합니다.

더 깊게 파고 싶다면

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

  • ESM3 원 논문: Hayes et al. (2025), Simulating 500 million years of evolution with a language model, Science, DOI 10.1126/science.ads0018.
  • ESM3 공식 저장소·라이선스: github.com/evolutionaryscale/esm — 상업/비상업 이용 조건 최신 원문.
  • 벡터 양자화 배경: van den Oord et al. (2017), Neural Discrete Representation Learning(VQ-VAE), NeurIPS.

다음 편 F13에서는 단백질 서열을 아예 처음부터 생성하는 ProtT5·ProGen2로 넘어갑니다.