

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Distribución de modelos
<a name="model-serving"></a>

A continuación, se indican las opciones de distribución de modelos instaladas en la AMI de aprendizaje profundo con Conda. Haga clic en una de las opciones para obtener información acerca de cómo utilizarla.

**Topics**
+ [TensorFlow Sirviendo](tutorial-tfserving.md)
+ [TorchServe](tutorial-torchserve.md)

# TensorFlow Sirviendo
<a name="tutorial-tfserving"></a>

[TensorFlow Serving](https://www.tensorflow.org/tfx/guide/serving) es un sistema de servicio flexible y de alto rendimiento para modelos de aprendizaje automático.

La `tensorflow-serving-api` viene preinstalada con la DLAMI de un solo marco. Para usar el servicio de tensorflow, primero active el TensorFlow entorno.

```
$ source /opt/tensorflow/bin/activate
```

A continuación, utilice su editor de texto preferido para crear un script que tenga el siguiente contenido. Denomínelo `test_train_mnist.py`. Se hace referencia a este script en el [TensorFlow tutorial](https://github.com/tensorflow/docs/blob/master/site/en/tutorials/quickstart/beginner.ipynb), que entrenará y evaluará un modelo de aprendizaje automático de redes neuronales que clasifica imágenes.

```
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
```

Ahora ejecute el script pasando la ubicación y el puerto del servidor y el nombre de archivo de la foto del perro esquimal como parámetros.

```
$ /opt/tensorflow/bin/python3 test_train_mnist.py
```

 Sea paciente, ya que el script puede tardar un rato en proporcionar resultados. Cuando se complete el entrenamiento, debería ver lo siguiente: 

```
I0000 00:00:1739482012.389276    4284 device_compiler.h:188] Compiled cluster using XLA!  This line is logged at most once for the lifetime of the process.
1875/1875 [==============================] - 24s 2ms/step - loss: 0.2973 - accuracy: 0.9134 
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1422 - accuracy: 0.9582
Epoch 3/5
1875/1875 [==============================] - 3s 1ms/step - loss: 0.1076 - accuracy: 0.9687
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0872 - accuracy: 0.9731
Epoch 5/5
1875/1875 [==============================] - 3s 1ms/step - loss: 0.0731 - accuracy: 0.9771
313/313 [==============================] - 0s 1ms/step - loss: 0.0749 - accuracy: 0.9780
```

## Más características y ejemplos
<a name="tutorial-tfserving-project"></a>

Si está interesado en obtener más información sobre TensorFlow Serving, visite el [TensorFlow sitio web](https://www.tensorflow.org/serving/).

# TorchServe
<a name="tutorial-torchserve"></a>

TorchServe es una herramienta flexible para ofrecer modelos de aprendizaje profundo que se han exportado desde PyTorch. TorchServe viene preinstalada con la AMI de aprendizaje profundo con Conda. 

Para obtener más información sobre su uso TorchServe, consulte [Model Server para PyTorch](https://github.com/pytorch/serve/blob/master/docs/README.md) ver la documentación. 

 **Temas** 

## Sirva un modelo de clasificación de imágenes en TorchServe
<a name="tutorial-torchserve-serving"></a>

En este tutorial se muestra cómo crear un modelo de clasificación de imágenes con TorchServe. Utiliza un modelo DenseNet -161 proporcionado por PyTorch. Una vez que el servidor está en funcionamiento, escucha las solicitudes de predicción. Al cargar una imagen, en este caso una imagen de un gatito, el servidor devuelve una predicción de las 5 principales clases coincidentes de entre las clases con las que se haya entrenado el modelo. 

**A modo de ejemplo, un modelo de clasificación de imágenes en TorchServe**

1. Conéctese a una instancia de Amazon Elastic Compute Cloud (Amazon EC2) con el AMI de aprendizaje profundo con Conda, v34 o posterior. 

1. Active el entorno de `pytorch_p310`. 

   ```
   source activate pytorch_p310
   ```

1. Clone el TorchServe repositorio y, a continuación, cree un directorio para almacenar sus modelos.  

   ```
   git clone https://github.com/pytorch/serve.git
   mkdir model_store
   ```

1. Archive el modelo utilizando el archivador de modelos. El `extra-files` parámetro usa un archivo del `TorchServe` repositorio, así que actualiza la ruta si es necesario. Para obtener más información sobre el archivador de modelos, consulte el archivador de modelos [Torch](https://github.com/pytorch/serve/blob/master/model-archiver/README.md) para. TorchServe 

   ```
   wget https://download.pytorch.org/models/densenet161-8d451a50.pth
   torch-model-archiver --model-name densenet161 --version 1.0 --model-file ./serve/examples/image_classifier/densenet_161/model.py --serialized-file densenet161-8d451a50.pth --export-path model_store --extra-files ./serve/examples/image_classifier/index_to_name.json --handler image_classifier
   ```

1. Ejecute TorchServe para iniciar un punto final. Al agregar `> /dev/null` se silencia la salida del registro. 

   ```
   torchserve --start --ncs --model-store model_store --models densenet161.mar > /dev/null
   ```

1. Descarga una imagen de un gatito y envíala al punto final de TorchServe predicción: 

   ```
   curl -O https://s3.amazonaws.com/model-server/inputs/kitten.jpg
   curl http://127.0.0.1:8080/predictions/densenet161 -T kitten.jpg
   ```

   El punto de conexión de predicción devuelve una predicción en JSON similar a las siguientes cinco predicciones principales, donde la imagen tiene una probabilidad del 47 % de contener un gato egipcio, seguida de una probabilidad del 46 % de que sea un lince o un gato montés: 

   ```
   {
    "tiger_cat": 0.46933576464653015,
    "tabby": 0.463387668132782,
    "Egyptian_cat": 0.0645613968372345,
    "lynx": 0.0012828196631744504,
    "plastic_bag": 0.00023323058849200606
   }
   ```

1. Cuando termine la prueba, detenga el servidor. 

   ```
   torchserve --stop
   ```

 **Otros ejemplos** 

TorchServe tiene varios ejemplos que puede ejecutar en su instancia de DLAMI. Puede verlos en la página de [ejemplos del repositorio de TorchServe proyectos](https://github.com/pytorch/serve/tree/master/examples). 

 **Más información** 

 Para obtener más TorchServe documentación, incluida la forma de configurar TorchServe con Docker y las TorchServe funciones más recientes, consulta [la página del TorchServe proyecto](https://github.com/pytorch/serve) en GitHub. 