View a markdown version of this page

배치 추론의 코드 예제 - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

배치 추론의 코드 예제

이 장의 코드 예제에서는 배치 추론 작업을 만들고, 이에 대한 정보를 보고, 작업을 중지하는 방법을 보여줍니다. 이 예제에서는 InvokeModel API 형식을 사용합니다. Converse API 형식 사용에 대한 자세한 내용은 섹션을 참조하세요추론 데이터의 형식 지정 및 업로드.

언어를 선택하여 해당 언어의 코드 예제를 확인하세요.

Python

abc.jsonl이라는 JSONL 파일을 생성하고 최소 레코드 수가 포함된 각 레코드에 대한 JSON 객체를 포함합니다({Model}의 배치 추론 작업당 최소 레코드 수 Amazon Bedrock의 할당량 참조). 이 예제에서는 Anthropic Claude 3 Haiku 모델을 사용합니다. 다음은 파일에 포함된 첫 번째 입력 JSON의 예제입니다.

{ "recordId": "CALL0000001", "modelInput": { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Summarize the following call transcript: ..." } ] } ] } } ... # Add records until you hit the minimum

amzn-s3-demo-bucket-input이라는 S3 버킷을 만들고 여기에 파일을 업로드합니다. 그런 다음 amzn-s3-demo-bucket-output이라는 S3 버킷을 만들어 출력 파일을 씁니다. 다음 코드 스니펫을 실행하여 작업을 제출하고 응답에서 jobArn을 가져옵니다.

import boto3 bedrock = boto3.client(service_name="bedrock") inputDataConfig=({ "s3InputDataConfig": { "s3Uri": "s3://amzn-s3-demo-bucket-input/abc.jsonl" } }) outputDataConfig=({ "s3OutputDataConfig": { "s3Uri": "s3://amzn-s3-demo-bucket-output/" } }) response=bedrock.create_model_invocation_job( roleArn="arn:aws:iam::123456789012:role/MyBatchInferenceRole", modelId="anthropic.claude-3-haiku-20240307-v1:0", jobName="my-batch-job", inputDataConfig=inputDataConfig, outputDataConfig=outputDataConfig ) jobArn = response.get('jobArn')

작업의 status를 반환합니다.

bedrock.get_model_invocation_job(jobIdentifier=jobArn)['status']

실패한 배치 추론 작업을 나열합니다.

bedrock.list_model_invocation_jobs( maxResults=10, statusEquals="Failed", sortOrder="Descending" )

시작한 작업을 중지합니다.

bedrock.stop_model_invocation_job(jobIdentifier=jobArn)
Java
package com.amazon.aws.sample.bedrock.inference; import software.amazon.awssdk.services.bedrock.BedrockClient; import software.amazon.awssdk.services.bedrock.model.*; public class BedrockBatchInference { private final BedrockClient bedrockClient = BedrockClient.create(); public void createModelInvokeJobSampleCode() { CreateModelInvocationJobResponse response = bedrockClient.createModelInvocationJob(request -> request .modelId("anthropic.claude-haiku-4-5-20251001-v1:0") .jobName("unique-job-name") .roleArn("arn:aws:iam::123456789:role/bedrock-role") .clientRequestToken("client-token") .inputDataConfig(input -> input .s3InputDataConfig(s3 -> s3 .s3Uri("s3://batch-input/abc.jsonl") .s3InputFormat(S3InputFormat.JSONL))) .outputDataConfig(output -> output .s3OutputDataConfig(s3 -> s3 .s3Uri("s3://batch-output/")))); System.out.println(response.jobArn()); } public void getModelInvokeJobSampleCode() { GetModelInvocationJobResponse response = bedrockClient.getModelInvocationJob(request -> request .jobIdentifier("jobArn")); System.out.println(response.status()); } public void listModelInvokeJobSampleCode() { ListModelInvocationJobsResponse response = bedrockClient.listModelInvocationJobs(request -> request .maxResults(10) .nameContains("matching-string")); response.invocationJobSummaries().forEach(job -> System.out.println(job.jobName() + ": " + job.status())); } public void stopModelInvokeJobSampleCode() { bedrockClient.stopModelInvocationJob(request -> request .jobIdentifier("jobArn")); } }