Communitygithub.com

ESM2 단백질 언어 모델

생물의학 연구를 위한 AI 에이전트 스킬 컬렉션으로, 유전체학, 단백질체학, 단일세포 분석, 임상 AI, 단백질 디자인을 다룹니다.

ESM2 단백질 언어 모델란 무엇인가요?

이 스킬은 ESM2(Evolutionary Scale Modeling 2) 단백질 언어 모델을 활용하여 생물정보학 연구를 수행하는 방법을 제공합니다. ESM2는 단백질 서열을 이해하고 예측하는 데 특화된 AI 모델로, 서열의 자연스러움 점수(PLL), 임베딩 추출, 변이 효과 예측 등 다양한 기능을 지원합니다. 사용자는 Modal 클라우드 환경이나 로컬 Python API를 통해 모델을 실행할 수 있으며, GPU VRAM 8GB 이상의 환경에서 최적화되어 있습니다. 특히 esm2_t33_650M 모델은 표준 연구 작업에 적합하며, 100개 서열 처리에 약 5~10분이 소요되어 효율적인 단백질 분석 파이프라인을 구축할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add BioTender-max/awesome-bio-agent-skills

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

ESM2 단백질 언어 모델은(는) 무엇을 하나요?

사전 요구 사항

요구 사항최소권장
Python3.8+3.10
PyTorch1.10+2.0+
CUDA11.0+11.7+
GPU VRAM8GB24GB (A10G)
RAM16GB32GB

실행 방법

처음 사용하시나요? Modal 및 biomodals 설정을 위해 설치 가이드를 확인하세요.

옵션 1: Modal

cd biomodals
modal run modal_esm2_predict_masked.py \
  --input-faa sequences.fasta \
  --out-dir embeddings/

GPU: A10G (24GB) | 타임아웃: 기본 300초

옵션 2: Python API (권장)

import torch
import esm

# 모델 로드
model, alphabet = esm.pretrained.esm2_t33_650M_UR50D()
batch_converter = alphabet.get_batch_converter()
model = model.eval().cuda()

# 서열 처리
data = [("seq1", "MKTAYIAKQRQISFVK...")]
batch_labels, batch_strs, batch_tokens = batch_converter(data)

with torch.no_grad():
    results = model(batch_tokens.cuda(), repr_layers=[33])

# 임베딩 추출
embeddings = results["representations"][33]

주요 파라미터

ESM2 모델

모델파라미터속도품질
esm2_t6_8M8M가장 빠름빠른 스크리닝
esm2_t12_35M35M빠름좋음
esm2_t33_650M650M보통더 좋음
esm2_t36_3B3B느림최고

출력 형식

embeddings/
├── embeddings.npy       # (N, 1280) 배열
├── pll_scores.csv       # 각 서열의 PLL
└── metadata.json        # 서열 정보

샘플 출력

성공적인 실행 예

$ modal run modal_esm2_predict_masked.py --input-faa designs.fasta
[INFO] ESM2-650M 모델 로딩 중...
[INFO] 100개 서열 처리 중...
[INFO] 유사 로그 가능도 계산 중...

embeddings/pll_scores.csv:
sequence_id,pll,pll_normalized,length
design_0,-0.82,0.15,78
design_1,-0.95,0.08,85
design_2,-1.23,-0.12,72
...

요약:
  평균 PLL: -0.91
  PLL > 0 인 서열: 42/100 (42%)

좋은 출력의 특징:

  • PLL_normalized: > 0.0 (더 자연스러운 서열)
  • 임베딩 shape: (N, 1280) (650M 모델 기준)
  • 높은 PLL = 더 자연스러운 서열

결정 트리

ESM2를 사용해야 할까?
│
├─ 무엇이 필요한가?
│  ├─ 서열 타당성 점수 → ESM2 PLL ✓
│  ├─ 클러스터링용 임베딩 → ESM2 ✓
│  ├─ 변이 효과 예측 → ESM2 ✓
│  └─ 구조 예측 → ESMFold 사용
│
├─ 어떤 모델 크기?
│  ├─ 빠른 스크리닝 → esm2_t12_35M
│  ├─ 표준 사용 → esm2_t33_650M ✓
│  └─ 최고 품질 → esm2_t36_3B
│
└─ 사용 사례?
   ├─ QC 필터링 → PLL > 0.0 임계값
   ├─ 다양성 분석 → 평균 풀링 임베딩
   └─ 돌연변이 스캐닝 → 위치별 로그 오즈

PLL 해석

정규화된 PLL해석
> 0.2매우 자연스러운 서열
0.0 - 0.2좋음, 자연스러움
-0.5 - 0.0허용 가능
< -0.5부자연스러울 수 있음

일반적인 성능

캠페인 규모시간 (A10G)비용 (Modal)비고
100개 서열5-10분~$1빠른 스크리닝
1000개 서열30-60분~$5표준
5000개 서열2-3시간~$20대량 배치

처리량: 650M 모델 기준 분당 ~100-200개 서열.


검증

wc -l embeddings/pll_scores.csv  # 입력 파일 + 1 (헤더)과 일치해야 함

문제 해결

OOM 오류: 더 작은 모델을 사용하거나 서열을 배치로 처리하세요. 느린 처리: 속도를 위해 esm2_t12_35M을 사용하세요. 낮은 PLL 점수: 비정상적이거나 인공적으로 디자인된 서열일 수 있습니다.

오류 해석

오류원인해결 방법
RuntimeError: CUDA out of memory서열이 너무 길거나 배치가 큼배치 크기 줄이기
KeyError: representation잘못된 레이어 요청650M 모델은 레이어 33 사용
ValueError: sequence유효하지 않은 아미노산비표준 아미노산 확인

다음 단계: chai 또는 boltz로 구조 예측 → protein-qc로 필터링.

관련 스킬