Criar um modelo personalizado SDKs da (AWS) - Amazon Bedrock

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um modelo personalizado SDKs da (AWS)

Para criar um modelo personalizado com base em um modelo do Amazon Nova treinado pelo SageMaker AI e armazenado no Amazon S3, use a operação de API CreateCustomModel. É possível usar o código a seguir para criar um modelo personalizado com o SDK para Python (Boto3). O código cria um modelo personalizado e, em seguida, verifica o respectivo status até que o modelo esteja no status ACTIVE e pronto para uso.

Para usar o código, atualize os parâmetros a seguir. A amostra de código também inclui parâmetros opcionais, como clientRequestToken para idempotência e modelTags para marcação de recursos.

  • modelName: dê ao modelo um nome exclusivo.

  • s3Uri: especifique o caminho para o bucket do Amazon S3 gerenciado pela Amazon que armazena os artefatos do modelo. O SageMaker AI cria esse bucket quando você executa sua primeira tarefa de treinamento do SageMaker AI.

  • roleArn: especifique o nome do recurso da Amazon (ARN) de um perfil de serviço do IAM que o Amazon Bedrock assume para executar tarefas em seu nome. Para obter mais informações sobre a criação do perfil, consulte Criar um perfil de serviço para a importação de modelos pré-treinados.

  • modelKmsKeyArn (opcional): especifique uma chave do AWS KMS para criptografar o modelo no Amazon Bedrock. Se você não fornecer uma chave do AWS KMS, o Amazon Bedrock usará uma chave do AWS KMS gerenciada pela AWS para criptografar o modelo. Para ter informações sobre criptografia, consulte Criptografia de modelos personalizados importados.

Após a criação do modelo personalizado, ele aparece na resposta ListCustomModels com um customizationType de imported. Para rastrear o status do novo modelo, use a operação de API GetCustomModel.

import boto3 import uuid from botocore.exceptions import ClientError import time def create_custom_model(bedrock_client): """ Creates a custom model in Amazon Bedrock from a SageMaker AI-trained Amazon Nova model stored in Amazon S3. Args: bedrock_client: The Amazon Bedrock client instance Returns: dict: Response from the CreateCustomModel API call """ try: # Create a unique client request token for idempotency client_request_token = str(uuid.uuid4()) # Define the model source configuration model_source_config = { 's3DataSource': { 's3Uri': 's3://amzn-s3-demo-bucket/folder/', } } # Create the custom model response = bedrock_client.create_custom_model( # Required parameters modelName='modelName', roleArn='serviceRoleArn', modelSourceConfig=model_source_config, # Optional parameters clientRequestToken=client_request_token, modelKmsKeyArn='keyArn', modelTags=[ { 'key': 'Environment', 'value': 'Production' }, { 'key': 'Project', 'value': 'AIInference' } ] ) print(f"Custom model creation initiated. Model ARN: {response['modelArn']}") return response except ClientError as e: print(f"Error creating custom model: {e}") raise def list_custom_models(bedrock_client): """ Lists all custom models in Amazon Bedrock. Args: bedrock_client: An Amazon Bedrock client. Returns: dict: Response from the ListCustomModels API call """ try: response = bedrock_client.list_custom_models() print(f"Total number of custom models: {len(response['modelSummaries'])}") for model in response['modelSummaries']: print("ARN: " + model['modelArn']) print("Name: " + model['modelName']) print("Status: " + model['modelStatus']) print("Customization type: " + model['customizationType']) print("------------------------------------------------------") return response except ClientError as e: print(f"Error listing custom models: {e}") raise def check_model_status(bedrock_client, model_arn): """ Checks the status of a custom model creation. Args: model_arn (str): The ARN of the custom model bedrock_client: An Amazon Bedrock client. Returns: dict: Response from the GetCustomModel API call """ try: max_time = time.time() + 60 * 60 # 1 hour while time.time() < max_time: response = bedrock_client.get_custom_model(modelIdentifier=model_arn) status = response.get('modelStatus') print(f"Job status: {status}") if status == 'Failed': print(f"Failure reason: {response.get('failureMessage')}") break if status == 'Active': print("Model is ready for use.") break time.sleep(60) except ClientError as e: print(f"Error checking model status: {e}") raise def main(): bedrock_client = boto3.client(service_name='bedrock', region_name='REGION') # Create the custom model model_arn = create_custom_model(bedrock_client)["modelArn"] # Check the status of the model if model_arn: check_model_status(bedrock_client, model_arn) # View all custom models list_custom_models(bedrock_client) if __name__ == "__main__": main()