Implemente modelos para inferência em tempo real - Amazon SageMaker

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á.

Implemente modelos para inferência em tempo real

Importante

IAMPolíticas personalizadas que permitem que o Amazon SageMaker Studio ou o Amazon SageMaker Studio Classic criem SageMaker recursos da Amazon também devem conceder permissões para adicionar tags a esses recursos. A permissão para adicionar tags aos recursos é necessária porque o Studio e o Studio Classic marcam automaticamente todos os recursos que eles criam. Se uma IAM política permitir que o Studio e o Studio Classic criem recursos, mas não permita a marcação, erros AccessDenied "" podem ocorrer ao tentar criar recursos. Para obter mais informações, consulte Forneça permissões para marcar recursos SageMaker.

AWS Políticas gerenciadas para a Amazon SageMakerque dão permissões para criar SageMaker recursos já incluem permissões para adicionar tags ao criar esses recursos.

Há várias opções para implantar um modelo usando serviços de SageMaker hospedagem. Você pode implantar interativamente um modelo com o SageMaker Studio. Ou você pode implantar programaticamente um modelo usando um AWS SDK, como o Python ou SDK o for SageMaker SDK Python (Boto3). Você também pode implantar usando AWS CLI o.

Antes de começar

Antes de implantar um SageMaker modelo, localize e anote o seguinte:

  • O Região da AWS local onde seu bucket do Amazon S3 está localizado

  • O URI caminho do Amazon S3 em que os artefatos do modelo são armazenados

  • O IAM papel para SageMaker

  • O caminho de ECR URI registro do Docker Amazon para a imagem personalizada que contém o código de inferência ou a estrutura e a versão de uma imagem Docker integrada que é suportada e por AWS

Para obter uma lista dos Serviços da AWS disponíveis em cada um Região da AWS, consulte Mapas de regiões e redes de borda. Consulte Criação de IAM funções para obter informações sobre como criar uma IAM função.

Importante

O bucket do Amazon S3 em que os artefatos do modelo são armazenados deve estar no mesmo Região da AWS modelo que você está criando.

Utilização compartilhada de recursos com vários modelos

Você pode implantar um ou mais modelos em um endpoint com a Amazon SageMaker. Quando vários modelos compartilham um endpoint, eles utilizam em conjunto os recursos que estão hospedados lá, como instâncias de computação de ML e aceleradores. CPUs A maneira mais flexível de implantar vários modelos em um endpoint é definir cada modelo como um componente de inferência.

Componentes de inferência

Um componente de inferência é um objeto de SageMaker hospedagem que você pode usar para implantar um modelo em um endpoint. Nas configurações do componente de inferência, você especifica o modelo, o endpoint e como o modelo utiliza os recursos que o endpoint hospeda. Para especificar o modelo, você pode especificar um objeto SageMaker Modelo ou especificar diretamente os artefatos e a imagem do modelo.

Nas configurações, você pode otimizar a utilização de recursos adaptando a forma como os CPU núcleos, aceleradores e memória necessários são alocados ao modelo. Você pode implantar vários componentes de inferência em um endpoint, onde cada componente de inferência contém um modelo e as necessidades de utilização de recursos desse modelo.

Depois de implantar um componente de inferência, você pode invocar diretamente o modelo associado ao usar a InvokeEndpoint ação no. SageMaker API

Os componentes de inferência oferecem os seguintes benefícios:

Flexibilidade

O componente de inferência separa os detalhes da hospedagem do modelo do próprio endpoint. Isso fornece mais flexibilidade e controle sobre como os modelos são hospedados e servidos com um endpoint. Você pode hospedar vários modelos na mesma infraestrutura e adicionar ou remover modelos de um endpoint conforme necessário. Você pode atualizar cada modelo de forma independente.

Escalabilidade

Você pode especificar quantas cópias de cada modelo hospedar e definir um número mínimo de cópias para garantir que o modelo seja carregado na quantidade necessária para atender às solicitações. Você pode reduzir a escala de qualquer cópia do componente de inferência para zero, o que abre espaço para que outra cópia seja ampliada.

