

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Demandes d’inférence avec un service déployé
<a name="neo-requests"></a>

Si vous avez suivi les instructions[Déploiement d'un modèle](neo-deployment-hosting-services.md), vous devriez avoir un point de terminaison SageMaker AI configuré et en cours d'exécution. Indépendamment de la façon dont vous avez déployé votre modèle néo-compilé, vous pouvez envoyer des demandes d'inférence de trois façons différentes : 

**Topics**
+ [Demander des inférences à partir d'un service déployé (Amazon SageMaker SDK)](neo-requests-sdk.md)
+ [Demande d'inférences à partir d'un service déployé (Boto3)](neo-requests-boto3.md)
+ [Demander des inférences à partir d'un service déployé (AWS CLI)](neo-requests-cli.md)

# Demander des inférences à partir d'un service déployé (Amazon SageMaker SDK)
<a name="neo-requests-sdk"></a>

Utilisez les exemples de code suivants pour demander des inférences à partir de votre service déployé en fonction du cadre que vous avez utilisé pour entraîner votre modèle. Les exemples de code sont similaires pour les différents cadres. La principale différence est que le type de contenu est TensorFlow requis`application/json`. 

 

## PyTorch et MXNet
<a name="neo-requests-sdk-py-mxnet"></a>

 Si vous utilisez la version **PyTorch 1.4 ou une version ultérieure ou** la **MXNet version 1.7.0 ou une version ultérieure** et que vous disposez d'un point de terminaison Amazon SageMaker AI`InService`, vous pouvez effectuer des demandes d'inférence à l'aide `predictor` du package du SDK SageMaker AI pour Python. 

**Note**  
L'API varie en fonction de la version du SDK SageMaker AI pour Python :  
Pour la version 1.x, utilisez le [https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor](https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor) et l'API [https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor.predict](https://sagemaker.readthedocs.io/en/v1.72.0/api/inference/predictors.html#sagemaker.predictor.RealTimePredictor.predict).
Pour la version 2.x, utilisez le [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor) et l'API [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict).

L'exemple de code suivant montre comment les utiliser pour envoyer une image APIs à des fins d'inférence : 

------
#### [ SageMaker Python SDK v1.x ]

```
from sagemaker.predictor import RealTimePredictor

endpoint = 'insert name of your endpoint here'

# Read image into memory
payload = None
with open("image.jpg", 'rb') as f:
    payload = f.read()

predictor = RealTimePredictor(endpoint=endpoint, content_type='application/x-image')
inference_response = predictor.predict(data=payload)
print (inference_response)
```

------
#### [ SageMaker Python SDK v2.x ]

```
from sagemaker.predictor import Predictor

endpoint = 'insert name of your endpoint here'

# Read image into memory
payload = None
with open("image.jpg", 'rb') as f:
    payload = f.read()
    
predictor = Predictor(endpoint)
inference_response = predictor.predict(data=payload)
print (inference_response)
```

------

## TensorFlow
<a name="neo-requests-sdk-py-tf"></a>

L'exemple de code suivant montre comment utiliser l'API du SDK SageMaker Python pour envoyer une image à des fins d'inférence : 

```
from sagemaker.predictor import Predictor
from PIL import Image
import numpy as np
import json

endpoint = 'insert the name of your endpoint here'

# Read image into memory
image = Image.open(input_file)
batch_size = 1
image = np.asarray(image.resize((224, 224)))
image = image / 128 - 1
image = np.concatenate([image[np.newaxis, :, :]] * batch_size)
body = json.dumps({"instances": image.tolist()})
    
predictor = Predictor(endpoint)
inference_response = predictor.predict(data=body)
print(inference_response)
```

# Demande d'inférences à partir d'un service déployé (Boto3)
<a name="neo-requests-boto3"></a>

 Vous pouvez soumettre des demandes d'inférence à l'aide du [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint)client et de l'API SageMaker AI SDK for Python (Boto3) une fois que vous disposez d'un point de terminaison AI. SageMaker `InService` L'exemple de code suivant montre comment envoyer une image pour inférence : 

------
#### [ PyTorch and MXNet ]

```
import boto3

import json
 
endpoint = 'insert name of your endpoint here'
 
runtime = boto3.Session().client('sagemaker-runtime')
 
# Read image into memory
with open(image, 'rb') as f:
    payload = f.read()
# Send image via InvokeEndpoint API
response = runtime.invoke_endpoint(EndpointName=endpoint, ContentType='application/x-image', Body=payload)

# Unpack response
result = json.loads(response['Body'].read().decode())
```

------
#### [ TensorFlow ]

Pour TensorFlow soumettre une entrée avec `application/json` pour le type de contenu. 

```
from PIL import Image
import numpy as np
import json
import boto3

client = boto3.client('sagemaker-runtime') 
input_file = 'path/to/image'
image = Image.open(input_file)
batch_size = 1
image = np.asarray(image.resize((224, 224)))
image = image / 128 - 1
image = np.concatenate([image[np.newaxis, :, :]] * batch_size)
body = json.dumps({"instances": image.tolist()})
ioc_predictor_endpoint_name = 'insert name of your endpoint here'
content_type = 'application/json'   
ioc_response = client.invoke_endpoint(
    EndpointName=ioc_predictor_endpoint_name,
    Body=body,
    ContentType=content_type
 )
```

------
#### [ XGBoost ]

 Pour une XGBoost candidature, vous devez plutôt envoyer un texte CSV : 

```
import boto3
import json
 
endpoint = 'insert your endpoint name here'
 
runtime = boto3.Session().client('sagemaker-runtime')
 
csv_text = '1,-1.0,1.0,1.5,2.6'
# Send CSV text via InvokeEndpoint API
response = runtime.invoke_endpoint(EndpointName=endpoint, ContentType='text/csv', Body=csv_text)
# Unpack response
result = json.loads(response['Body'].read().decode())
```

------

 Notez que BYOM autorise un type de contenu personnalisé. Pour de plus amples informations, veuillez consulter [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html). 

# Demander des inférences à partir d'un service déployé (AWS CLI)
<a name="neo-requests-cli"></a>

Les demandes d'inférence peuvent être effectuées une [https://docs.aws.amazon.com/cli/latest/reference/sagemaker-runtime/invoke-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-runtime/invoke-endpoint.html)fois que vous avez un point de terminaison `InService` Amazon SageMaker AI. Vous pouvez faire des demandes d'inférence avec la AWS Command Line Interface (AWS CLI). L'exemple de code suivant montre comment envoyer une image pour inférence : 

```
aws sagemaker-runtime invoke-endpoint --endpoint-name 'insert name of your endpoint here' --body fileb://image.jpg --content-type=application/x-image output_file.txt
```

Un `output_file.txt` contenant des informations sur vos demandes d'inférence est créé si l'inférence a réussi. 

 Pour TensorFlow soumettre une entrée avec `application/json` comme type de contenu. 

```
aws sagemaker-runtime invoke-endpoint --endpoint-name 'insert name of your endpoint here' --body fileb://input.json --content-type=application/json output_file.txt
```