사용자 지정 모델 가져오기를 위한 코드 샘플
다음 코드 샘플은 권한을 설정하고, 사용자 지정 모델 가져오기 작업을 만들고, 가져오기 작업 및 가져온 모델의 세부 정보를 확인하고, 가져온 모델을 삭제하는 방법을 보여줍니다.
-
가져오기 작업을 위한 모델 파일 준비
-
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' ) -