Invocar um endpoint multimodelo
Para invocar um endpoint multimodelo, use o invoke_endpoint
TargetModel
especificando qual dos modelos do endpoint será o destino. A solicitação do runtime do SageMaker InvokeEndpoint
oferece apoio a X-Amzn-SageMaker-Target-Model
como um novo cabeçalho que segue o caminho relativo do modelo especificado para invocação. O sistema SageMaker constrói o caminho absoluto do modelo combinando o prefixo fornecido como parte da chamada da API CreateModel
com o caminho relativo do modelo.
Os procedimentos a seguir são os mesmos para endpoints multimodelo compatíveis com CPU e GPU.
O endpoint multimodelo carrega dinamicamente os modelos de destino conforme necessário. Você observará isso quando executar o MME Sample Notebook
nota
Para instâncias com compatibilidade com GPU, o código de resposta HTTP 507 do contêiner GPU indica falta de memória ou outros recursos. Isso faz com que modelos não utilizados sejam descarregados do contêiner para carregar modelos mais frequentemente usados.
Repetir solicitações em erros ModelNotReadyException
Na primeira vez que você chama invoke_endpoint
para um modelo, o modelo é baixado do Amazon Simple Storage Service e carregado no contêiner de inferência. Isso faz com que a primeira chamada demore mais para retornar. As chamadas subsequentes para o mesmo modelo terminam mais rapidamente, porque o modelo já está carregado.
O SageMaker retorna uma resposta para uma chamada para invoke_endpoint
em até 60 segundos. Alguns modelos são grandes demais para serem baixados em 60 segundos. Se o modelo não terminar de carregar antes do limite de tempo limite de 60 segundos, a solicitação invoke_endpoint
retornará com o código de erro ModelNotReadyException
e o modelo continuará sendo baixado e carregado no contêiner de inferência por até 360 segundos. Se você receber um código de erro ModelNotReadyException
para uma solicitação invoke_endpoint
, tente fazer a solicitação novamente. Por padrão, os AWS SDKs para Python (Boto 3) (usando o modo de repetição Legacy) e as solicitações de repetiçãoinvoke_endpoint
erros ModelNotReadyException
. Você pode configurar a estratégia de repetição para continuar repetindo a solicitação por até 360 segundos. Se você espera que seu modelo leve mais de 60 segundos para ser baixado e carregado no contêiner, defina o tempo limite do soquete do SDK para 70 segundos. Para obter mais informações sobre como configurar a estratégia de repetição para o AWS SDK for Python (Boto3), consulte Configurando um modo de repetiçãoinvoke_endpoint
por até 180 segundos.
import boto3 from botocore.config import Config # This example retry strategy sets the retry attempts to 2. # With this setting, the request can attempt to download and/or load the model # for upto 180 seconds: 1 orginal request (60 seconds) + 2 retries (120 seconds) config = Config( read_timeout=70, retries={ 'max_attempts': 2 # This value can be adjusted to 5 to go up to the 360s max timeout } ) runtime_sagemaker_client = boto3.client('sagemaker-runtime', config=config)