[reinvent 2024] Amazon Bedrock으로 프로토타입에서 프로덕션까지 생성적 AI 앱 코딩하기

Summary

Production 준비가 완료된 생성형 AI 애플리케이션을 구축하려면 핵심 모델 이상의 요소가 필요합니다. 이 세션에서는 Amazon Bedrock을 사용해 프로토타입에서 생산 환경으로 코딩하는 방법을 안내합니다. 실시간 모니터링, 안전성과 품질을 위한 자동화된 평가 프레임워크, 모델 입력과 출력을 제어하는 효과적인 Guardrail 설정 등의 최적화된 실습과정을 배울 수 있습니다. Code 예제와 실제 사례를 통해 생성형 AI 애플리케이션의 전체 lifecycle 관리 및 성공적인 배포를 위한 도구와 지식을 습득하며 모델 이외에 중요한 고려사항 등을 다뤄 안정적이고 안전한 생성형 AI를 생산 환경에서 효과적으로 운영할 수 있도록 합니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Code gen AI apps from prototype to production with Amazon Bedrock
  • Date: 2024년 12월 5일(목)
  • Venue: Wynn | Convention Promenade | Lafite 2
  • Speaker:
  • Santhosh Kuriakose(Sr AI/ML Specialist Solutions Architect, Amazon Web Services)
  • Oussama Kandakji(Sr. GTM SSA AIML GenAI Fr, Amazon Web Services)
  • Industry:
  • Cross Industry Solutions
  • Healthcare & Life Sciences

들어가며

생성형 AI를 프로덕션 환경에서 안전하고 신뢰할 수 있게 운영하려면 단순히 모델 성능에만 집중하는 것이 아니라, 전반적인 시스템 설계와 운영을 고려해야 합니다. 이번 세션은 Amazon Bedrock을 중심으로 프로토타입을 프로덕션 애플리케이션으로 전환하는 실질적인 과정을 탐구합니다.

세션은 다양한 AWS 서비스를 활용해 생성형 AI 애플리케이션을 설계, 배포, 운영하는 방법을 소개합니다. 문서 메타데이터 추출 자동화라는 실제 사례를 기반으로, Step Functions, Bedrock Guardrails, CloudWatch 등을 활용해 안전성과 효율성을 강화하는 과정을 다루며, 코드 예제와 실습 중심의 접근법으로 진행됩니다.

개인적으로 이 세션에서 가장 기대되는 점은 생성형 AI 애플리케이션의 실시간 모니터링과 안전성을 강화하는 방식을 배우는 것이었습니다. 특히, Bedrock Guardrails를 활용한 콘텐츠 안전성 보장과 AWS Step Functions로 구성된 작업 흐름 자동화가 실제 운영 환경에서 어떤 가치를 제공하는지 확인하고 싶었습니다. 또한, 기존에 사용해본 적 없는 Prompt Management와 Guardrails 통합 사례를 통해 프로덕션 준비의 핵심 과정을 배울 수 있을 것을 기대했습니다. 해당 세션은 저에게 단순한 기술 구현을 넘어, AI 배포의 모든 단계를 종합적으로 이해하는 데 큰 도움이 되었습니다.

Business Use Case

세션은 Joe라는 문서 관리 리더가 직면한 실제 비즈니스 챌린지로 시작됩니다. 그의 팀은 다양한 언어로 작성된 법률 계약서, HR 정책, 재무 보고서 등 방대한 문서를 관리해야 했습니다. 그러나 이를 수동으로 분류하고 요약하는 작업은 점점 더 많은 시간과 노력을 요구했고, 태깅 오류로 인해 데이터의 일관성을 유지하는 데 어려움을 겪게 되었습니다.

이 문제를 해결하기 위해 Joe는 AI 솔루션을 탐색하기 시작했습니다. 초기 단계에서는 간단한 프로토타입을 구현했는데, 이 프로토타입은 문서와 JSON 스키마를 입력으로 받아 파운데이션 모델을 활용해 메타데이터, 요약, 그리고 문서 카테고리를 생성하는 방식으로 설계되었습니다.

