

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.

# Appareils en périphérie
<a name="neo-edge-devices"></a>

Amazon SageMaker Neo prend en charge la compilation des cadres de machine learning les plus courants. Vous pouvez déployer vos appareils en périphérie néo-compilés, tels que le Raspberry Pi 3, le Sitara de Texas Instruments, le Jetson TX1, etc. Pour obtenir la liste complète des cadres et des appareils en périphérie pris en charge, consultez [Cadres, appareils, systèmes et architectures pris en charge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html). 

Vous devez configurer votre appareil en périphérie de sorte qu'il puisse utiliser AWS. Pour ce faire, vous pouvez installer DLR et Boto3 sur votre périphérique. Pour ce faire, vous devez configurer les informations d’identification d’authentification. Pour plus d’informations, consultez [Configuration AWS Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration). Une fois votre modèle compilé et votre appareil en périphérie configuré, vous pouvez télécharger le modèle d'Amazon S3 sur votre appareil en périphérie. À partir de là, vous pouvez utiliser le [Deep Learning Runtime (DLR) (Runtime deep learning)](https://neo-ai-dlr.readthedocs.io/en/latest/index.html) pour lire le modèle compilé et faire des inférences. 

Nous recommandons aux utilisateurs débutants de consulter le guide de [Démarrer](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html). Ce guide vous explique comment configurer vos informations d'identification, compiler un modèle, le déployer sur un Raspberry Pi 3 et faire des inférences sur les images. 

**Topics**
+ [Cadres, périphériques, systèmes et architectures pris en charge](neo-supported-devices-edge.md)
+ [Déployez des modèles](neo-deployment-edge.md)
+ [Configuration de Neo sur des appareils en périphérie](neo-getting-started-edge.md)

# Cadres, périphériques, systèmes et architectures pris en charge
<a name="neo-supported-devices-edge"></a>

Amazon SageMaker Neo prend en charge les cadres de machine learning, les appareils en périphérie, les systèmes d’exploitation et les architectures de puces les plus courants. Découvrez si Neo prend en charge votre cadre, votre appareil en périphérie, votre système d’exploitation et votre architecture de puce en sélectionnant l’une des rubriques ci-dessous.

Vous trouverez une liste des modèles testés par l’équipe Amazon SageMaker Neo dans la section [Modèles testés](neo-supported-edge-tested-models.md).

**Note**  
Pour les périphériques Ambarella, des fichiers supplémentaires doivent être inclus dans le fichier TAR compressé avant de l’envoyer pour compilation. Pour plus d’informations, consultez [Résolution des erreurs Ambarella](neo-troubleshooting-target-devices-ambarella.md).
TIM-VX (libtim-vx.so) est requis pour i.MX 8M Plus. Pour plus d’informations sur la création de TIM-VX, consultez le [référentiel GitHub TIM-VX](https://github.com/VeriSilicon/TIM-VX).

**Topics**
+ [Cadres pris en charge](neo-supported-devices-edge-frameworks.md)
+ [Périphériques, architectures de puces et systèmes pris en charge](neo-supported-devices-edge-devices.md)
+ [Modèles testés](neo-supported-edge-tested-models.md)

# Cadres pris en charge
<a name="neo-supported-devices-edge-frameworks"></a>

Amazon SageMaker Neo prend en charge les cadres suivants. 


| Cadre | Version du cadre | Version de modèle | Modèles | Formats de modèle (packagés dans \$1.tar.gz) | Boîtes à outils | 
| --- | --- | --- | --- | --- | --- | 
| MXNet | 1.8 | Prend en charge la version 1.8 ou antérieure | classification d’images, détection d’objets, segmentation sémantique, estimation de pose, reconnaissance d’activités | Un fichier de symboles (.json) et un fichier de paramètres (.params) | GluonCV v0.8.0 | 
| ONNX | 1.7 | Prend en charge la version 1.7 ou antérieure | Classification d’images, SVM | Un fichier de modèle (.onnx) |  | 
| Keras | 2.2 | Prend en charge la version 2.2 ou antérieure | Classification d’images | Un fichier de définition de modèle (.h5) |  | 
| PyTorch | 1.7, 1.8 | Prend en charge la version 1.7, 1.8 ou antérieure | Classification d’images, détection d’objets | Un fichier de définition de modèle (.pth) |  | 
| TensorFlow | 1.15, 2.4, 2.5 (uniquement pour les instances ml.inf1.\$1) | Prend en charge les versions 1.15, 2.4, 2.5 (uniquement pour les instances ml.inf1.\$1) ou antérieures | Classification d’images, détection d’objets | \$1Pour les modèles enregistrés, un fichier .pb ou .pbtxt et un répertoire de variables contenant des variables \$1Pour les modèles figés, un seul fichier .pb ou .pbtxt |  | 
| TensorFlow-Lite | 1.15 | Prend en charge la version 1.15 ou antérieure | Classification d’images, détection d’objets | Un fichier de tampon plat de définition de modèle (.tflite) |  | 
| XGBoost | 1.3 | Prend en charge la version 1.3 ou antérieure | Arbres de décision | Un fichier de modèles XGBoost (.model) dans lequel le nombre de nœuds d’une arborescence est inférieur à 2^31 |  | 
| DARKNET |  |  | Classification des images, détection d’objets (le modèle Yolo n’est pas pris en charge) | Un fichier de configuration (.cfg) et un fichier de poids (.weights) |  | 

# Périphériques, architectures de puces et systèmes pris en charge
<a name="neo-supported-devices-edge-devices"></a>

Amazon SageMaker Neo prend en charge les périphériques, les architectures de puces et les systèmes d’exploitation suivants.

## Appareils
<a name="neo-supported-edge-devices"></a>

Vous pouvez sélectionner un périphérique dans la liste déroulante de la [console Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker) ou en spécifiant le paramètre `TargetDevice` dans la configuration de sortie de l’API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateCompilationJob.html).

Vous pouvez choisir parmi l’un des appareils en périphérie suivants : 


| Liste des périphériques | Système sur puce (SoC) | Système d’exploitation | Architecture | Accélérateur | Exemple d’options de compilateur | 
| --- | --- | --- | --- | --- | --- | 
| aisage | Aucun | Linux | ARM64 | Mali | Aucun | 
| amba\$1cv2 | CV2 | Arch Linux | ARM64 | cvflow | Aucun | 
| amba\$1cv22 | CV22 | Arch Linux | ARM64 | cvflow | Aucun | 
| amba\$1cv25 | CV25 | Arch Linux | ARM64 | cvflow | Aucun | 
| coreml | Aucun | macOS IVS | Aucun | Aucun | \$1"class\$1labels": "imagenet\$1labels\$11000.txt"\$1 | 
| imx8qm | NXP imx8 | Linux | ARM64 | Aucun | Aucun | 
| imx8mplus | i.MX 8M Plus | Linux | ARM64 | NPU | Aucun | 
| jacinto\$1tda4vm | TDA4VM | Linux | ARM | TDA4VM | Aucun | 
| jetson\$1nano | Aucun | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$153', 'trt-ver': '5.0.6', 'cuda-ver': '10.0'\$1Pour `TensorFlow2`, `{'JETPACK_VERSION': '4.6', 'gpu_code': 'sm_72'}` | 
| jetson\$1tx1 | Aucun | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$153', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'\$1 | 
| jetson\$1tx2 | Aucun | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$162', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'\$1 | 
| jetson\$1xavier | Aucun | Linux | ARM64 | NVIDIA | \$1'gpu-code': 'sm\$172', 'trt-ver': '5.1.6', 'cuda-ver': '10.0'\$1 | 
| qcs605 | Aucun | Android | ARM64 | Mali | \$1'ANDROID\$1PLATFORM': 27\$1 | 
| qcs603 | Aucun | Android | ARM64 | Mali | \$1'ANDROID\$1PLATFORM': 27\$1 | 
| rasp3b | ARM A56 | Linux | ARM\$1EABIHF | Aucun | \$1'mattr': ['\$1neon']\$1 | 
| rasp4b | ARM A72 | Aucun | Aucun | Aucun | Aucun | 
| rk3288 | Aucun | Linux | ARM\$1EABIHF | Mali | Aucun | 
| rk3399 | Aucun | Linux | ARM64 | Mali | Aucun | 
| sbe\$1c | Aucun | Linux | x86\$164 | Aucun | \$1'mcpu': 'core-avx2'\$1 | 
| sitara\$1am57x | AM57X | Linux | ARM64 | EVE et/ou DSP C66x | Aucun | 
| x86\$1win32 | Aucun | Windows 10 | X86\$132 | Aucun | Aucun | 
| x86\$1win64 | Aucun | Windows 10 | X86\$132 | Aucun | Aucun | 

Pour plus d’informations sur les options du compilateur de valeur clé JSON pour chaque périphérique cible, consultez le champ `CompilerOptions` dans le type de données [d’API `OutputConfig`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html).

## Systèmes et architectures de puces
<a name="neo-supported-edge-granular"></a>

Les tables de consultation suivantes fournissent des informations sur les systèmes d’exploitation et les architectures disponibles pour les tâches de compilation de modèles Neo. 

------
#### [ Linux ]


| Accélérateur | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Pas d’accélérateur (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | 
| GPU Nvidia | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | 
| Intel\$1Graphics | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | 
| ARM Mali | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | 

------
#### [ Android ]


| Accélérateur | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Pas d’accélérateur (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | 
| GPU Nvidia | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | 
| Intel\$1Graphics | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | 
| ARM Mali | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | 

------
#### [ Windows ]


| Accélérateur | X86\$164 | X86 | ARM64 | ARM\$1EABIHF | ARM\$1EABI | 
| --- | --- | --- | --- | --- | --- | 
| Pas d’accélérateur (CPU) | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/success_icon.svg) Oui | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/negative_icon.svg) Non | 

------

# Modèles testés
<a name="neo-supported-edge-tested-models"></a>

Les sections réductibles suivantes fournissent des informations sur les modèles de machine learning qui ont été testés par l’équipe Amazon SageMaker Neo. Développez la section réductible en fonction de votre cadre pour vérifier si un modèle a été testé.

**Note**  
Ceci n’est pas une liste complète de modèles qui peuvent être compilés avec Neo.

Consultez [Cadres pris en charge](neo-supported-devices-edge-frameworks.md) et [Opérateurs pris en charge par SageMaker AI Neo](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/) pour savoir si vous pouvez compiler votre modèle avec SageMaker Neo.

## DarkNet
<a name="collapsible-section-01"></a>


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| AlexNet |  |  |  |  |  |  |  |  |  | 
| Resnet50 | X | X |  | X | X | X |  | X | X | 
| YOLOv2 |  |  |  | X | X | X |  | X | X | 
| YOLOv2\$1tiny | X | X |  | X | X | X |  | X | X | 
| YOLOv3\$1416 |  |  |  | X | X | X |  | X | X | 
| YOLOv3\$1tiny | X | X |  | X | X | X |  | X | X | 

## MXNet
<a name="collapsible-section-02"></a>


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| AlexNet |  |  | X |  |  |  |  |  |  | 
| Densenet121 |  |  | X |  |  |  |  |  |  | 
| DenseNet201 | X | X | X | X | X | X |  | X | X | 
| GoogleNet | X | X |  | X | X | X |  | X | X | 
| Inceptionv3 |  |  |  | X | X | X |  | X | X | 
| MobileNet0.75 | X | X |  | X | X | X |  |  | X | 
| MobileNet1.0 | X | X | X | X | X | X |  |  | X | 
| MobileNetV2\$10.5 | X | X |  | X | X | X |  |  | X | 
| MobileNetV2\$11.0 | X | X | X | X | X | X | X | X | X | 
| MobileNetV3\$1Large | X | X | X | X | X | X | X | X | X | 
| MobileNetV3\$1Small | X | X | X | X | X | X | X | X | X | 
| ResNeSt50 |  |  |  | X | X |  |  | X | X | 
| ResNet18\$1v1 | X | X | X | X | X | X |  |  | X | 
| ResNet18\$1v2 | X | X |  | X | X | X |  |  | X | 
| ResNet50\$1v1 | X | X | X | X | X | X |  | X | X | 
| ResNet50\$1v2 | X | X | X | X | X | X |  | X | X | 
| ResNext101\$132x4d |  |  |  |  |  |  |  |  |  | 
| ResNext50\$132x4d | X |  | X | X | X |  |  | X | X | 
| SENet\$1154 |  |  |  | X | X | X |  | X | X | 
| SE\$1ResNext50\$132x4d | X | X |  | X | X | X |  | X | X | 
| SqueezeNet1.0 | X | X | X | X | X | X |  |  | X | 
| SqueezeNet1.1 | X | X | X | X | X | X |  | X | X | 
| VGG11 | X | X | X | X | X |  |  | X | X | 
| Xception | X | X | X | X | X | X |  | X | X | 
| darknet53 | X | X |  | X | X | X |  | X | X | 
| resnet18\$1v1b\$10.89 | X | X |  | X | X | X |  |  | X | 
| resnet50\$1v1d\$10.11 | X | X |  | X | X | X |  |  | X | 
| resnet50\$1v1d\$10.86 | X | X | X | X | X | X |  | X | X | 
| ssd\$1512\$1mobilenet1.0\$1coco | X |  | X | X | X | X |  | X | X | 
| ssd\$1512\$1mobilenet1.0\$1voc | X |  | X | X | X | X |  | X | X | 
| ssd\$1resnet50\$1v1 | X |  | X | X | X |  |  | X | X | 
| yolo3\$1darknet53\$1coco | X |  |  | X | X |  |  | X | X | 
| yolo3\$1mobilenet1.0\$1coco | X | X |  | X | X | X |  | X | X | 
| deeplab\$1resnet50 |  |  | X |  |  |  |  |  |  | 

## Keras
<a name="collapsible-section-03"></a>


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| denseet121 | X | X | X | X | X | X |  | X | X | 
| densenet201 | X | X | X | X | X | X |  |  | X | 
| inception\$1v3 | X | X |  | X | X | X |  | X | X | 
| mobilenet\$1v1 | X | X | X | X | X | X |  | X | X | 
| mobilenet\$1v2 | X | X | X | X | X | X |  | X | X | 
| resnet152\$1v1 |  |  |  | X | X |  |  |  | X | 
| resnet152\$1v2 |  |  |  | X | X |  |  |  | X | 
| resnet50\$1v1 | X | X | X | X | X |  |  | X | X | 
| resnet50\$1v2 | X | X | X | X | X | X |  | X | X | 
| vgg16 |  |  | X | X | X |  |  | X | X | 

## ONNX
<a name="collapsible-section-04"></a>


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| AlexNet |  |  | X |  |  |  |  |  |  | 
| mobilenetv2-1.0 | X | X | X | X | X | X |  | X | X | 
| resnet18v1 | X |  |  | X | X |  |  |  | X | 
| resnet18v2 | X |  |  | X | X |  |  |  | X | 
| resnet50v1 | X |  | X | X | X |  |  | X | X | 
| resnet50v2 | X |  | X | X | X |  |  | X | X | 
| resnet152v1 |  |  |  | X | X | X |  |  | X | 
| resnet152v2 |  |  |  | X | X | X |  |  | X | 
| squeezenet1.1 | X |  | X | X | X | X |  | X | X | 
| vgg19 |  |  | X |  |  |  |  |  | X | 

## PyTorch (FP32)
<a name="collapsible-section-05"></a>


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Ambarella CV25 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| denseet121 | X | X | X | X | X | X | X |  | X | X | 
| inception\$1v3 |  | X |  |  | X | X | X |  | X | X | 
| resnet152 |  |  |  |  | X | X | X |  |  | X | 
| resnet18 | X | X |  |  | X | X | X |  |  | X | 
| resnet50 | X | X | X | X | X | X |  |  | X | X | 
| squeezenet1.0 | X | X |  |  | X | X | X |  |  | X | 
| squeezenet1.1 | X | X | X | X | X | X | X |  | X | X | 
| yolov4 |  |  |  |  | X | X |  |  |  |  | 
| yolov5 |  |  |  | X | X | X |  |  |  |  | 
| fasterrcnn\$1resnet50\$1fpn |  |  |  |  | X | X |  |  |  |  | 
| maskrcnn\$1resnet50\$1fpn |  |  |  |  | X | X |  |  |  |  | 

## TensorFlow
<a name="collapsible-section-06"></a>

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


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Ambarella CV25 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet201 | X | X | X | X | X | X | X |  | X | X | 
| inception\$1v3 | X | X | X |  | X | X | X |  | X | X | 
| mobilenet100\$1v1 | X | X | X |  | X | X | X |  |  | X | 
| mobilenet100\$1v2.0 | X | X | X |  | X | X | X |  | X | X | 
| mobilenet130\$1v2 | X | X |  |  | X | X | X |  |  | X | 
| mobilenet140\$1v2 | X | X | X |  | X | X | X |  | X | X | 
| resnet50\$1v1.5 | X | X |  |  | X | X | X |  | X | X | 
| resnet50\$1v2 | X | X | X | X | X | X | X |  | X | X | 
| squeezenet | X | X | X | X | X | X | X |  | X | X | 
| mask\$1rcnn\$1inception\$1resnet\$1v2 |  |  |  |  | X |  |  |  |  |  | 
| ssd\$1mobilenet\$1v2 |  |  |  |  | X | X |  |  |  |  | 
| faster\$1rcnn\$1resnet50\$1lowproposals |  |  |  |  | X |  |  |  |  |  | 
| rfcn\$1resnet101 |  |  |  |  | X |  |  |  |  |  | 

------
#### [ TensorFlow.Keras ]


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| DenseNet121  | X | X |  | X | X | X |  | X | X | 
| DenseNet201 | X | X |  | X | X | X |  |  | X | 
| Inceptionv3 | X | X |  | X | X | X |  | X | X | 
| MobileNet | X | X |  | X | X | X |  | X | X | 
| MobileNetV2 | X | X |  | X | X | X |  | X | X | 
| NASNetLarge |  |  |  | X | X |  |  | X | X | 
| NASNetMobile | X | X |  | X | X | X |  | X | X | 
| ResNet101 |  |  |  | X | X | X |  |  | X | 
| ResNet101v2 |  |  |  | X | X | X |  |  | X | 
| ResNet152 |  |  |  | X | X |  |  |  | X | 
| ResNet152v2 |  |  |  | X | X |  |  |  | X | 
| ResNet50 | X | X |  | X | X |  |  | X | X | 
| ResNet50v2 | X | X |  | X | X | X |  | X | X | 
| VGG16 |  |  |  | X | X |  |  | X | X | 
| Xception | X | X |  | X | X | X |  | X | X | 

------

## TensorFlow-Lite
<a name="collapsible-section-07"></a>

------
#### [ TensorFlow-Lite (FP32) ]


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | i.MX 8M Plus | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| densenet\$12018\$104\$127 | X |  |  | X | X | X |  |  | X |  | 
| inception\$1resnet\$1v2\$12018\$104\$127 |  |  |  | X | X | X |  |  | X |  | 
| inception\$1v3\$12018\$104\$127 |  |  |  | X | X | X |  |  | X | X | 
| inception\$1v4\$12018\$104\$127 |  |  |  | X | X | X |  |  | X | X | 
| mnasnet\$10.5\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mnasnet\$11.0\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mnasnet\$11.3\$1224\$109\$107\$12018 | X |  |  | X | X | X |  |  | X |  | 
| mobilenet\$1v1\$10.25\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.25\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1224 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1128 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1192 | X |  |  | X | X | X |  |  | X | X | 
| mobilenet\$1v2\$11.0\$1224 | X |  |  | X | X | X |  |  | X | X | 
| resnet\$1v2\$1101 |  |  |  | X | X | X |  |  | X |  | 
| squeezenet\$12018\$104\$127 | X |  |  | X | X | X |  |  | X |  | 

------
#### [ TensorFlow-Lite (INT8) ]


| Modèles | ARM V8 | ARM Mali | Ambarella CV22 | Nvidia | Panorama | TI TDA4VM | Qualcomm QCS603 | X86\$1Linux | X86\$1Windows | i.MX 8M Plus | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| inception\$1v1 |  |  |  |  |  |  | X |  |  | X | 
| inception\$1v2 |  |  |  |  |  |  | X |  |  | X | 
| inception\$1v3 | X |  |  |  |  | X | X |  | X | X | 
| inception\$1v4\$1299 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v1\$10.25\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.25\$1224 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.5\$1224 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$10.75\$1224 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v1\$11.0\$1128 | X |  |  |  |  | X |  |  | X | X | 
| mobilenet\$1v1\$11.0\$1224 | X |  |  |  |  | X | X |  | X | X | 
| mobilenet\$1v2\$11.0\$1224 | X |  |  |  |  | X | X |  | X | X | 
| deeplab-v3\$1513 |  |  |  |  |  |  | X |  |  |  | 

------

# Déployez des modèles
<a name="neo-deployment-edge"></a>

Vous pouvez déployer le module de calcul sur des appareils en périphérie à ressources limitées en téléchargeant le modèle compilé depuis Amazon S3 sur votre périphérique, et en utilisant [DLR](https://github.com/neo-ai/neo-ai-dlr) ou [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html).

Avant de poursuivre, assurez-vous que votre appareil Edge doit être compatible avec SageMaker Neo. Veuillez consulter [Supported Frameworks, Devices, Systems, and Architectures (Cadres, périphériques, systèmes et architectures pris en charge)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html) pour connaître les appareils en périphérie pris en charge. Assurez-vous d'avoir spécifié votre appareil en périphérie cible lors de l'envoi de la tâche de compilation. Veuillez consulter [Use Neo to Compile a Model (Utiliser Neo pour compiler un modèle)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html).

## Déploiement d'un modèle compilé (DLR)
<a name="neo-deployment-dlr"></a>

[DLR](https://github.com/neo-ai/neo-ai-dlr) est un environnement d'exécution courant compact, pour les modèles de deep learning et d'arbres de décision. DLR utilise le runtime [TVM](https://github.com/neo-ai/tvm), le runtime [Treelite](https://treelite.readthedocs.io/en/latest/install.html), et NVIDIA TensorRT™, et peut inclure d'autres runtimes spécifiques au matériel. Le DLR fournit un langage Python/C\$1\$1 unifié APIs pour le chargement et l'exécution de modèles compilés sur différents appareils.

Vous pouvez installer la dernière version du package DLR à l'aide de la commande pip suivante :

```
pip install dlr
```

Pour installer DLR sur des cibles GPU ou des appareils en périphérie non x86, veuillez consulter [Releases (Versions)](https://github.com/neo-ai/neo-ai-dlr/releases) pour les binaires préconçus, ou [Installing DLR (Installation de DLR)](https://neo-ai-dlr.readthedocs.io/en/latest/install.html) pour créer DLR à partir d'une source. Par exemple, pour installer un DLR pour Raspberry Pi 3, vous pouvez utiliser : 

```
pip install https://neo-ai-dlr-release.s3-us-west-2.amazonaws.com/v1.3.0/pi-armv7l-raspbian4.14.71-glibc2_24-libstdcpp3_4/dlr-1.3.0-py3-none-any.whl
```

## Déployer un modèle (AWS IoT Greengrass)
<a name="neo-deployment-greengrass"></a>

[AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html) étend les fonctionnalités du cloud aux appareils locaux. Il permet aux appareils de collecter et d'analyser les données plus près de la source des informations, de réagir de manière autonome aux événements locaux et de communiquer en toute sécurité sur les réseaux locaux. Avec AWS IoT Greengrass, vous pouvez effectuer des inférences d'apprentissage automatique à la périphérie sur des données générées localement à l'aide de modèles conçus dans le cloud. Actuellement, vous pouvez déployer des modèles sur tous les appareils AWS IoT Greengrass basés sur les processeurs ARM Cortex-A, Intel Atom et Nvidia Jetson. Pour plus d'informations sur le déploiement d'une application d'inférence Lambda pour effectuer des inférences d'apprentissage automatique avec AWS IoT Greengrass, [consultez Comment configurer une inférence d'apprentissage automatique optimisée à](https://docs.aws.amazon.com/greengrass/latest/developerguide/ml-dlc-console.html) l'aide de la console de gestion. AWS 

# Configuration de Neo sur des appareils en périphérie
<a name="neo-getting-started-edge"></a>

Ce guide de prise en main d'Amazon SageMaker Neo explique comment compiler un modèle, configurer votre appareil et tirer des conclusions sur celui-ci. La plupart des exemples de code utilisent Boto3. Nous fournissons des commandes, le cas AWS CLI échéant, ainsi que des instructions sur la manière de satisfaire aux prérequis pour Neo. 

**Note**  
Vous pouvez exécuter les extraits de code suivants sur votre machine locale, dans un SageMaker bloc-notes, dans Amazon SageMaker Studio ou (selon votre appareil Edge) sur votre appareil Edge. La configuration est similaire ; toutefois, il existe deux exceptions principales si vous exécutez ce guide dans une instance de SageMaker bloc-notes ou une session SageMaker Studio :   
Vous n'avez pas besoin d'installer Boto3.
Vous n'avez pas besoin d'ajouter la politique IAM `‘AmazonSageMakerFullAccess’`

 Ce guide suppose que vous exécutez les instructions suivantes sur votre appareil en périphérie. 

# Conditions préalables
<a name="neo-getting-started-edge-step0"></a>

SageMaker Neo est une fonctionnalité qui vous permet de former des modèles d'apprentissage automatique une seule fois et de les exécuter n'importe où dans le cloud et à la périphérie. Avant de pouvoir compiler et optimiser vos modèles avec Neo, vous devez configurer quelques prérequis. Vous devez installer les bibliothèques Python nécessaires, configurer vos AWS informations d'identification, créer un rôle IAM avec les autorisations requises et configurer un compartiment S3 pour stocker les artefacts du modèle. Vous devez également disposer d’un modèle de machine learning entraîné. Vous trouverez ci-après les étapes de configuration :

1. **Installation de Boto3**

   Si vous exécutez ces commandes sur votre appareil en périphérie, vous devez installer le kit AWS SDK pour Python (Boto3). Dans un environnement Python (de préférence un environnement virtuel), exécutez les opérations suivantes localement sur le terminal de votre appareil en périphérie ou dans une instance de bloc-notes Jupyter : 

------
#### [ Terminal ]

   ```
   pip install boto3
   ```

------
#### [ Jupyter Notebook ]

   ```
   !pip install boto3
   ```

------

1.  **Configurer les AWS informations d'identification** 

   Vous devez configurer les informations d'identification Amazon Web Services sur votre périphérique afin d'exécuter le SDK for Python (Boto3). Par défaut, les AWS informations d'identification doivent être stockées dans le fichier `~/.aws/credentials` sur votre appareil Edge. Dans le fichier d'informations d'identification, vous devez voir deux variables d'environnement :`aws_access_key_id` et `aws_secret_access_key`. 

   Dans votre terminal, exécutez : 

   ```
   $ more ~/.aws/credentials
   
   [default]
   aws_access_key_id = YOUR_ACCESS_KEY
   aws_secret_access_key = YOUR_SECRET_KEY
   ```

   Le [Guide de référence générale AWS](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) contient des instructions sur la façon d'obtenir les `aws_access_key_id` et `aws_secret_access_key` nécessaires. Pour plus d’informations sur la configuration des informations d’identification sur votre périphérique, consultez la documentation [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration). 

1.  **Configurez un rôle IAM et attachez-lui des politiques.** 

   Neo doit accéder à l'URI de votre compartiment S3. Créez un rôle IAM capable d'exécuter l' SageMaker IA et autorisé à accéder à l'URI S3. Vous pouvez créer un rôle IAM à l'aide du SDK for Python (Boto3), de la console ou de la AWS CLI. L'exemple suivant illustre la création d'un rôle IAM à l'aide du SDK for Python (Boto3) : 

   ```
   import boto3
   
   AWS_REGION = 'aws-region'
   
   # Create an IAM client to interact with IAM
   iam_client = boto3.client('iam', region_name=AWS_REGION)
   role_name = 'role-name'
   ```

   Pour plus d'informations sur la création d'un rôle IAM avec la console ou via l' AWS API AWS CLI, consultez la section [Création d'un utilisateur IAM dans votre AWS compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_api).

    Créez un dictionnaire décrivant la politique IAM que vous attachez. Cette politique sert à créer un nouveau rôle IAM. 

   ```
   policy = {
       'Statement': [
           {
               'Action': 'sts:AssumeRole',
               'Effect': 'Allow',
               'Principal': {'Service': 'sagemaker.amazonaws.com'},
           }],  
        'Version': '2012-10-17		 	 	 '
   }
   ```

   Créez un nouveau rôle IAM à l'aide de la politique que vous avez définie ci-dessus :

   ```
   import json 
   
   new_role = iam_client.create_role(
       AssumeRolePolicyDocument=json.dumps(policy),
       Path='/',
       RoleName=role_name
   )
   ```

   Vous devez connaître votre Amazon Resource Name (ARN) lorsque vous créez une tâche de compilation à une étape ultérieure. Veillez donc à le stocker dans une variable. 

   ```
   role_arn = new_role['Role']['Arn']
   ```

    Maintenant que vous avez créé un nouveau rôle, associez les autorisations dont il a besoin pour interagir avec Amazon SageMaker AI et Amazon S3 : 

   ```
   iam_client.attach_role_policy(
       RoleName=role_name,
       PolicyArn='arn:aws:iam::aws:policy/AmazonSageMakerFullAccess'
   )
   
   iam_client.attach_role_policy(
       RoleName=role_name,
       PolicyArn='arn:aws:iam::aws:policy/AmazonS3FullAccess'
   );
   ```

1. **Création d'un compartiment Amazon S3 pour stocker vos artefacts de modèle**

   SageMaker Neo accèdera aux artefacts de votre modèle depuis Amazon S3

------
#### [ Boto3 ]

   ```
   # Create an S3 client
   s3_client = boto3.client('s3', region_name=AWS_REGION)
   
   # Name buckets
   bucket='name-of-your-bucket'
   
   # Check if bucket exists
   if boto3.resource('s3').Bucket(bucket) not in boto3.resource('s3').buckets.all():
       s3_client.create_bucket(
           Bucket=bucket,
           CreateBucketConfiguration={
               'LocationConstraint': AWS_REGION
           }
       )
   else:
       print(f'Bucket {bucket} already exists. No action needed.')
   ```

------
#### [ CLI ]

   ```
   aws s3 mb s3://'name-of-your-bucket' --region specify-your-region 
   
   # Check your bucket exists
   aws s3 ls s3://'name-of-your-bucket'/
   ```

------

1. **Entraînement d'un modèle de machine learning**

   Consultez [Entraîner un modèle avec Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) pour plus d'informations sur la façon de former un modèle d'apprentissage automatique à l'aide d'Amazon SageMaker AI. En variante, vous pouvez télécharger le modèle que vous avez entraîné localement, directement dans un compartiment d'URI Amazon S3. 
**Note**  
 Assurez-vous que le modèle est correctement formaté en fonction du cadre que vous avez utilisé. Voir [Quelles sont les formes de données d'entrée attendues par SageMaker Neo ?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) 

   Si vous n'avez pas encore de modèle, utilisez la `curl` commande pour obtenir une copie locale du `coco_ssd_mobilenet` modèle sur le site Web TensorFlow du fabricant. Le modèle que vous venez de copier est un modèle de détection d'objets entraîné à partir du [jeu de données COCO](https://cocodataset.org/#home). Saisissez ce qui suit dans votre bloc-notes Jupyter :

   ```
   model_zip_filename = './coco_ssd_mobilenet_v1_1.0.zip'
   !curl http://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip \
       --output {model_zip_filename}
   ```

   Veuillez noter que cet exemple particulier a été packagé dans un fichier .zip. Décompressez ce fichier et repackagez-le en tant que fichier tarfile compressé (`.tar.gz`) avant de l'utiliser dans les étapes ultérieures. Saisissez ce qui suit dans votre bloc-notes Jupyter : 

   ```
   # Extract model from zip file
   !unzip -u {model_zip_filename}
   
   model_filename = 'detect.tflite'
   model_name = model_filename.split('.')[0]
   
   # Compress model into .tar.gz so SageMaker Neo can use it
   model_tar = model_name + '.tar.gz'
   !tar -czf {model_tar} {model_filename}
   ```

1. **Chargement d'un modèle entraîné dans un compartiment S3**

   Une fois votre modèle de machine learning entraîné, stockez-le dans un compartiment S3. 

------
#### [ Boto3 ]

   ```
   # Upload model        
   s3_client.upload_file(Filename=model_filename, Bucket=bucket, Key=model_filename)
   ```

------
#### [ CLI ]

   Remplacez `your-model-filename` et `amzn-s3-demo-bucket` par le nom de votre compartiment S3. 

   ```
   aws s3 cp your-model-filename s3://amzn-s3-demo-bucket
   ```

------

# Compilation du modèle.
<a name="neo-getting-started-edge-step1"></a>

Une fois que vous avez satisfait aux [prérequis](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html#neo-getting-started-edge-step0), vous pouvez compiler votre modèle avec Amazon SageMaker AI Neo. Vous pouvez compiler votre modèle à l' AWS CLI aide de la console ou du [SDK Amazon Web Services pour Python (Boto3)[,](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html) voir Utiliser Neo pour](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) compiler un modèle. Dans cet exemple, vous allez compiler votre modèle avec Boto3.

Pour compiler un modèle, SageMaker Neo a besoin des informations suivantes :

1.  **L'URI du compartiment Amazon S3 où vous avez stocké le modèle entraîné.** 

   Si vous avez satisfait les prérequis, le nom de votre compartiment est stocké dans une variable nommée `bucket`. L'extrait de code suivant vous montre comment répertorier l'ensemble de vos compartiments à l'aide de la AWS CLI : 

   ```
   aws s3 ls
   ```

   Par exemple : 

   ```
   $ aws s3 ls
   2020-11-02 17:08:50 bucket
   ```

1.  **L'URI du compartiment Amazon S3 dans lequel vous voulez enregistrer le modèle compilé.** 

   L'extrait de code ci-dessous concatène l'URI de votre compartiment Amazon S3 avec le nom d'un répertoire de sortie appelé `output` : 

   ```
   s3_output_location = f's3://{bucket}/output'
   ```

1.  **Le cadre de machine learning que vous avez utilisé pour entraîner votre modèle.** 

   Définissez le cadre que vous avez utilisé pour entraîner votre modèle.

   ```
   framework = 'framework-name'
   ```

   Par exemple, si vous souhaitez compiler un modèle entraîné à l'aide de TensorFlow, vous pouvez utiliser `tflite` ou`tensorflow`. À utiliser `tflite` si vous souhaitez utiliser une version allégée TensorFlow qui utilise moins de mémoire de stockage. 

   ```
   framework = 'tflite'
   ```

   Pour obtenir la liste complète des cadres pris en charge par Neo, consultez [Cadres, appareils, systèmes et architectures pris en charge](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html). 

1.  **La forme de l'entrée de votre modèle.** 

    Neo a besoin du nom et de la forme de votre tenseur d'entrée. Le nom et la forme sont envoyés en tant que paires clé-valeur.`value` est une liste des dimensions entières d'un tenseur en entrée et `key` est le nom exact d'un tenseur d'entrée dans le modèle. 

   ```
   data_shape = '{"name": [tensor-shape]}'
   ```

   Par exemple :

   ```
   data_shape = '{"normalized_input_image_tensor":[1, 300, 300, 3]}'
   ```
**Note**  
Assurez-vous que le modèle est correctement formaté en fonction du cadre que vous avez utilisé. Voir [Quelles sont les formes de données d'entrée attendues par SageMaker Neo ?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) La clé dans ce dictionnaire doit être remplacée par le nouveau nom du tenseur d'entrée.

1.  **Il s'agit, soit du nom du périphérique cible pour lequel compiler, soit les détails généraux de la plateforme matérielle** 

   ```
   target_device = 'target-device-name'
   ```

   Par exemple, si vous voulez déployer sur un Raspberry Pi 3, utilisez : 

   ```
   target_device = 'rasp3b'
   ```

   Vous pouvez trouver la liste complète des appareils en périphérie pris en charge dans [Supported Frameworks, Devices, Systems, and Architectures (Cadres, périphériques, systèmes et architectures pris en charge)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html).

 Après avoir accompli les étapes précédentes, vous pouvez envoyer une tâche de compilation à 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!')
```

Pour obtenir des informations supplémentaires pour le débogage, incluez l’instruction print suivante :

```
print(response)
```

Si la tâche de compilation a réussi, votre modèle compilé est stocké dans le compartiment Amazon S3 de sortie que vous avez spécifié au préalable (`s3_output_location`). Téléchargez votre modèle compilé localement : 

```
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)
```

# Configuration de votre appareil
<a name="neo-getting-started-edge-step2"></a>

Vous devrez installer des packages sur votre appareil en périphérie pour qu'il puisse faire des inférences. Vous devrez également installer [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html) ou [Deep Learning Runtime (DLR)](https://github.com/neo-ai/neo-ai-dlr). Dans cet exemple, vous allez installer les packages requis pour faire des inférences pour l'algorithme de détection d'objet `coco_ssd_mobilenet` et vous utiliserez DLR.

1. **Installation de packages supplémentaires**

   En plus de Boto3, vous devez installer certaines bibliothèques sur votre appareil en périphérie. Les bibliothèques que vous installez dépendent de votre cas d'utilisation. 

   Par exemple, pour l'algorithme de détection d'`coco_ssd_mobilenet`objets que vous avez téléchargé précédemment, vous devez l'installer [NumPy](https://numpy.org/)pour la manipulation des données et les statistiques, [PIL](https://pillow.readthedocs.io/en/stable/) pour charger les images et [Matplotlib](https://matplotlib.org/) pour générer des tracés. Vous avez également besoin d'une copie de TensorFlow si vous souhaitez évaluer l'impact de la compilation avec Neo par rapport à une base de référence. 

   ```
   !pip3 install numpy pillow tensorflow matplotlib 
   ```

1. **Installation du moteur d'inférence sur votre périphérique**

   Pour exécuter votre modèle néo-compilé, installez le [Deep Learning Runtime (DLR)](https://github.com/neo-ai/neo-ai-dlr) sur votre périphérique. DLR est un environnement d'exécution courant compact, pour les modèles de deep learning et d'arbres de décision. Sur les CPU cibles x86\$164 exécutant Linux, vous pouvez installer la dernière version du package DLR à l'aide de la commande `pip` :

   ```
   !pip install dlr
   ```

   Pour l’installation de DLR sur des GPU cibles ou des appareils en périphérie non x86, consultez [Versions](https://github.com/neo-ai/neo-ai-dlr/releases) pour les binaires préconçus, ou [Installation de DLR](https://neo-ai-dlr.readthedocs.io/en/latest/install.html) pour créer un DLR à partir d’une source. Par exemple, pour installer un DLR pour Raspberry Pi 3, vous pouvez utiliser : 

   ```
   !pip install https://neo-ai-dlr-release.s3-us-west-2.amazonaws.com/v1.3.0/pi-armv7l-raspbian4.14.71-glibc2_24-libstdcpp3_4/dlr-1.3.0-py3-none-any.whl
   ```

# Effectuer des inférences sur votre périphérique
<a name="neo-getting-started-edge-step3"></a>

Dans cet exemple, vous allez utiliser Boto3 pour télécharger la sortie de votre tâche de compilation sur votre appareil en périphérie. Vous allez ensuite importer le DLR, télécharger un exemple d'images à partir du jeu de données, redimensionner cette image pour qu'elle corresponde à l'entrée d'origine du modèle, puis faire une prédiction.

1. **Téléchargez votre modèle compilé depuis Amazon S3 sur votre périphérique et extrayez-le du fichier tarfile compressé.** 

   ```
   # Download compiled model locally to edge device
   object_path = f'output/{model_name}-{target_device}.tar.gz'
   neo_compiled_model = f'compiled-{model_name}.tar.gz'
   s3_client.download_file(bucket_name, object_path, neo_compiled_model)
   
   # Extract model from .tar.gz so DLR can use it
   !mkdir ./dlr_model # make a directory to store your model (optional)
   !tar -xzvf ./compiled-detect.tar.gz --directory ./dlr_model
   ```

1. **Importez le DLR et un objet `DLRModel` initialisé.**

   ```
   import dlr
   
   device = 'cpu'
   model = dlr.DLRModel('./dlr_model', device)
   ```

1. **Téléchargez une image pour l'inférence et formatez-la en fonction de la façon dont votre modèle a été entraîné**.

   Pour l'exemple `coco_ssd_mobilenet`, vous pouvez télécharger une image depuis le [jeu de données COCO](https://cocodataset.org/#home), puis réformer l'image à `300x300` : 

   ```
   from PIL import Image
   
   # Download an image for model to make a prediction
   input_image_filename = './input_image.jpg'
   !curl https://farm9.staticflickr.com/8325/8077197378_79efb4805e_z.jpg --output {input_image_filename}
   
   # Format image so model can make predictions
   resized_image = image.resize((300, 300))
   
   # Model is quantized, so convert the image to uint8
   x = np.array(resized_image).astype('uint8')
   ```

1. **Utilisez le DLR pour effectuer des inférences**.

   Pour terminer, vous pouvez utiliser le DLR pour réaliser une prédiction sur l'image que vous venez de télécharger : 

   ```
   out = model.run(x)
   ```

[Pour d'autres exemples d'utilisation du DLR pour faire des déductions à partir d'un modèle compilé par Neo sur un périphérique périphérique, consultez le neo-ai-dlr référentiel Github.](https://github.com/neo-ai/neo-ai-dlr) 