Amazon Bedrock AgentCore로 구현한 단백질 연구 자동화

수천 개의 펩타이드 서열 사이에서 구조적으로 유사한 후보를 찾기 위해 일일이 검색하고 해석하는 과정은 고도의 도메인 지식을 소모하는 비효율적인 작업이다. 이러한 병목을 해결하기 위해 Strands Agents SDK와 Amazon Bedrock AgentCore를 결합하여 자연어로 단백질을 검색하고 분석하는 연구 어시스턴트를 구축했다.

시스템의 중심에는 AI 에이전트 호스팅을 위한 관리형 런타임인 Amazon Bedrock AgentCore가 있다. 개발자가 서버 인프라를 직접 관리하지 않고도 AI 에이전트를 배포하고 운영할 수 있는 환경을 제공한다. 여기에 여러 전문 도구를 적절한 순서로 호출해 복잡한 연구 워크플로를 완수하는 Strands Agents SDK를 적용했다. 데이터 저장소로는 Amazon Aurora PostgreSQL-Compatible Edition을 사용하며, `pgvector` 확장 기능을 통해 펩타이드의 구조적 특성을 숫자로 변환한 임베딩 값을 저장하고 고속 유사도 검색을 수행한다.

데이터셋은 IEDB virus epitope dataset에서 추출한 1,000개의 선형 펩타이드 샘플로 검증했다. 연구자가 자연어로 쿼리를 입력하면 시스템은 이를 해석해 필요한 파라미터를 추출하고, 자동으로 임베딩을 생성해 데이터베이스에서 유사한 서열을 찾아낸다. 마지막으로 AI가 검색된 결과에 과학적 맥락을 더해 분석 요약문을 작성하며, 이 모든 과정은 단일 대화형 인터페이스 내에서 진행된다.

기술이 실제로 작동하는 방식

단일 오케스트레이터 에이전트가 파서, 서처, 요약자라는 세 가지 전문 도구를 호출해 전체 워크플로를 제어한다. 오케스트레이터는 사용자의 쿼리를 분석해 도구 호출 순서를 결정하며, 첫 단계인 파서 도구는 자연어 쿼리를 분석해 검색에 필요한 구조화된 파라미터로 추출한다. 파이썬 함수를 LLM이 호출할 수 있는 도구로 정의하기 위해 `@tool` 데코레이터를 사용하며, 함수의 독스트링과 타입 힌트를 통해 LLM이 도구의 용도를 이해하도록 돕는다.

python
@tool
def parser_tool(query: str):
 """Extracts structured parameters from a natural language query."""
 return parser_agent.run(query)

서처 도구는 SageMaker AI에서 생성한 단백질 임베딩과 pgvector 유사도 검색을 결합해 실제 후보 서열을 찾아낸다. 연구자가 요청한 서열을 벡터로 변환한 뒤, 데이터베이스에 저장된 펩타이드 임베딩들과의 거리를 계산해 가장 유사한 항목을 반환한다. SageMaker AI 엔드포인트에서 생성된 임베딩 값은 즉시 pgvector 쿼리로 전달되어 유사 서열을 필터링한다.

python
@tool
def searcher_tool(peptide_sequence: str, species: str = None):
 """Searches for similar peptides using embeddings and pgvector."""
 embedding = sagemaker_endpoint.predict(peptide_sequence)
 return db.similarity_search(embedding, species)

요약자 도구는 검색된 결과에 과학적 맥락을 더해 최종 분석 리포트를 작성하는 전용 에이전트로 작동한다. 이 시스템은 파서와 요약자 에이전트 자체를 오케스트레이터의 도구로 래핑하여 사용하는 agents-as-tools 패턴을 적용했다. 파서가 추출한 파라미터가 서처를 거쳐 요약자로 전달되는 데이터 흐름을 오케스트레이터가 최종적으로 조율한다.

python
@tool
def summarizer_tool(search_results: list):
 """Summarizes search results with scientific context."""
 return summarizer_agent.run(search_results)

이러한 계층적 설계는 각 도구가 고유의 프롬프트와 전문성을 가진 독립 에이전트로 작동하게 하면서, 전체 실행 흐름은 하나의 중앙 제어 장치가 관리하게 하여 연구 프로세스를 완결한다.

ESM-C 300M 모델과 서버리스 추론 최적화

에이전트의 논리적 흐름을 뒷받침하는 것은 실제 단백질 서열을 벡터로 변환하는 임베딩 모델의 효율성이다. EvolutionaryScale에서 개발한 ESM-C 300M 모델은 아미노산 서열의 구조적, 기능적 특성을 960차원의 벡터로 변환한다. 생물학적 기능이 유사한 두 펩타이드는 벡터 공간에서 서로 가까운 위치에 배치되므로, 복잡한 서열 정렬 과정 없이도 유사도 검색이 가능하다.

이 모델은 Amazon SageMaker AI 서버리스 엔드포인트에 배포하여 운영 비용을 최적화했다. 메모리 6144 MB, 최대 동시성 5, PyTorch 2.6.0 CPU 추론 컨테이너 설정을 적용했다. 서버리스 특성상 요청이 없는 유휴 상태에서는 비용이 발생하지 않으며, 요청 시에만 자동으로 확장된다. 특히 추론 시점에 HuggingFace에서 모델 가중치를 다운로드하는 시간을 줄이기 위해 가중치를 배포 아티팩트에 직접 번들링하여 콜드 스타트 지연 시간을 단축했다.

