기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프로비저닝된 처리량의 코드 예제
다음 코드 예제에서는 AWS CLI 및 Python SDK를 사용하여 프로비저닝된 처리량을 생성하는 방법과 이를 관리하고 호출하는 방법을 보여줍니다. 파운데이션 모델 또는 이미 사용자 지정한 모델에서 프로비저닝된 처리량을 생성할 수 있습니다. 시작하기 전에 다음 사전 조건을 수행합니다.
사전 조건
다음 예제에서는 Amazon Nova Lite 모델 ID가 인 모델을 사용합니다amazon.nova-lite-v1:0:24k. 아직 하지 않았다면의 단계에 Amazon Nova Lite 따라에 대한 액세스를 요청합니다SDK 및 CLI를 사용하여 모델 액세스 관리.
다른 파운데이션 모델 또는 사용자 지정 모델에 대해 프로비저닝된 처리량을 구매하려면 다음을 수행해야 합니다.
원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.
- AWS CLI
-
-
터미널에서 다음 명령을 실행하여 CreateProvisionedModelThroughput 요청을 전송하여 MyPT라는 커밋 없는 프로비저닝된 처리량을 생성합니다.
aws bedrock create-provisioned-model-throughput \
--model-units 1 \
--provisioned-model-name MyPT \
--model-id amazon.nova-lite-v1:0:24k
-
응답은 provisioned-model-arn을 반환합니다. 생성이 완료될 때까지 잠시 기다립니다. 상태를 확인하려면 GetProvisionedModelThroughput 요청을 보내고 다음 명령을 실행provisioned-model-id하여 프로비저닝된 모델의 이름 또는 ARN을 로 제공합니다.
aws bedrock get-provisioned-model-throughput \
--provisioned-model-id ${provisioned-model-arn}
-
InvokeModel 요청을 전송하여 프로비저닝된 모델로 추론을 실행합니다. CreateProvisionedModelThroughput 응답에서 반환된 프로비저닝된 모델의 ARN을 로 제공합니다model-id. 출력은 현재 폴더에서 output.txt 파일에 작성됩니다.
aws bedrock-runtime invoke-model \
--model-id ${provisioned-model-arn} \
--body '{
"messages": [{
"role": "user",
"content": [{
"text": "Hello"
}]
}],
"inferenceConfig": {
"temperature":0.7
}
}' \
--cli-binary-format raw-in-base64-out \
output.txt
-
다음 명령을 사용하여 프로비저닝된 처리량을 삭제하려면 DeleteProvisionedModelThroughput 요청을 보냅니다. 프로비저닝된 처리량에 대해서 더 이상 요금이 부과되지 않습니다.
aws bedrock delete-provisioned-model-throughput
--provisioned-model-id MyPT
- Python (Boto)
-
다음 코드 조각은 프로비저닝된 처리량을 생성하여 이에 대한 정보를 얻고 프로비저닝된 처리량을 호출하는 과정을 안내합니다.
-
MyPT라는 커밋 없는 프로비저닝된 처리량을 생성하고 프로비저닝된 처리량의 ARN을 provisioned_model_arn이라는 변수에 할당하려면 다음 CreateProvisionedModelThroughput 요청을 보냅니다.
import boto3
provisioned_model_name = 'MyPT'
bedrock = boto3.client(service_name='bedrock')
response = bedrock.create_provisioned_model_throughput(
modelUnits=1,
provisionedModelName=provisioned_model_name,
modelId='amazon.nova-lite-v1:0:24k'
)
provisioned_model_arn = response['provisionedModelArn']
-
생성이 완료될 때까지 잠시 기다립니다. 다음 코드 스니펫을 실행하여 상태를 확인할 수 있습니다. 프로비저닝된 처리량의 이름 또는 CreateProvisionedModelThroughput 응답에서 반환된 ARN을 provisionedModelId로 제공할 수 있습니다.
bedrock.get_provisioned_model_throughput(provisionedModelId=provisioned_model_name)
-
다음 명령을 사용하고 프로비저닝된 모델의 ARN을 로 사용하여 업데이트된 프로비저닝된 모델을 사용하여 추론을 실행합니다modelId.
import json
import logging
import boto3
from botocore.exceptions import ClientError
class ImageError(Exception):
"Custom exception for errors returned by the model"
def __init__(self, message):
self.message = message
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
def generate_text(model_id, body):
"""
Generate text using your provisioned custom model.
Args:
model_id (str): The model ID to use.
body (str) : The request body to use.
Returns:
response (json): The response from the model.
"""
logger.info(
"Generating text with your provisioned custom model %s", model_id)
brt = boto3.client(service_name='bedrock-runtime')
accept = "application/json"
content_type = "application/json"
response = brt.invoke_model(
body=body, modelId=model_id, accept=accept, contentType=content_type
)
response_body = json.loads(response.get("body").read())
finish_reason = response_body.get("error")
if finish_reason is not None:
raise ImageError(f"Text generation error. Error is {finish_reason}")
logger.info(
"Successfully generated text with provisioned custom model %s", model_id)
return response_body
def main():
"""
Entrypoint for example.
"""
try:
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
model_id = provisioned-model-arn
body = json.dumps({
"inputText": "what is AWS?"
})
response_body = generate_text(model_id, body)
print(f"Input token count: {response_body['inputTextTokenCount']}")
for result in response_body['results']:
print(f"Token count: {result['tokenCount']}")
print(f"Output text: {result['outputText']}")
print(f"Completion reason: {result['completionReason']}")
except ClientError as err:
message = err.response["Error"]["Message"]
logger.error("A client error occurred: %s", message)
print("A client error occured: " +
format(message))
except ImageError as err:
logger.error(err.message)
print(err.message)
else:
print(
f"Finished generating text with your provisioned custom model {model_id}.")
if __name__ == "__main__":
main()
-
다음 코드 스니펫을 사용해 프로비저닝된 처리량을 삭제합니다. 프로비저닝된 처리량에 대해서 더 이상 요금이 부과되지 않습니다.
bedrock.delete_provisioned_model_throughput(provisionedModelId=provisioned_model_name)