SageMaker empacota seus modelos como componentes de inferência quando você os implanta usando:

  • SageMaker Estúdio clássico.

  • O SageMaker Python SDK para implantar um objeto Model (onde você define o tipo de endpoint). EndpointType.INFERENCE_COMPONENT_BASED

  • O AWS SDK for Python (Boto3) para definir InferenceComponent objetos que você implanta em um endpoint.

Implemente modelos com o SageMaker Studio

Conclua as etapas a seguir para criar e implantar seu modelo de forma interativa por meio do SageMaker Studio. Para obter mais informações sobre o Studio, consulte a documentação do Studio. Para obter mais orientações sobre vários cenários de implantação, consulte o blog Package e implante modelos clássicos de ML de forma fácil LLMs com a Amazon SageMaker — Parte 2.

Prepare seus artefatos e permissões

Conclua esta seção antes de criar um modelo no SageMaker Studio.

Você tem duas opções para trazer seus artefatos e criar um modelo no Studio:

  1. Você pode trazer um tar.gz arquivo pré-empacotado, que deve incluir os artefatos do seu modelo, qualquer código de inferência personalizado e todas as dependências listadas em um arquivo. requirements.txt

  2. SageMaker pode empacotar seus artefatos para você. Você só precisa trazer os artefatos do modelo bruto e quaisquer dependências em um requirements.txt arquivo e SageMaker fornecer o código de inferência padrão para você (ou pode substituir o código padrão pelo seu próprio código de inferência personalizado). SageMakersuporta essa opção para as seguintes estruturas: PyTorch,XGBoost.

Além de trazer seu modelo, sua função AWS Identity and Access Management (IAM) e um contêiner Docker (ou estrutura e versão desejadas que SageMaker tenham um contêiner pré-construído), você também deve conceder permissões para criar e implantar modelos por meio do SageMaker Studio.

Você deve ter a AmazonSageMakerFullAccesspolítica anexada à sua IAM função para poder acessar SageMaker outros serviços relevantes. Para ver os preços dos tipos de instância no Studio, você também deve anexar a AWS PriceListServiceFullAccesspolítica (ou, se não quiser anexar toda a política, mais especificamente, a pricing:GetProducts ação).

Se você optar por fazer o upload dos artefatos do seu modelo ao criar um modelo (ou fazer upload de um arquivo de carga útil de amostra para recomendações de inferência), deverá criar um bucket do Amazon S3. O nome do bucket deve ser prefixado pela palavraSageMaker. Capitalizações alternativas de também SageMaker são aceitáveis: Sagemaker ou. sagemaker

Recomendamos que você use a convenção sagemaker-{Region}-{accountID} de nomenclatura do bucket. Esse bucket é usado para armazenar os artefatos que você carrega.

Depois de criar o bucket, anexe a seguinte política CORS (compartilhamento de recursos entre origens) ao bucket:

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

Você pode anexar uma CORS política a um bucket do Amazon S3 usando qualquer um dos seguintes métodos:

Crie um modelo implantável

Nesta etapa, você cria uma versão implantável do seu modelo SageMaker fornecendo seus artefatos junto com especificações adicionais, como o contêiner e a estrutura desejados, qualquer código de inferência personalizado e configurações de rede.

Crie um modelo implantável no SageMaker Studio fazendo o seguinte:

  1. Abra o aplicativo SageMaker Studio.

  2. No painel de navegação à esquerda, selecione Modelos.

  3. Escolha a guia Modelos implantáveis.

  4. Na página Modelos implantáveis, escolha Criar.

  5. Na página Criar modelo implantável, no campo Nome do modelo, insira um nome para o modelo.

Há várias outras seções para você preencher na página Criar modelo implantável.

A seção de definição de contêiner se parece com a seguinte captura de tela:

