기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 모델 가져오기를 위한 코드 샘플
다음 코드 샘플은 권한을 설정하고, 사용자 지정 모델 가져오기 작업을 만들고, 가져오기 작업 및 가져온 모델의 세부 정보를 확인하고, 가져온 모델을 삭제하는 방법을 보여줍니다. 이러한 코드 샘플은 Mistral AI, Llama, Qwen, FlanGPTBigCode, 및 Mixtral 아키텍처에 적용됩니다.
중요: 모델 아키텍처 지원
GPT-OSS 모델 제한 사항:
-
Converse API 지원되지 않음: GPT-OSS 기반 사용자 지정 모델 가져오기 모델은 Converse API 또는 ConverseStream API를 지원하지 않습니다.
-
대신 InvokeModel API 사용: 고객은 GPT-OSS 기반 사용자 지정 모델로 작업할 때 InvokeModel API를 사용해야 합니다.
-
API 스키마 요구 사항: GPT-OSS 모델에는 OpenAI 호환 API 스키마가 필요합니다.
완료 요청의 완료 형식
채팅 요청에 대한 ChatCompletion 형식
응답 형식은 OpenAI API 사양을 따릅니다.
-
Converse API에 지원되는 모델: Converse API는 Mistral AI, , Llama, QwenFlanGPTBigCode, 및 Mixtral 아키텍처에서만 지원됩니다.
InvokeModel API를 사용한 GPT-OSS 모델 사용 예제는 요청/응답 스키마에 대한 OpenAI API 설명서를 참조하세요.
-
가져오기 작업을 위한 모델 파일 준비
-
Amazon S3 버킷에서 모델을 가져오는 경우 모델 파일을 Hugging Face 가중치 형식으로 제공해야 합니다. 자세한 내용은 Amazon S3에서 모델 소스 가져오기 섹션을 참조하세요.
-
모델 파일에 대한 Amazon S3 버킷을 만듭니다(이름은 고유해야 함).
-
모델 파일을 버킷에 업로드합니다.
-
-
모델 파일에 액세스할 수 있는 정책을 만들고, Amazon Bedrock 신뢰 관계가 있는 IAM 역할에 연결합니다. 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.
- Console
-
-
모델 파일이 포함된 Amazon S3 버킷에 액세스할 수 있도록 Amazon S3 정책을 만듭니다.
-
https://console.aws.amazon.com/iam
에서 IAM 콘솔로 이동하여 왼쪽 탐색 창에서 정책을 선택합니다. -
정책 생성을 선택한 다음 JSON을 선택하여 정책 편집기를 엽니다.
-
다음 정책을 붙여넣고
${model-file-bucket}을 버킷 이름으로 바꾼 후 다음을 선택합니다.JSON- JSON
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${model-file-bucket}", "arn:aws:s3:::${model-file-bucket}/*" ] } ] }
-
S3BucketPolicy정책의 이름을 지정하고 정책 생성을 선택합니다.
-
-
IAM 역할을 만들고 여기에 정책을 연결합니다.
-
왼쪽 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.
-
사용자 지정 신뢰 정책 을 선택하고 다음 정책을 붙여넣은 후 다음을 선택합니다.
JSON- JSON
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
만든
S3BucketPolicy정책을 검색하고 확인란을 선택한 후 다음을 선택합니다. -
MyImportModelRole역할의 이름을 지정하고역할 생성을 선택합니다.
-
-
- CLI
-
-
BedrockTrust.json이라는 파일을 만들고 다음 정책을 붙여넣습니다.JSON- JSON
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
S3BucketPolicy.json이라는 파일을 하나 더 만들고 다음 정책을 붙여넣기한 다음${model-file-bucket}을 버킷 이름으로 바꿉니다.JSON- JSON
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${model-file-bucket}", "arn:aws:s3:::${model-file-bucket}/*" ] } ] }
-
터미널에서, 앞서 만든 정책이 포함된 폴더로 이동합니다.
-
CreateRole 요청으로
MyImportModelRole이라는 IAM 역할을 만들고, 만들어 둔BedrockTrust.json신뢰 정책을 연결합니다.aws iam create-role \ --role-name MyImportModelRole \ --assume-role-policy-document file://BedrockTrust.json -
만들어 둔
S3BucketPolicy.json파일을 사용하여 S3 데이터 액세스 정책을 만드는 CreatePolicy 요청을 수행합니다. 응답은 정책에 대해Arn을 반환합니다.aws iam create-policy \ --policy-name S3BucketPolicy \ --policy-document file://S3BucketPolicy.json -
AttachRolePolicy 요청으로 S3 데이터 액세스 정책을 역할에 연결하고, 이전 단계의 응답에서
policy-arn을 ARN으로 바꿉니다.aws iam attach-role-policy \ --role-name MyImportModelRole \ --policy-arn${policy-arn}
-
- Python
-
-
다음 코드를 실행하여 CreateRole 요청으로
MyImportModel이라는 IAM 역할을 만들고, CreatePolicy 요청으로S3BucketPolicy라는 S3 데이터 액세스 정책을 만듭니다. S3 데이터 액세스 정책의 경우${model-file-bucket}을 S3 버킷 이름으로 바꿉니다.import boto3 import json iam = boto3.client("iam") iam.create_role( RoleName="MyImportModelRole", AssumeRolePolicyDocument=json.dumps({ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }) ) iam.create_policy( PolicyName="S3BucketPolicy", PolicyDocument=json.dumps({ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${training-bucket}", "arn:aws:s3:::${training-bucket}/*" ] } ] }) ) -
응답에서
Arn이 반환됩니다. 다음 코드 스니펫을 실행하여 AttachRolePolicy 요청을 수행하고${policy-arn}을 반환된Arn으로 바꿉니다.iam.attach_role_policy( RoleName="MyImportModelRole", PolicyArn="${policy-arn}" )
-
-
언어를 선택하여 사용자 지정 모델 가져오기 API 작업을 직접적으로 호출할 코드 샘플을 확인합니다.
- CLI
-
사용자 지정 모델 가져오기 작업을 제출하려면 터미널을 열고 명령줄에서 다음 명령을 실행하여
${my-import-model-role-arn}을 설정한 모델 역할로 바꾸고s3-bucket-path를 모델 파일의 S3 버킷 경로로 바꿉니다.aws bedrock create-model-import-job --job-nameMyImportedModelJobName--imported-model-nameMyImportedModelName--role-arn${my-import-model-role-arn}--model-data-source '{"s3DataSource": {"s3Uri":s3-bucket-path}}응답은
jobArn을 반환합니다. 사용자 지정 가져오기 작업이 완료되기까지 약간의 시간이 걸립니다.jobArn을 다음 명령과 함께 사용하여 가져오기 작업의 상태를 확인할 수 있습니다.다음 필드는 선택 사항입니다.
-
VPC 구성을 추가하려면 위 명령에 다음과 같은 인수를 추가하여 보안 그룹 및 서브넷을 지정합니다.
-\\-vpc-config '{securityGroupIds": ["sg-xx"], "subnetIds": ["subnet-yy", "subnet-zz"]}' -
KMS 키로 모델을 암호화하려면 위 명령에 다음 인수를 추가하여, 모델을 암호화하는 데 사용할 키를 지정하기 위한 값을 바꿉니다.
-\\-customModelKmsKeyId 'arn:aws:kms:region:account-id:key/key-id' -
태그를 추가하려면 위 명령에 다음과 같은 인수를 추가하여, 키와 값을 작업 및/또는 출력 모델에 연결할 태그로 바꿉니다. 그리고 키/값 페어는 공백으로 구분해야 합니다.
-\\-tags key=key1,value=value1key=key2,value=value2
응답은
jobArn을 반환합니다. 사용자 지정 가져오기 작업이 완료되기까지 약간의 시간이 걸립니다.jobArn을 다음 명령과 함께 사용하여 가져오기 작업의 상태를 확인할 수 있습니다.aws bedrock get-model-import-job \ --job-identifier "jobArn"다음과 비슷한 응답이 반환됩니다.
{ "jobArn":${job-arn}, "jobName":MyImportedModelJobName, "importedModelName":MyImportedModelName, "roleArn":${my-role-arn}, "modelDataSource": { "s3DataSource": { "s3Uri": "${S3Uri}" } }, "status": "Complete", "creationTime": "2024-08-13T23:38:42.457Z", "lastModifiedTime": "2024-08-13T23:39:25.158Z"status가Complete이면 가져오기 작업이 완료된 것입니다.새로 가져온 모델에서 추론을 실행하려면 가져온 모델의 ARN을
model-id로 제공해야 합니다. 가져온 모델의 ARN을 가져옵니다.aws bedrock list-imported-models응답에는 모델 이름과 모델 ARN이 포함됩니다. 모델 ARN을 사용하여 가져온 모델을 간접적으로 호출합니다. 자세한 내용은 InvokeModel을 사용하여 단일 프롬프트 제출 섹션을 참조하세요.
{ "modelSummaries": [ { "modelArn":model-arn, "modelName": "MyImportedModelName", "modelArchitecture":model-architecture, "instructSupported":Y, "creationTime": "2024-08-13T19:20:14.058Z" } ] }가져온 모델을 삭제하려면 터미널을 열고 삭제하려는 모델의 모델 이름 또는 모델 ARN을 사용하여 명령줄에서 다음 명령을 실행합니다.
aws bedrock delete-imported-model --model-identifierMyImportedModelName -
- Python
-
다음 코드 스니펫을 실행하여 사용자 지정 모델 가져오기 작업을 제출합니다.
my-region을 모델을 가져온 리전으로,${my-import-model-role-arn}을 설정한MyImportModelRole의 ARN으로 바꾸고${model-file-bucket}을 S3 버킷 이름으로 바꿉니다.import boto3 import json REGION_NAME =my-regionbedrock = boto3.client(service_name='bedrock', region_name=REGION_NAME) JOB_NAME =MyImportedModelJobNameROLE_ARN =${my-import-model-role-arn}IMPORTED_MODEL_NAME =ImportedModelNameS3_URI =${S3Uri}# createModelImportJob API create_job_response = bedrock.create_model_import_job( jobName=JOB_NAME, importedModelName=IMPORTED_MODEL_NAME, roleArn=ROLE_ARN, modelDataSource={ "s3DataSource": { "s3Uri": S3_URI } }, ) job_arn = create_job_response.get("jobArn")다음 필드는 선택 사항입니다.
-
VPC 구성을 추가하려면 위 명령에 다음과 같은 인수를 추가하여 보안 그룹 및 서브넷을 지정합니다.
vpc-config = {'securityGroupIds: ["sg-xx".], 'subnetIds': [subnet-yy, 'subnet-zz']}' -
KMS 키로 모델을 암호화하려면 위 명령에 다음 인수를 추가하여, 모델을 암호화하는 데 사용할 키를 지정하기 위한 값을 바꿉니다.
importedModelKmsKeyId = 'arn:aws:kms:region:account-id:key/key-id' -
태그를 추가하려면 위 명령에 다음과 같은 인수를 추가하여, 키와 값을 작업 및/또는 출력 모델에 연결할 태그로 바꿉니다. 그리고 키/값 페어는 공백으로 구분해야 합니다.
jobTags key=key1,value=value1key=key2,value=value2
응답은 jobArn을 반환합니다.
job_arn = create_job_response.get("jobArn")사용자 지정 가져오기 작업이 완료되기까지 약간의 시간이 걸립니다.
jobArn을 다음 명령과 함께 사용하여 가져오기 작업의 상태를 확인할 수 있습니다.bedrock.get_model_import_job(jobIdentifier=jobArn)status가Completed이면 가져오기 작업이 완료된 것입니다.새로 가져온 모델에서 추론을 실행하려면 가져온 모델의 ARN을
model-id로 제공해야 합니다. 가져온 모델의 ARN을 가져옵니다.response_pt = bedrock.list_imported_models( creationTimeBefore=datetime (2015,1,1, creationTimeAfter= datetime (2015,1,1, nameContains = 'MyImportedModelName, maxresults =123nextToken = 'none', sortBy = 'creationTime', sortOrder = 'Ascending'응답은 가져온 모델의 다른 세부 정보와 함께
modelArn을 반환합니다.{ 'nextToken': '', 'modelSummaries': [ { 'modelArn': 'your-model-arn', 'modelName': 'MyImportedModelName', 'modelArchitecture':model-architecture, 'instructSupported':Y, 'creationTime': datetime(2015, 1, 1) }, ]모델 ARN을 사용하여 가져온 모델을 간접적으로 호출합니다. 자세한 내용은 InvokeModel을 사용하여 단일 프롬프트 제출 섹션을 참조하세요.
가져온 모델을 삭제하려면 삭제하려는 모델의 모델 이름 또는 모델 ARN을 사용하여 다음 명령을 실행합니다.
response = client.delete_imported_model( modelIdentifier='MyImportedModelName' ) -