프로토타입의 전체적인 아키텍처는 아래와 같습니다.

  1. 파일 업로드 및 트리거
    사용자가 Amazon S3 버킷에 파일을 업로드하면 EventBridge가 이를 감지하고 워크플로우를 실행합니다.

  2. 문서 처리
    이 워크플로우는 Lambda 함수를 트리거하며, 해당 함수는 Amazon Bedrock API를 호출해 입력 파일과 JSON 스키마를 바탕으로 문서를 처리합니다.

  3. 결과 저장
    Bedrock에서 생성된 메타데이터와 요약은 DynamoDB에 저장되고, 이후 프론트엔드 애플리케이션에서 시각화됩니다.

이 프로토타입은 문서 처리 자동화의 가능성을 입증했지만, 프로덕션 단계로 전환하기 위해서는 몇 가지 중요한 개선이 필요했습니다. Joe의 팀은 이제 이러한 부족한 부분을 해결하고, 더욱 강력하고 안정적인 시스템을 구축하기 위한 다음 단계를 준비하게 됩니다.

예를 들어, 프로토타입은 다음과 같은 한계를 가지고 있었습니다.

  • 안정성 부족 : 모델의 환각(hallucination) 문제와 유해 콘텐츠 필터링 부재.
  • 사람의 검토 미포함 : 자동화된 결과에 대한 품질 보장을 위한 인간 검토 루프가 필요.
  • 가시성의 부족 : 요청-응답 흐름을 추적할 수 있는 실시간 모니터링 기능 부재.
  • 프롬프트 관리 : 프롬프트의 버전 관리 기능 부재.

이 문제를 해결하기 위해, Joe의 팀은 프로토타입을 확장하고 강화하여 생산 준비가 된 애플리케이션으로 전환하였습니다. 

  1. 프롬프트 관리 기능 도입 (Amazon Bedrock Prompt Management)

Amazon Bedrock의 프롬프트 관리 기능을 활용해 모델과 프롬프트를 최적화하고, 도구 사용 및 함수 호출을 통해 JSON 스키마를 강제로 적용할 수 있도록 설계했습니다. 이를 통해 일관성 있는 데이터 출력과 보다 신뢰할 수 있는 결과를 보장할 수 있었습니다.

  1. 가드레일 도입(Amazon Bedrock Guardrails)

Guardrails를 통해 콘텐츠 안전성을 강화했습니다. 콘텐츠 정책을 설정해 혐오 발언이나 폭력성을 감지하고, 맥락적 접지를 통해 모델의  hallucination을 방지했습니다. 입력과 출력 콘텐츠의 안전성을 철저히 검증하는 과정을 추가함으로써, 더욱 신뢰할 수 있는 애플리케이션이 완성되었습니다.

  1. 관찰 가능성(Amazon Cloudwatch)

AWS CloudWatch의 추적 기능을 활성화해 엔드투엔드 실행 과정을 시각화하고, Lambda와 Step Functions의 동작을 세부적으로 추적할 수 있도록 했습니다. 이를 통해 문제를 빠르게 진단하고 시스템의 상태를 명확히 파악할 수 있었습니다.

  1. 사람의 개입(Human in the Loop)

SNS 알림을 활용한 콘텐츠 검토 워크플로우를 설계해, 유해 콘텐츠가 발견되면 자동으로 인간 검토 프로세스가 트리거되도록 했습니다. 이러한 설계를 통해 자동화와 인간의 결정을 결합한 유연한 운영이 가능해졌습니다.

이러한 기능의 추가로 Joe의 팀은 초기 프로토타입에서 한층 더 발전한 Production용 애플리케이션을 구축할 수 있었습니다.

Demo

데모에서는 Joe가 구성한 아키텍처의 각 단계가 실제로 어떻게 작동하는지 확인할 수 있었습니다.