Captura de tela da seção de definição de contêiner para criar um modelo no Studio.
Para a seção Definição de contêiner, faça o seguinte:
  1. Em Tipo de contêiner, selecione Contêiner pré-construído se quiser usar um contêiner SageMaker gerenciado ou selecione Traga seu próprio contêiner se você tiver seu próprio contêiner.

  2. Se você selecionou Contêiner pré-construído, selecione a estrutura do contêiner, a versão da estrutura e o tipo de hardware que você gostaria de usar.

  3. Se você selecionou Traga seu próprio contêiner, insira um ECR caminho da Amazon para o ECRcaminho até a imagem do contêiner.

Em seguida, preencha a seção Artefatos, que se parece com a seguinte captura de tela:

Captura de tela da seção Artefatos para criar um modelo no Studio.
Para a seção Artefatos, faça o seguinte:
  1. Se você estiver usando uma das estruturas que oferecem SageMaker suporte ao empacotamento de artefatos de modelo (PyTorch ouXGBoost), para Artefatos, você pode escolher a opção Carregar artefatos. Com essa opção, você pode simplesmente especificar seus artefatos de modelo bruto, qualquer código de inferência personalizado que você tenha e seu arquivo requirements.txt, além de lidar com o SageMaker empacotamento do arquivo para você. Faça o seguinte:

    1. Em Artefatos, selecione Carregar artefatos para continuar fornecendo seus arquivos. Caso contrário, se você já tiver um tar.gz arquivo que contém seus arquivos de modelo, código de inferência e requirements.txt arquivo, selecione Entrada S3 URI para artefatos pré-empacotados.

    2. Se você optar por fazer o upload de seus artefatos, então, para o bucket do S3, insira o caminho do Amazon S3 até um bucket onde você SageMaker gostaria de armazenar seus artefatos depois de empacotá-los para você. Em seguida, conclua as etapas a seguir.

    3. Para Carregar artefatos do modelo, faça o upload dos arquivos do modelo.

    4. Para Código de inferência, selecione Usar código de inferência padrão se quiser usar o código padrão que SageMaker forneça inferência de veiculação. Caso contrário, selecione Carregar código de inferência personalizado para usar seu próprio código de inferência.

    5. Para Carregar requirements.txt, faça upload de um arquivo de texto que liste todas as dependências que você deseja instalar em tempo de execução.

  2. Se você não estiver usando uma estrutura SageMaker compatível com o empacotamento de artefatos do modelo, o Studio mostra a opção de artefatos pré-empacotados e você deve fornecer todos os artefatos já empacotados como um arquivo. tar.gz Faça o seguinte:

    1. Para artefatos pré-empacotados, selecione Input S3 URI para artefatos de modelo pré-empacotados se você já tar.gz tiver feito o upload do seu arquivo para o Amazon S3. Selecione Carregar artefatos de modelo pré-empacotados se quiser fazer o upload direto do seu arquivo para. SageMaker

    2. Se você selecionou Input S3 URI para artefatos de modelo pré-empacotados, insira o caminho do Amazon S3 até seu arquivo para o S3. URI Caso contrário, selecione e carregue o arquivo da sua máquina local.

A próxima seção é Segurança, que se parece com a seguinte captura de tela:

Captura de tela da seção Segurança para criar um modelo no Studio.
Para a seção Segurança, faça o seguinte:
  1. Em IAMfunção, insira ARN para uma IAM função.

  2. (Opcional) Para Virtual Private Cloud (VPC), você pode selecionar uma Amazon VPC para armazenar a configuração e os artefatos do seu modelo.

  3. (Opcional) Ative o botão de isolamento de rede se quiser restringir o acesso à Internet do seu contêiner.

Por fim, você pode preencher opcionalmente a seção Opções avançadas, que se parece com a seguinte captura de tela:

Captura de tela da seção Opções avançadas para criar um modelo no Studio.
(Opcional) Para a seção Opções avançadas, faça o seguinte:
  1. Ative a opção Recomendações de instância personalizada se quiser executar um trabalho do Amazon SageMaker Inference Recommender em seu modelo após sua criação. O Inference Recommender é um recurso que fornece os tipos de instância recomendados para otimizar o desempenho e o custo da inferência. Você pode ver essas recomendações de instância ao se preparar para implantar seu modelo.

  2. Em Adicionar variáveis de ambiente, insira variáveis de ambiente para seu contêiner como pares de valores-chave.

  3. Em Tags, insira todas as tags como pares de valores-chave.

  4. Depois de concluir a configuração do modelo e do contêiner, escolha Criar modelo implantável.