모델 패키징 과정은 `from_pretrained`를 통해 가중치를 내려받아 state dict를 저장하고, 이를 `model.tar.gz` 형태로 묶어 SageMaker AI의 code 디렉터리 구조에 맞게 구성하는 방식으로 진행된다. 추론 핸들러인 `predict_fn`은 입력된 단백질 서열을 인코딩한 뒤 평균 풀링된 임베딩을 결과값으로 반환한다.

운영 단계에서 서버리스 엔드포인트는 유휴 상태 이후 첫 호출 시 컨테이너 초기화와 가중치 로딩으로 인해 2~3분의 콜드 스타트 지연 시간이 발생한다. 다만 한 번 활성화된 이후의 호출은 수 초 내에 완료된다. 더 높은 구조적 유사도 정확도가 필요한 환경이라면 ESM-C 600M이나 ESM2 모델을 대안으로 검토해야 하며, 실시간 응답이 필수적인 서비스인지에 따라 서버리스와 프로비저닝 엔드포인트 중 하나를 선택하는 것이 합리적이다.

CloudFormation과 Fargate를 이용한 엔드투엔드 배포

AWS CloudFormation을 사용해 VPC, NAT 게이트웨이, VPC 엔드포인트 등 전체 인프라 프로비저닝을 자동화했다. 프라이빗 서브넷을 생성하고 Amazon Bedrock, Amazon RDS Data API, AWS Secrets Manager를 위한 전용 VPC 엔드포인트를 배치해 에이전트 런타임이 내부망에서 서비스에 접근하도록 설계했다. 인프라 코드화(IaC)를 통해 설정 누락으로 인한 연결 오류 가능성을 차단했다.

데이터베이스 연결에는 Amazon RDS Data API를 도입했다. 에이전트 런타임과 DB 사이의 통신을 HTTPS 기반으로 처리하므로, 런타임이 DB에 직접적인 네트워크 연결을 가질 필요가 없다. 덕분에 AgentCore 배포 시 네트워크 요구사항이 단순해졌으며, 별도의 VPN이나 복잡한 라우팅 설정 없이도 안전한 데이터 접근이 가능하다.

배포 파이프라인은 AWS CodeBuild를 통해 컨테이너 기반의 에이전트 코드를 직접 빌드하고 배포하며, 프론트엔드는 AWS Fargate에서 구동된다. Fargate 이미지에는 streamlit, pandas, boto3만 포함해 경량화했으며, 무거운 ML 라이브러리를 제외해 컨테이너 시작 속도와 메모리 효율을 높였다.

사용자 UI는 Streamlit으로 구현했으며, `bedrock-agentcore` boto3 클라이언트를 통해 AgentCore 런타임과 통신한다. 화면은 파싱된 쿼리 파라미터를 보여주는 확장 섹션, 코사인 거리 기반의 정렬 가능한 유사 펩타이드 테이블, AI가 작성한 과학적 요약 섹션의 세 부분으로 구성된다. 연구자는 검색 결과 테이블에서 유사도 수치를 확인하고 CSV 파일로 내려받아 후속 분석에 활용할 수 있다.

실무 도입 시 고려해야 할 비용과 성능의 트레이드오프

데이터베이스 리소스는 Amazon Aurora Serverless v2 기준 0.5에서 4 ACU(Aurora Capacity Unit) 범위의 자동 스케일링 설정이 필요하다. 이는 메모리 기준으로 1GB에서 8GB RAM에 해당하며 펩타이드 임베딩과 메타데이터를 처리하는 부하에 따라 조절된다. 데이터 양이 늘어날수록 벡터 연산에 필요한 메모리 점유율이 높아지므로, ACU 상한선을 너무 낮게 잡으면 메모리 부족으로 쿼리가 실패하거나 응답 시간이 늘어날 수 있다.

초기 구축 단계에서는 1,000개의 샘플 데이터로 검증했지만, 실제 대규모 데이터셋으로 확장할 때는 임베딩 생성 비용이 변수가 된다. 수만 건 이상의 펩타이드 서열을 처리하려면 모든 데이터에 대해 SageMaker AI 엔드포인트를 호출해야 하며 이 과정에서 추론 비용이 누적된다. 또한 pgvector를 이용한 벡터 인덱싱 시간 역시 데이터 규모에 비례해 늘어나므로 정교한 마이그레이션 전략이 필요하다.

결국 인프라의 선택은 연구자의 시간 비용과 예산 사이의 트레이드오프를 계산하는 지점에서 결정된다. 분석 작업이 상시적이지 않고 간헐적으로 발생하는 연구 환경이라면 서버리스 엔드포인트가 가장 합리적인 선택지가 되며, 데이터 규모가 커질수록 단순한 검색 정확도보다 임베딩 생성 단계의 비용 효율성과 인덱스 업데이트 속도가 시스템 유지보수의 핵심 판단 기준이 된다.

수천 개의 서열을 수동으로 대조하며 시간을 보냈던 번거로움은 이제 자연어 쿼리 한 줄로 대체된다. 다만 실무자는 2~3분의 콜드 스타트 지연 시간을 감수하며 비용을 극단적으로 절감할 것인지, 아니면 즉각적인 응답 속도를 위해 프로비저닝 비용을 지불할 것인지 명확히 결정해야 한다.