Amazon Redshift ML과 Amazon Bedrock의 통합 - Amazon Redshift

Amazon Redshift ML과 Amazon Bedrock의 통합

이 섹션에서는 Amazon Redshift ML과 Amazon Bedrock의 통합을 사용하는 방법에 대해 설명합니다. 이 기능을 사용하면 SQL을 사용하여 Amazon Bedrock 모델을 간접적으로 호출할 수 있으며 Amazon Redshift 데이터 웨어하우스의 데이터를 사용하여 텍스트 작성, 감정 분석 또는 번역과 같은 생성형 AI 애플리케이션을 구축할 수 있습니다.

Amazon Redshift ML과 Amazon Bedrock의 통합을 위한 IAM 역할 생성 또는 업데이트

이 섹션에서는 Amazon Redshift ML과 Amazon Bedrock의 통합에 사용할 IAM 역할을 만드는 방법에 대해 보여 줍니다.

Amazon Redshift ML과 Amazon Bedrock의 통합에 사용하는 IAM 역할에 다음 정책을 추가합니다.

  • AmazonBedrockFullAccess

Amazon Redshift가 다른 서비스와 상호 작용하는 역할을 맡도록 허용하려면 IAM 역할에 다음의 신뢰 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

클러스터 또는 네임스페이스가 VPC에 있는 경우 Amazon Redshift 기계 학습 관리를 위한 클러스터 및 구성 설정에 나와 있는 설명을 따릅니다.

더 제한적인 정책이 필요한 경우 다음 페이지에 명시된 Amazon Bedrock 권한만 포함하는 정책을 생성할 수 있습니다.

IAM 역할 생성에 관한 자세한 내용은 AWS Identity and Access Management 사용 설명서에 나와 있는 IAM 역할 생성 섹션을 참조하시기 바랍니다.

Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 생성

이 섹션에서는 Amazon Redshift 데이터 웨어하우스 내에서 Amazon Bedrock의 인터페이스로 사용할 외부 모델을 생성하는 방법을 보여 줍니다.

Amazon Redshift에서 Amazon Bedrock 모델을 간접적으로 호출하려면 먼저 CREATE EXTERNAL MODEL 명령을 실행해야 합니다. 이 명령을 사용하면 데이터베이스에 외부 모델 객체와 Amazon Bedrock을 사용하여 텍스트 콘텐츠를 작성하는 데 사용하는 관련 사용자 함수가 만들어집니다.

다음 코드 예제는 기본 CREATE EXTERNAL MODEL 명령을 보여 줍니다.

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:');

CREATE EXTERNAL MODEL 명령은 메시지를 지원하는 모든 파운데이션 모델(FM)에 대해 Amazon Bedrock과 일관된 통합 인터페이스를 제공합니다. CREATE EXTERNAL MODEL 명령을 사용하거나 요청 유형을 UNIFIED로 명시적으로 지정할 경우의 기본 옵션입니다. 자세한 내용은 Amazon Bedrock API 설명서에 나와 있는 Converse API 설명서를 참조하시기 바랍니다.

FM이 메시지를 지원하지 않는 경우 request_type 설정을 RAW로 설정해야 합니다. request_typeRAW로 설정하면 선택한 FM을 기반으로 추론 함수를 사용할 경우 Amazon Bedrock에 전송된 요청을 구성해야 합니다.

CREATE EXTERNAL MODEL 명령의 PROMPT 파라미터는 정적 프롬프트입니다. 애플리케이션에 동적 프롬프트가 필요하면 추론 함수 사용 시 동적 프롬프트를 지정해야 합니다. 자세한 내용은 다음 Amazon Redshift ML과 Amazon Bedrock의 통합 시 프롬프트 엔지니어링 섹션을 참조하시기 바랍니다.

CREATE EXTERNAL MODEL 스테이트먼트와 해당 파라미터, 설정에 대한 자세한 내용은 CREATE EXTERNAL MODEL 섹션을 참조하시기 바랍니다.

Amazon Redshift ML과 Amazon Bedrock의 통합용 외부 모델 사용

이 섹션에서는 외부 모델을 간접적으로 호출하여 제공된 프롬프트에 대한 응답으로 텍스트를 작성하는 방법을 보여 줍니다. 외부 모델을 간접적으로 호출하려면 CREATE EXTERNAL MODEL로 생성한 추론 함수를 사용합니다.