프롬프트 관리와 가드레일 설정, 콘텐츠 검토 워크플로우 구현 등을 구현한 방법이 설명되었으며, 이를 통해 개선된 아키텍처가 프로덕션 환경에서 요구하는 신뢰성과 확장성을 효과적으로 충족함을 입증했습니다.

1. Prompt Management

먼저, Amazon Bedrock의 프롬프트 관리 기능을 활용한 과정을 시연했습니다. JSON 스키마를 기반으로 모델 출력 형식을 강제 적용하기 위해 도구 사용(Tool Use)과 함수 호출을 설정했습니다.

프롬프트 관리 콘솔에서 최적화된 프롬프트를 생성하고, 이를 다양한 모델과 테스트하며 결과를 비교했습니다. 이후 API 호출에 최적화된 프롬프트를 통합해, 코드에서 JSON 스키마를 동적으로 처리하는 방법을 구현했습니다.

2. 가드레일 설정 및 적용

    다음으로, 가드레일을 설정하고 이를 Amazon Bedrock 호출에 적용한 사례를 보여주었습니다.

    • Content Policy을 통해 혐오 발언과 같은 유해 콘텐츠를 감지하도록 설정했습니다.
    • Contextual Grounding를 활용해 모델 출력이 입력 데이터와 일치하지 않을 경우 이를 차단했습니다.

    3. 관찰 가능성 강화

    AWS CloudWatch를 활용한 엔드투엔드 실행 추적 과정을 시연했습니다.

    • S3 버킷에 파일 업로드 시 Step Functions가 실행되고, Lambda 함수가 Bedrock API를 호출하며 데이터를 처리하는 전체 워크플로우가 트레이스 맵(Trace Map)으로 시각화되었습니다.
    • 또한 log와 metrics가 각 단계별로 수집되어, 시스템 상태와 실행 흐름을 명확히 파악할 수 있음을 보여주었습니다.

    4. 인간 검토 프로세스

    마지막으로, SNS 알림을 활용한 인간 검토 프로세스를 시연했습니다.

    • 유해 콘텐츠가 포함된 문서 업로드시, 가드레일이 감지하고 SNS를 통해 알림을 전송합니다.
    • 검토자는 전송된 알림을 통해 시스템에 접속하고 콘텐츠를 확인한 뒤 적절한 조치를 취했습니다.

    이 과정은 Step Functions 워크플로우에 포함되어, 프로세스가 자동으로 실행되고 검토 결과에 따라 시스템이 다음 단계를 처리했습니다.

    결론

    이번 세션에서는 AWS 서비스를 활용하여 생성형 AI 프로토타입을 실제 프로덕션 애플리케이션으로 발전시키는 방법을 다뤘습니다. AI 시스템의 안전성, 가시성, 자동화에 중점을 두고, Amazon Bedrock, AWS Step Functions, Guardrails, Prompt Management 등을 통해 AI 애플리케이션을 신뢰할 수 있는 환경에 배포하는 기술적 방안을 소개했습니다.

    세션을 통해 생성형 AI 애플리케이션에서 모델의 정확성과 콘텐츠 안전성을 보장하는 방법을 배웠습니다. 특히, Guardrails와 Prompt Management 기능을 사용하여 유해 콘텐츠와 모델 오류를 사전에 차단하고, 안정적인 결과를 제공할 수 있는 시스템을 구축하는 방법을 이해했습니다. 또한, 윤리적 요소를 반영한 시스템 설계가 AI의 책임성과 신뢰성을 높이는 데 중요한 역할을 한다는 점을 깨달았습니다.

    AWS 도구를 활용해 AI 시스템의 안전성, 가시성, 효율성을 강화하는 방법을 배우는 유익한 기회였으며, 실제 프로젝트에 이를 적용할 수 있는 실질적인 인사이트를 얻을 수 있었던 시간이었습니다.

    글 │메가존클라우드, AI & Data Analytics Center (ADC), Data Architecture Team, 조민경 매니저
    게시물 주소가 복사되었습니다.