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á.
Depois de satisfazer os pré-requisitos, você pode compilar seu modelo com o Amazon AI Neo. SageMaker Você pode compilar seu modelo usando o console ou o AWS CLISDK da Amazon Web Services para Python (Boto3). Consulte Use o Neo para
Para compilar um modelo, SageMaker o Neo requer as seguintes informações:
-
O URI do bucket do Amazon S3 em que você armazenou o modelo treinado.
Se você seguiu os pré-requisitos, o nome do seu bucket é armazenado em uma variável chamada
bucket
. O trecho de código a seguir mostra como listar todos os seus buckets usando o AWS CLI:aws s3 ls
Por exemplo:
$ aws s3 ls 2020-11-02 17:08:50 bucket
-
O URI do bucket do Amazon S3 em que você deseja salvar o modelo compilado.
O trecho de código abaixo concatena o URI do bucket do Amazon S3 com o nome de um diretório de saída chamado:
output
s3_output_location = f's3://{bucket}/output'
-
A estrutura de machine learning que você usou para treinar seu modelo.
Defina o framework que você usou para treinar seu modelo.
framework = 'framework-name'
Por exemplo, se você quiser compilar um modelo que foi treinado usando TensorFlow, você poderia usar
tflite
outensorflow
. Usetflite
se quiser usar uma versão mais leve TensorFlow que use menos memória de armazenamento.framework = 'tflite'
Para obter uma lista completa de estruturas e dispositivos de borda compatíveis, consulte Estruturas, dispositivos, sistemas e arquiteturas compatíveis.
-
A forma da entrada do seu modelo.
Neo requer o nome e a forma do seu tensor de entrada. O nome e a forma são passadas para pares de chave-valor.
value
é uma lista das dimensões inteiras de um tensor de entrada ekey
é o nome exato de um tensor de entrada no modelo.data_shape = '{"name": [tensor-shape]}'
Por exemplo:
data_shape = '{"normalized_input_image_tensor":[1, 300, 300, 3]}'
nota
Verifique se o modelo está formatado corretamente, dependendo da estrutura usada. Consulte Quais formatos de dados de entrada o SageMaker Neo espera? A chave neste dicionário deve ser alterada para o nome do novo tensor de entrada.
-
O nome do dispositivo de destino para o qual compilar ou os detalhes gerais da plataforma de hardware
target_device =
'target-device-name'
Por exemplo, se quiser implantar em um Raspberry Pi 3, use:
target_device = 'rasp3b'
Você pode encontrar a lista completa de dispositivos de borda compatíveis em Estruturas, dispositivos, sistemas e arquiteturas compatíveis.
Agora que concluiu as etapas anteriores, você pode enviar um trabalho de compilação para o Neo.
# Create a SageMaker client so you can submit a compilation job
sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
# Give your compilation job a name
compilation_job_name = 'getting-started-demo'
print(f'Compilation job for {compilation_job_name} started')
response = sagemaker_client.create_compilation_job(
CompilationJobName=compilation_job_name,
RoleArn=role_arn,
InputConfig={
'S3Uri': s3_input_location,
'DataInputConfig': data_shape,
'Framework': framework.upper()
},
OutputConfig={
'S3OutputLocation': s3_output_location,
'TargetDevice': target_device
},
StoppingCondition={
'MaxRuntimeInSeconds': 900
}
)
# Optional - Poll every 30 sec to check completion status
import time
while True:
response = sagemaker_client.describe_compilation_job(CompilationJobName=compilation_job_name)
if response['CompilationJobStatus'] == 'COMPLETED':
break
elif response['CompilationJobStatus'] == 'FAILED':
raise RuntimeError('Compilation failed')
print('Compiling ...')
time.sleep(30)
print('Done!')
Se quiser informações adicionais para depuração, inclua a seguinte instrução de impressão:
print(response)
Se o trabalho de compilação for bem-sucedido, seu modelo compilado será armazenado no bucket de saída do Amazon S3 que você especificou anteriormente (s3_output_location
). Baixe seu modelo compilado localmente:
object_path = f'output/{model}-{target_device}.tar.gz'
neo_compiled_model = f'compiled-{model}.tar.gz'
s3_client.download_file(bucket, object_path, neo_compiled_model)