Amazon Web Services 한국 블로그

Amazon Bedrock, Meta의 Llama 2 Chat 13B 모델에 대한 액세스 정식 출시

이제 Amazon Bedrock에서 Meta의 LIama 2 Chat 13B 대규모 언어 모델(LLM)을 정식으로 사용할 수 있습니다. 이번 출시로 Amazon Bedrock은 Meta의 차세대 LLM인 Llama 2에 완전 관리형 API를 제공하는 최초의 퍼블릭 클라우드 서비스가 되었습니다. 이제 모든 규모의 조직은 기본 인프라를 관리할 필요 없이 Amazon Bedrock에서 Llama 2 Chat 모델에 액세스할 수 있습니다. 이는 접근성의 단계적 변화입니다.

Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Stability AI, Amazon 및 이제 Meta과 같은 선도적인 AI 회사의 고성능 파운데이션 모델(FM)과 생성형 AI 애플리케이션 구축을 위한 광범위한 기능을 제공하여 개발을 간소화하는 동시에 개인 정보 보호와 보안을 유지하는 완전관리형 서비스입니다. Amazon Bedrock에 대한 자세한 내용은 여기 Antje의 게시물에서 확인할 수 있습니다.

Llama 2는 Meta에서 공개적으로 사용할 수 있는 LLM 제품군입니다. Llama 2 기본 모델은 온라인 공개 데이터 소스에 있는 2조 개의 토큰을 기반으로 사전 훈련되었습니다. Meta에 따르면 Llama 2 13B의 훈련에는 시간당 184,320개의 GPU가 소모되었습니다. 이는 윤년을 제외하고 단일 GPU의 21.04년에 해당합니다.

기본 모델을 기반으로 구축된 Llama 2 Chat 모델은 대화 사용 사례에 최적화되어 있습니다. 100만 개 이상의 사람 주석(인간의 피드백을 통한 강화 학습 또는 RLHF로 알려진 기법)으로 미세 조정되었으며, 채팅 사용 사례에서 공격적이거나 부적절한 응답과 같이 성능 격차를 식별하고 잠재적으로 문제가 될 수 있는 응답을 완화하기 위해 Meta의 테스트를 거쳤습니다.

책임감 있고 협력적인 AI 혁신 생태계를 촉진하기 위해 Meta는 Llama 2를 사용하는 모든 사람, 즉 개인, 제작자, 개발자, 연구자, 학계 및 모든 규모의 기업을 위한 다양한 리소스를 구축했습니다. 특히 개발자를 위한 리소스인 Meta 책임 사용 가이드가 특징입니다. 이 가이드는 개발자를 위한 리소스로, 개발의 시작부터 배포까지 다양한 개발 단계를 다루면서 책임감 있는 방식으로 LLM을 기반으로 하는 제품을 구축하기 위한 모범 사례와 고려 사항을 제공합니다. 이 가이드는 책임감 있게 AI를 구축하도록 돕는 AWS 도구 및 리소스 세트에 포함되어 있습니다.

이제 Amazon Bedrock API를 호출하거나 AWS SDK 또는 AWS Command Line Interface(AWS CLI)를 사용하여 모든 프로그래밍 언어로 작성된 애플리케이션에 Llama 2 Chat 모델을 통합할 수 있습니다.

Llama 2 Chat 실행
AWS 뉴스 블로그를 정기적으로 읽으시는 분들은 우리가 AWS에서 다루는 기술을 소개해 드리는 것을 좋아한다는 사실을 알고 계실 것입니다. 이제 Llama2와 상호작용하는 코드를 작성해 보겠습니다.

저는 운이 좋게도 몇 주 전에 AWS UG Perú Conf에서 강연할 수 있었습니다. JeffMarcia도 그곳에 참석했습니다. Jeff는 생성형 AI에 대한 영감을 주는 강연으로 컨퍼런스를 시작했으며, 페루의 상징적인 동물인 라마의 생성형 이미지가 그려진 벽을 이용했습니다. 그렇다면 Llama 2 Chat와 관련하여 라마보다 더 좋은 주제는 무엇일까요?

(코드를 작성하기 전에 마추픽추를 방문했을 때 찍은 라마 사진 두 장을 꼭 공유하고 싶어요)

마추픽추의 백색 라마 마추픽추의 갈색 라마

Bedrock에서 새 모델을 사용하기 위해 먼저 콘솔에서 Amazon Bedrock으로 이동합니다. 왼쪽 하단 창에서 모델 액세스를 선택한 다음 오른쪽 상단의 편집 버튼을 선택하고 Lama 2 Chat 모델에 대한 액세스를 활성화합니다.

Bedrock Llama2가 액세스 허용

왼쪽 내비게이션 바의 Playgrounds에서 채팅을 선택하여 코드를 작성하지 않고도 모델과 상호 작용합니다.

Llama2를 위한 Bedrock chat playground

이제 모델에 액세스할 수 있으므로 노트북에서 코드 편집기를 엽니다. AWS SDK에서 AWS 자격 증명을 찾을 수 있도록 AWS Command Line Interface(AWS CLI)가 구성되어 있다고 가정합니다. 이 데모에서는 Python을 사용하지만 Bedrock을 모든 언어에서 호출할 수 있음을 알려드립니다. 또한 Swift 프로그래밍 언어로 작성된 동일한 코드 샘플에 대한 공개 gist도 공유합니다.

Python으로 돌아와서, 먼저 ListFoundationModels API 호출을 실행하여 Llama 2 Chat 13B용 modelId를 발견했습니다.

import boto3

bedrock = boto3.client(service_name='bedrock', region_name='us-east-1')
listModels = bedrock.list_foundation_models(byProvider='meta')
print("\n".join(list(map(lambda x: f"{x['modelName']} : { x['modelId'] }", listModels['modelSummaries']))))