Agora você deve ter um modelo no SageMaker Studio que esteja pronto para implantação.

Implantar o modelo

Por fim, você implanta o modelo configurado na etapa anterior em um HTTPS endpoint. Você pode implantar um único modelo ou vários modelos no endpoint.

Compatibilidade de modelos e terminais

Antes de implantar um modelo em um endpoint, o modelo e o endpoint devem ser compatíveis e ter os mesmos valores para as seguintes configurações:

  • O IAM papel

  • A AmazonVPC, incluindo suas sub-redes e grupos de segurança

  • O isolamento da rede (ativado ou desativado)

O Studio impede que você implante modelos em endpoints incompatíveis das seguintes maneiras:

  • Se você tentar implantar um modelo em um novo endpoint, SageMaker defina o endpoint com configurações iniciais compatíveis. Se você quebrar a compatibilidade alterando essas configurações, o Studio mostrará um alerta e impedirá sua implantação.

  • Se você tentar implantar em um endpoint existente e esse endpoint for incompatível, o Studio mostrará um alerta e impedirá sua implantação.

  • Se você tentar adicionar vários modelos a uma implantação, o Studio impede que você implante modelos incompatíveis entre si.

Quando o Studio mostra o alerta sobre a incompatibilidade do modelo e do endpoint, você pode escolher Exibir detalhes no alerta para ver quais configurações são incompatíveis.

