

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden und MXNet-Neuron AWS Neuron-Compiler
<a name="tutorial-inferentia-mxnet-neuron"></a>

Die MXNet-Neuron Kompilierungs-API bietet eine Methode zum Kompilieren eines Modelldiagramms, das Sie auf einem AWS Inferentia-Gerät ausführen können. 

 In diesem Beispiel verwenden Sie die API, um ein ResNet-50 Modell zu kompilieren und damit Inferenzen auszuführen. 

 Weitere Informationen zum Neuron SDK finden Sie in der [AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/neuron-guide/neuron-frameworks/mxnet-neuron/index.html) SDK-Dokumentation. 

**Topics**
+ [Voraussetzungen](#tutorial-inferentia-mxnet-neuron-prerequisites)
+ [Aktivieren der Conda-Umgebung](#tutorial-inferentia-mxnet-neuron-activate)
+ [Resnet50-Kompilierung](#tutorial-inferentia-mxnet-neuron-compilation)
+ [ResNet50 Folgerung](#tutorial-inferentia-mxnet-neuron-inference)

## Voraussetzungen
<a name="tutorial-inferentia-mxnet-neuron-prerequisites"></a>

 Bevor Sie dieses Tutorial verwenden, müssen Sie die Einrichtungsschritte in [Starten einer DLAMI-Instanz mit AWS Neuron](tutorial-inferentia-launching.md) abgeschlossen haben. Sie sollten auch mit Deep Learning und der Verwendung des DLAMI vertraut sein. 

## Aktivieren der Conda-Umgebung
<a name="tutorial-inferentia-mxnet-neuron-activate"></a>

 Aktivieren Sie die MXNet-Neuron Conda-Umgebung mit dem folgenden Befehl: 

```
source activate aws_neuron_mxnet_p36
```

Führen Sie Folgendes aus, um die aktuelle Conda-Umgebung zu verlassen: 

```
source deactivate
```

## Resnet50-Kompilierung
<a name="tutorial-inferentia-mxnet-neuron-compilation"></a>

Erstellen Sie das Python-Skript namens **mxnet\_compile\_resnet50.py** mit folgendem Inhalt. Dieses Skript verwendet die MXNet-Neuron Kompilierungs-Python-API, um ein ResNet-50 Modell zu kompilieren. 

```
import mxnet as mx
import numpy as np

print("downloading...")
path='http://data.mxnet.io/models/imagenet/'
mx.test_utils.download(path+'resnet/50-layers/resnet-50-0000.params')
mx.test_utils.download(path+'resnet/50-layers/resnet-50-symbol.json')
print("download finished.")

sym, args, aux = mx.model.load_checkpoint('resnet-50', 0)

print("compile for inferentia using neuron... this will take a few minutes...")
inputs = { "data" : mx.nd.ones([1,3,224,224], name='data', dtype='float32') }

sym, args, aux = mx.contrib.neuron.compile(sym, args, aux, inputs)

print("save compiled model...")
mx.model.save_checkpoint("compiled_resnet50", 0, sym, args, aux)
```

 Kompilieren Sie das Modell mit dem folgenden Befehl: 

```
python mxnet_compile_resnet50.py
```

 Die Kompilierung dauert einige Minuten. Wenn die Kompilierung abgeschlossen ist, befinden sich die folgenden Dateien in Ihrem aktuellen Verzeichnis: 

```
resnet-50-0000.params
resnet-50-symbol.json
compiled_resnet50-0000.params
compiled_resnet50-symbol.json
```

## ResNet50 Folgerung
<a name="tutorial-inferentia-mxnet-neuron-inference"></a>

Erstellen Sie das Python-Skript namens **mxnet\_infer\_resnet50.py** mit folgendem Inhalt. Mit diesem Skript wird ein Beispiel-Image heruntergeladen, das dazu verwendet wird, um die Inferenz für das kompilierte Modell auszuführen. 

```
import mxnet as mx
import numpy as np

path='http://data.mxnet.io/models/imagenet/'
mx.test_utils.download(path+'synset.txt')

fname = mx.test_utils.download('https://raw.githubusercontent.com/awslabs/mxnet-model-server/master/docs/images/kitten_small.jpg')
img = mx.image.imread(fname)

# convert into format (batch, RGB, width, height)
img = mx.image.imresize(img, 224, 224) 
# resize
img = img.transpose((2, 0, 1)) 
# Channel first
img = img.expand_dims(axis=0) 
# batchify
img = img.astype(dtype='float32')

sym, args, aux = mx.model.load_checkpoint('compiled_resnet50', 0)
softmax = mx.nd.random_normal(shape=(1,))
args['softmax_label'] = softmax
args['data'] = img
# Inferentia context
ctx = mx.neuron()

exe = sym.bind(ctx=ctx, args=args, aux_states=aux, grad_req='null')
with open('synset.txt', 'r') as f:
    labels = [l.rstrip() for l in f]

exe.forward(data=img)
prob = exe.outputs[0].asnumpy()
# print the top-5
prob = np.squeeze(prob)
a = np.argsort(prob)[::-1] 
for i in a[0:5]:
    print('probability=%f, class=%s' %(prob[i], labels[i]))
```

 Führen Sie die Inferenz mit folgendem Befehl mit dem kompilierten Modell aus: 

```
python mxnet_infer_resnet50.py
```

 Die Ausgabe sollte folgendermaßen aussehen: 

```
probability=0.642454, class=n02123045 tabby, tabby cat
probability=0.189407, class=n02123159 tiger cat
probability=0.100798, class=n02124075 Egyptian cat
probability=0.030649, class=n02127052 lynx, catamount
probability=0.016278, class=n02129604 tiger, Panthera tigris
```

**Nächster Schritt**  
[Verwenden von MXNet-Neuron Model Serving](tutorial-inferentia-mxnet-neuron-serving.md)