다음 코드를 실행하면 목록이 생성됩니다.

Llama 2 Chat 13B : meta.llama2-13b-chat-v1

meta-llama2-chat-13b를 선택하고 LLama 2 Chat 13B 모델로 프롬프트를 보내는 코드를 작성합니다.

import boto3
import json

llamaModelId = 'meta.llama2-13b-chat-v1' 
prompt = “라마와 알파카의 차이점은 무엇입니까?”

llamaPayload = json.dumps({ 
	'prompt': prompt,
    'max_gen_len': 512,
	'top_p': 0.9,
	'temperature': 0.2
})

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime', 
    region_name='us-east-1'
)
response = bedrock_runtime.invoke_model(
    body=llamaPayload, 
    modelId=llamaModelId, 
    accept='application/json', 
    contentType='application/json'
)
body = response.get('body').read().decode('utf-8')
response_body = json.loads(body)
print(response_body['generation'].strip())

응답이 인쇄됩니다.

라마와 알파카는 둘 다 낙타과에 속합니다. 
그러나 그들은 신체적, 행동적 특성이 뚜렷하게 다른 종입니다. 
다음은 몇 가지 주요 차이점입니다. (...)

간결하게 보이기 위해 답변을 수정했습니다.

다양한 요청 파라미터를 조정하여 응답에 미치는 영향을 확인할 수 있습니다.

프롬프트 최적화하기
Llama 2 Chat 모델에서 최상의 결과를 얻으려면 역할 사용 또는 일련의 사고 프롬프트 사용과 같은 몇 가지 프롬프트 엔지니어링 기법을 실험해 볼 수 있습니다.

역할을 사용하면 질문을 하기 전에 모델에게 역할과 지침을 제공하여 모델이 어떻게 행동해야 하는지 알려줍니다. 예를 들면 다음과 같습니다.

프롬프트: 당신은 교사입니다. 여섯 살짜리 아이들한테 설명하고 있습니다.
라마와 알파카의 차이점은 무엇입니까?

답변: 좋은 질문입니다! 라마와 알파카는 모두 남아메리카에 서식하는 동물인데 생김새가 조금 비슷해요. 하지만 몇 가지 차이점에 대해 이야기할 수 있어요.
먼저 털에 대해 이야기해 볼께요. 라마는 알파카보다 털이 더 길어요. 마치 추운 날씨에 따뜻하게 지낼 수 있도록 크고 푹신한 코트를 입는 것과 같아요. 반면 알파카는 털이 짧아서 조금 더 부드러워요.
또 다른 차이점은 귀입니다. 라마는 바나나 모양의 귀가 정말 큰 반면 알파카는 작은 삼각형 귀를 가지고 있어요.
마지막으로 크기에 대해 이야기해 볼께요. 라마는 일반적으로 알파카보다 큽니다. 알파카는 키가 6피트까지 자랄 수 있고 무게가 많이 나가지만 알파카는 보통 더 작으며 키가 3피트까지만 자랍니다.
이것이 라마와 알파카의 주요 차이점 몇 가지입니다. 둘 다 정말 멋진 동물이고, 그들에 대해 배우는 것도 재미있어요!

사고의 연속적 프롬프트를 사용하여 답을 도출한 각 단계를 모델에게 설명하도록 요청합니다. 예를 들면 다음과 같습니다.

프롬프트: 당신은 뛰어난 비판적 사고력을 가진 매우 지능적인 봇입니다.
시장에 가서 사과 10개를 샀습니다. 친구에게 사과 두 개를, 도우미에게 두 개를 줬습니다. 그런 다음 사과 5개를 더 사서 1개를 먹었습니다. 사과가 몇 개 남았나요?
한 단계씩 생각해 봅시다.

답변:
1. 당신은 시장에 가서 사과 10개를 샀습니다.
2. 친구에게 사과 2개를 주었습니다.
3. 도우미에게 사과 2개를 주었습니다.
4. 당신은 시장으로 돌아가서 사과 5개를 더 샀습니다.
5. 그리고 사과 한 개를 먹었습니다.
이제 사과가 몇 개나 있는지 세어 봅시다.
사과 10개(처음 시장 방문에서) - 사과 2개(친구에게 제공) - 사과 2개(도우미에게 제공) = 사과 6개
사과 6개 + 사과 5개(두 번째 시장 방문에서) = 사과 11개
사과 11개 - 사과 1개(당신이 먹은 것) = 사과 10개
따라서 사과 10개가 남습니다.
이 답변이 도움이 되길 바래요! 더 궁금한 점이 있거나 다시 플레이하고 싶으신가요?

Meta는 Llama 노트북 알아보기 섹션 4.2에서 더 많은 예제를 공유했습니다.

가용성
현재 Lama 2 Chat 모델은 Bedrock을 이용할 수 있는 두 개의 AWS 리전, 즉 미국 동부(버지니아 북부)와 미국 서부(오레곤)의 모든 AWS 고객이 사용할 수 있습니다.

모델 추론에 대한 요금이 부과됩니다. 선결제 또는 기본 요금 없이 사용한 만큼만 요금을 청구하도록 선택할 수 있습니다. AWS는 처리된 입력 및 출력 토큰당 요금을 청구합니다. 또는 시간 기반 약정을 체결하여 충분한 처리량을 프로비저닝하여 애플리케이션의 성능 요구 사항을 충족할 수 있습니다. 세부 정보는 요금 페이지에서 확인할 수 있습니다.

이러한 정보를 바탕으로 애플리케이션에서 Amazon Bedrock과 Llama 2 Chat 모델을 사용할 준비가 되었습니다.

직접 구축해보세요!

— seb