Uma forma de implantar um modelo é fazer o seguinte no Studio:

  1. Abra o aplicativo SageMaker Studio.

  2. No painel de navegação à esquerda, selecione Modelos.

  3. Na página Modelos, selecione um ou mais modelos na lista de SageMaker modelos.

  4. Escolha Implantar.

  5. Em Nome do endpoint, abra o menu suspenso. Você pode selecionar um endpoint existente ou criar um novo endpoint no qual você implanta o modelo.

  6. Em Tipo de instância, selecione o tipo de instância que você deseja usar para o endpoint. Se você executou anteriormente um trabalho do Inference Recommender para o modelo, seus tipos de instância recomendados aparecerão na lista sob o título Recomendado. Caso contrário, você verá algumas instâncias potenciais que podem ser adequadas para seu modelo.

    Compatibilidade do tipo de instância para JumpStart

    Se você estiver implantando um JumpStart modelo, o Studio mostra apenas os tipos de instância compatíveis com o modelo.

  7. Em Contagem inicial de instâncias, insira o número inicial de instâncias que você gostaria de provisionar para seu endpoint.

  8. Em Contagem máxima de instâncias, especifique o número máximo de instâncias que o endpoint pode provisionar quando se expande para acomodar um aumento no tráfego.

  9. Se o modelo que você está implantando for um dos mais usados no hub JumpStart LLMs de modelos, a opção Configurações alternativas aparecerá após os campos tipo de instância e contagem de instâncias.

    Para os mais populares JumpStart LLMs, AWS tem tipos de instância pré-comparados para otimizar em termos de custo ou desempenho. Esses dados podem ajudar você a decidir qual tipo de instância usar para implantar suaLLM. Escolha Configurações alternativas para abrir uma caixa de diálogo que contém os dados pré-comparados. O painel se parece com a seguinte captura de tela:

    Captura de tela da caixa Configurações alternativas

    Na caixa Configurações alternativas, faça o seguinte:

    1. Selecione um tipo de instância. Você pode escolher Custo por hora ou Melhor desempenho para ver os tipos de instância que otimizam o custo ou o desempenho para o modelo especificado. Você também pode escolher Outras instâncias compatíveis para ver uma lista de outros tipos de instância compatíveis com o JumpStart modelo. Observe que selecionar um tipo de instância aqui substitui qualquer seleção de instância anterior especificada na Etapa 6.

    2. (Opcional) Ative a opção Personalizar a configuração selecionada para especificar o máximo total de tokens (o número máximo de tokens que você deseja permitir, que é a soma dos tokens de entrada e a saída gerada pelo modelo), o tamanho máximo do token de entrada (o número máximo de tokens que você deseja permitir para a entrada de cada solicitação) e o máximo de solicitações simultâneas (o número máximo de solicitações que o modelo pode processar por vez).

    3. Escolha Selecionar para confirmar o tipo de instância e as configurações.

  10. O campo Modelo já deve estar preenchido com o nome do modelo ou modelos que você está implantando. Você pode escolher Adicionar modelo para adicionar mais modelos à implantação. Para cada modelo que você adicionar, preencha os seguintes campos:

    1. Em Número de CPU núcleos, insira os CPU núcleos que você gostaria de dedicar ao uso do modelo.

    2. Em Número mínimo de cópias, insira o número mínimo de cópias do modelo que você deseja hospedar no endpoint a qualquer momento.

    3. Em CPUMemória mínima (MB), insira a quantidade mínima de memória (em MB) exigida pelo modelo.

    4. Em CPUMemória máxima (MB), insira a quantidade máxima de memória (em MB) que você gostaria de permitir que o modelo usasse.

  11. (Opcional) Para as opções avançadas, faça o seguinte:

    1. Para IAMfunção, use a função de SageMaker IAM execução padrão ou especifique sua própria função que tenha as permissões necessárias. Observe que essa IAM função deve ser a mesma que você especificou ao criar o modelo implantável.

    2. Para Virtual Private Cloud (VPC), você pode especificar uma VPC na qual deseja hospedar seu endpoint.

    3. Em KMSChave de criptografia, selecione uma AWS KMS chave para criptografar dados no volume de armazenamento anexado à instância de computação de ML que hospeda o endpoint.

    4. Ative o botão Ativar isolamento de rede para restringir o acesso à Internet do seu contêiner.

    5. Em Configuração de tempo limite, insira valores para os campos Tempo limite de download de dados do modelo (segundos) e Tempo limite de verificação de integridade de inicialização do contêiner (segundos). Esses valores determinam o tempo máximo que SageMaker permite o download do modelo para o contêiner e a inicialização do contêiner, respectivamente.

    6. Em Tags, insira todas as tags como pares de valores-chave.

    nota

    SageMaker configura as configurações de IAM VPC função e isolamento de rede com valores iniciais compatíveis com o modelo que você está implantando. Se você quebrar a compatibilidade alterando essas configurações, o Studio mostrará um alerta e impedirá sua implantação.

Depois de configurar suas opções, a página deve ter a aparência da captura de tela a seguir.

Captura de tela da página do modelo Deploy no Studio.

Depois de configurar sua implantação, escolha Deploy para criar o endpoint e implantar seu modelo.

Implemente modelos com o Python SDKs

Usando o SageMaker PythonSDK, você pode criar seu modelo de duas maneiras. A primeira é criar um objeto de modelo a partir da ModelBuilder classe Model or. Se você usar a Model classe para criar seu Model objeto, precisará especificar o pacote do modelo ou o código de inferência (dependendo do servidor do modelo), scripts para lidar com a serialização e desserialização de dados entre o cliente e o servidor e quaisquer dependências a serem carregadas no Amazon S3 para consumo. A segunda maneira de criar seu modelo é usar ModelBuilder para o qual você fornece artefatos de modelo ou código de inferência. ModelBuildercaptura automaticamente suas dependências, infere as funções de serialização e desserialização necessárias e empacota suas dependências para criar seu objeto. Model Para obter mais informações sobre o ModelBuilder, consulte Crie um modelo na Amazon SageMaker com ModelBuilder.

A seção a seguir descreve os dois métodos para criar seu modelo e implantar seu objeto de modelo.

Configurar

Os exemplos a seguir preparam o processo de implantação do modelo. Eles importam as bibliotecas necessárias e definem o S3 URL que localiza os artefatos do modelo.

SageMaker Python SDK
exemplo declarações de importação