UNIFIED 요청 유형 모델로 추론

UNIFIED 요청 유형이 있는 모델의 추론 함수에는 함수에 전달되는 다음 3가지 파라미터가 순서대로 포함됩니다.

  • 입력 텍스트(필수): 이 파라미터는 Amazon Redshift가 Amazon Bedrock에 전달하는 입력 텍스트를 지정합니다.

  • 추론 구성추가 모델 요청 필드(선택 사항): Amazon Redshift는 이러한 파라미터를 Converse 모델 API의 해당 파라미터에 전달합니다.

다음 코드 예제는 UNIFIED 유형 추론 함수를 사용하는 방법을 보여 줍니다.

SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500)) FROM some_data;

RAW 요청 유형 모델로 추론

RAW 요청 유형이 있는 모델의 추론 함수에는 SUPER 데이터 유형의 파라미터가 하나만 포함됩니다. 이 파라미터의 구문은 사용된 Amazon Bedrock 모델에 따라 달라집니다.

다음 코드 예제는 RAW 유형 추론 함수를 사용하는 방법을 보여 줍니다.

SELECT llm_titan_func( object( "inputText", "Summarize the following text: " | input_text, "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500) ) ) FROM some_data;

리더 전용 함수로서의 추론 함수

Amazon Bedrock 모델의 추론 함수는 이를 사용하는 쿼리가 테이블을 참조하지 않을 때 리더 노드 전용 함수로 실행될 수 있습니다. 이는 LLM에 빠르게 질문하려는 경우에 유용할 수 있습니다.

다음 코드 예제는 리더 전용 추론 함수를 사용하는 방법을 보여 줍니다.

SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');

추론 함수 사용 정보

Amazon Redshift ML과 Amazon Bedrock의 통합으로 추론 함수를 사용할 때 다음 사항을 참고하시기 바랍니다.

  • 모든 Amazon Bedrock 모델의 파라미터 이름은 대문자와 소문자를 구분합니다. 파라미터가 모델에 필요한 파라미터와 일치하지 않으면 Amazon Bedrock에서는 조용히 파라미터를 무시할 수 있습니다.

  • 추론 쿼리의 처리량은 Amazon Bedrock이 제공하는 다양한 모델의 런타임 할당량에 따라 다른 리전에서 제한됩니다. 자세한 내용은 Amazon Bedrock 사용 설명서에 나와 있는 Amazon Bedrock 할당량을 참조하시기 바랍니다.

  • 안정적이고 일관된 처리량이 필요한 경우 Amazon Bedrock에서 필요한 모델의 프로비저닝 처리량을 가져오는 것이 좋습니다. 자세한 내용은 Amazon Bedrock 사용 설명서에 나와 있는 Amazon Bedrock의 프로비저닝 처리량으로 모델 간접 호출 용량 증대를 참조하시기 바랍니다.

  • 대량 데이터가 포함된 추론 쿼리에서는 스로틀링 예외가 발생할 수도 있습니다. 이는 Amazon Bedrock의 런타임 할당량이 제한되어 있기 때문입니다. Amazon Redshift는 요청을 여러 번 재시도하지만, 프로비저닝되지 않은 모델의 처리량이 가변적일 수 있으므로 쿼리는 여전히 스로틀링될 수 있습니다.

Amazon Redshift ML과 Amazon Bedrock의 통합 시 프롬프트 엔지니어링

이 섹션에서는 외부 모델에서 정적 프롬프트를 사용하는 방법을 보여 줍니다.

외부 모델에 정적 접두사 및 접미사 프롬프트를 사용하려면 CREATE EXTERNAL MODEL 스테이트먼트에서 PROMPTSUFFIX 파라미터를 사용하여 제공합니다. 이러한 프롬프트는 외부 모델을 사용하여 모든 쿼리에 추가됩니다.

다음 예제에서는 외부 모델에 접두사 및 접미사 프롬프트를 추가하는 방법을 보여 줍니다.

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:', SUFFIX 'Respond in an analytic tone');

동적 프롬프트를 사용하려면 추론 함수 사용 시 함수 입력에 이를 연결하여 제공할 수 있습니다. 다음 예제에서는 추론 함수와 함께 동적 프롬프트를 사용하는 방법을 보여 줍니다.

SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.') FROM some_data