O exemplo a seguir importa módulos do SageMaker PythonSDK, do for Python (SDKBoto3) e da Python Standard Library. Esses módulos fornecem métodos úteis que ajudam você a implantar modelos e são usados pelos demais exemplos a seguir.

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
exemplo declarações de importação

O exemplo a seguir importa módulos do SDK for Python (Boto3) e da Python Standard Library. Esses módulos fornecem métodos úteis que ajudam você a implantar modelos e são usados pelos demais exemplos a seguir.

import boto3 import botocore import sys import time
boto3 models (without inference components)
exemplo declarações de importação

O exemplo a seguir importa módulos do SDK for Python (Boto3) e da Python Standard Library. Esses módulos fornecem métodos úteis que ajudam você a implantar modelos e são usados pelos demais exemplos a seguir.

import boto3 import botocore import datetime from time import gmtime, strftime
exemplo artefato modelo URL

O código a seguir cria um exemplo do Amazon URL S3. Ele URL localiza os artefatos do modelo para um modelo pré-treinado em um bucket do Amazon S3.

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "amzn-s3-demo-bucket" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

O Amazon S3 completo URL é armazenado na variávelmodel_url, que é usada nos exemplos a seguir.

Visão geral

Há várias maneiras de implantar modelos com o SageMaker Python SDK ou com o for Python (SDKBoto3). As seções a seguir resumem as etapas que você conclui para várias abordagens possíveis. Essas etapas são demonstradas pelos exemplos a seguir.

SageMaker Python SDK

Usando o SageMaker PythonSDK, você pode criar seu modelo de uma das seguintes formas:

  • Crie um objeto de modelo a partir da Model classe — Você deve especificar o pacote do modelo ou o código de inferência (dependendo do seu servidor de modelo), scripts para lidar com a serialização e desserialização de dados entre o cliente e o servidor e quaisquer dependências a serem carregadas no Amazon S3 para consumo.

  • Crie um objeto de modelo a partir da ModelBuilder classe — Você fornece artefatos de modelo ou código de inferência e captura ModelBuilder automaticamente suas dependências, infere as funções de serialização e desserialização necessárias e empacota suas dependências para criar seu objeto. Model

    Para obter mais informações sobre o ModelBuilder, consulte Crie um modelo na Amazon SageMaker com ModelBuilder. Você também pode ver o blog Package e implantar modelos de ML clássicos e LLMs facilmente com SageMaker — Parte 1 para obter mais informações.

Os exemplos a seguir descrevem os dois métodos para criar seu modelo e implantar seu objeto de modelo. Para implantar um modelo dessas formas, você conclui as seguintes etapas:

  1. Defina os recursos do endpoint a serem alocados ao modelo com um ResourceRequirements objeto.

  2. Crie um objeto de modelo a partir das ModelBuilder classes Model ou. O ResourceRequirements objeto é especificado nas configurações do modelo.

  3. Implante o modelo em um endpoint usando o deploy método do Model objeto.

boto3 inference components

Os exemplos a seguir demonstram como atribuir um modelo a um componente de inferência e depois implantar o componente de inferência em um endpoint. Para implantar um modelo dessa forma, você conclui as seguintes etapas:

  1. (Opcional) Crie um objeto de SageMaker modelo usando o create_modelmétodo.

  2. Especifique as configurações do seu endpoint criando um objeto de configuração do endpoint. Para criar um, você usa o create_endpoint_configmétodo.

  3. Crie seu endpoint usando o create_endpointmétodo e, em sua solicitação, forneça a configuração de endpoint que você criou.

  4. Crie um componente de inferência usando o create_inference_component método. Nas configurações, você especifica um modelo fazendo o seguinte:

    • Especificando um objeto de SageMaker modelo

    • Especificando a imagem do modelo URI e o S3 URL

    Você também aloca recursos de endpoint para o modelo. Ao criar o componente de inferência, você implanta o modelo no endpoint. Você pode implantar vários modelos em um endpoint criando vários componentes de inferência — um para cada modelo.

boto3 models (without inference components)

Os exemplos a seguir demonstram como criar um objeto de modelo e depois implantar o modelo em um endpoint. Para implantar um modelo dessa forma, você conclui as seguintes etapas:

  1. Crie um SageMaker modelo usando o create_modelmétodo.

  2. Especifique as configurações do seu endpoint criando um objeto de configuração do endpoint. Para criar um, você usa o create_endpoint_configmétodo. Na configuração do endpoint, você atribui o objeto do modelo a uma variante de produção.

  3. Crie seu endpoint usando o create_endpointmétodo. Em sua solicitação, forneça a configuração do endpoint que você criou.

    Quando você cria o endpoint, SageMaker provisiona os recursos do endpoint e ele implanta o modelo no endpoint.

Configurar

Os exemplos a seguir configuram os recursos necessários para implantar um modelo em um endpoint.

SageMaker Python SDK

O exemplo a seguir atribui recursos de endpoint a um modelo com um ResourceRequirements objeto. Esses recursos incluem CPU núcleos, aceleradores e memória. Em seguida, o exemplo cria um objeto de modelo a partir da Model classe. Como alternativa, você pode criar um objeto de modelo instanciando a ModelBuilderclasse e executando build — esse método também é mostrado no exemplo. ModelBuilderfornece uma interface unificada para empacotamento de modelos e, nesse caso, prepara um modelo para a implantação de um grande modelo. O exemplo é utilizado ModelBuilder para construir um modelo Hugging Face. (Você também pode passar um JumpStart modelo). Depois de criar o modelo, você pode especificar os requisitos de recursos no objeto do modelo. Na próxima etapa, você usa esse objeto para implantar o modelo em um endpoint.

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

O exemplo a seguir configura um endpoint com o create_endpoint_config método. Você atribui essa configuração a um endpoint ao criá-lo. Na configuração, você define uma ou mais variantes de produção. Para cada variante, você pode escolher o tipo de instância que deseja que SageMaker a Amazon provisione e habilitar a escalabilidade de instâncias gerenciadas.

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
exemplo definição do modelo

O exemplo a seguir define um SageMaker modelo com o create_model método no AWS SDK for Python (Boto3).

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

Esse exemplo especifica o seguinte:

  • ModelName: um nome para seu modelo (neste exemplo, ele é armazenado como uma variável de string chamada model_name).

  • ExecutionRoleArn: O Amazon Resource Name (ARN) da IAM função que a Amazon SageMaker pode assumir para acessar artefatos de modelo e imagens do Docker para implantação em instâncias de computação de ML ou para trabalhos de transformação em lote.

  • PrimaryContainer: A localização da imagem do Docker primária que contém código de inferência, artefatos associados e mapas de ambiente personalizado usado pelo código de inferência quando o modelo é implantado para previsões.

exemplo configuração do endpoint

O exemplo a seguir configura um endpoint com o create_endpoint_config método. A Amazon SageMaker usa essa configuração para implantar modelos. Na configuração, você identifica um ou mais modelos, criados com o create_model método, para implantar os recursos que você deseja que SageMaker a Amazon provisione.

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

Este exemplo especifica as seguintes chaves para o ProductionVariants campo:

Implantar

Os exemplos a seguir implantam um modelo em um endpoint.

SageMaker Python SDK

O exemplo a seguir implanta o modelo em um HTTPS endpoint em tempo real com o deploy método do objeto do modelo. Se você especificar um valor para o resources argumento tanto para a criação quanto para a implantação do modelo, os recursos especificados para implantação terão precedência.

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

Para o instance_type campo, o exemplo especifica o nome do tipo de EC2 instância da Amazon para o modelo. Para o initial_instance_count campo, ele especifica o número inicial de instâncias nas quais executar o endpoint.

O exemplo de código a seguir demonstra outro caso em que você implanta um modelo em um endpoint e depois implanta outro modelo no mesmo endpoint. Nesse caso, você deve fornecer o mesmo nome de endpoint para os deploy métodos de ambos os modelos.

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

Depois de ter uma configuração de endpoint, use o método create_endpoint para criar seu endpoint. O nome do endpoint deve ser exclusivo Região da AWS em sua AWS conta.

O exemplo a seguir cria um endpoint usando a configuração de endpoint especificada na solicitação. A Amazon SageMaker usa o endpoint para provisionar recursos.

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

Depois de criar um endpoint, você pode implantar um ou modelos nele criando componentes de inferência. O exemplo a seguir cria um com o create_inference_component método.

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
exemplo implantação

Forneça a configuração do endpoint para SageMaker. O serviço inicia as instâncias de cálculo de ML e implanta o modelo ou modelos conforme especificado na configuração.

Depois de ter seu modelo e configuração de endpoint, use o método create_endpoint para criar seu endpoint. O nome do endpoint deve ser exclusivo Região da AWS em sua AWS conta.

O exemplo a seguir cria um endpoint usando a configuração de endpoint especificada na solicitação. A Amazon SageMaker usa o endpoint para provisionar recursos e implantar modelos.

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

Implemente modelos com o AWS CLI

Você pode implantar um modelo em um endpoint usando o. AWS CLI

Visão geral

Ao implantar um modelo com o AWS CLI, você pode implantá-lo com ou sem o uso de um componente de inferência. As seções a seguir resumem os comandos que você executa para ambas as abordagens. Esses comandos são demonstrados pelos exemplos a seguir.

With inference components

Para implantar um modelo com um componente de inferência, faça o seguinte:

  1. (Opcional) Crie um modelo com o create-modelcomando.

  2. Especifique as configurações do seu endpoint criando uma configuração de endpoint. Para criar um, você executa o create-endpoint-configcomando.

  3. Crie seu endpoint usando o create-endpointcomando. No corpo do comando, especifique a configuração do endpoint que você criou.

  4. Crie um componente de inferência usando o create-inference-component comando. Nas configurações, você especifica um modelo fazendo o seguinte:

    • Especificando um objeto de SageMaker modelo

    • Especificando a imagem do modelo URI e o S3 URL

    Você também aloca recursos de endpoint para o modelo. Ao criar o componente de inferência, você implanta o modelo no endpoint. Você pode implantar vários modelos em um endpoint criando vários componentes de inferência — um para cada modelo.

Without inference components

Para implantar um modelo sem usar um componente de inferência, faça o seguinte:

  1. Crie um SageMaker modelo usando o create-modelcomando.

  2. Especifique as configurações do seu endpoint criando um objeto de configuração do endpoint. Para criar um, você usa o create-endpoint-configcomando. Na configuração do endpoint, você atribui o objeto do modelo a uma variante de produção.

  3. Crie seu endpoint usando o create-endpointcomando. No corpo do comando, especifique a configuração do endpoint que você criou.

    Quando você cria o endpoint, SageMaker provisiona os recursos do endpoint e ele implanta o modelo no endpoint.

Configurar

Os exemplos a seguir configuram os recursos necessários para implantar um modelo em um endpoint.

With inference components
exemplo create-endpoint-config comando

O exemplo a seguir cria uma configuração de endpoint com o create-endpoint-configcomando.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

Neste exemplo, o arquivo production-variants.json define uma variante de produção com o seguinteJSON:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
exemplo comando create-model

O exemplo a seguir cria um modelo com o comando create-model.

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
exemplo create-endpoint-config comando

O exemplo a seguir cria uma configuração de endpoint com o create-endpoint-configcomando.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

Neste exemplo, o arquivo production-variants.json define uma variante de produção com o seguinteJSON:

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

Implantar

Os exemplos a seguir implantam um modelo em um endpoint.

With inference components
exemplo comando create-endpoint

O exemplo a seguir cria um endpoint com o comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
exemplo create-inference-component comando

O exemplo a seguir cria um componente de inferência com o create-inference-component comando.

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

Neste exemplo, o arquivo specification.json define o contêiner e os recursos de computação com o seguinte: JSON

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
exemplo comando create-endpoint

O exemplo a seguir cria um endpoint com o comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Se o comando for bem-sucedido, ele AWS CLI responderá com o ARN para o recurso que você criou.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }