Llegamos a ustedes gracias a:



Reportajes y análisis

Cómo elegir una plataforma de aprendizaje de máquina en la nube

[12/08/2020] Para crear modelos eficaces de aprendizaje de máquina y de aprendizaje profundo, se necesitan cantidades copiosas de datos, una forma de limpiar los datos y realizar ingeniería de características en ellos, y una forma de entrenar modelos en sus datos en una cantidad de tiempo razonable. Luego necesita una manera de desplegar sus modelos, monitorearlos para ver si se desvían con el tiempo, y reentrenarlos según sea necesario.

Puede hacer todo eso on-premises si ha invertido en recursos de computación y aceleradores como las GPU; pero puedes encontrar que, si sus recursos son adecuados, también están inactivos la mayor parte del tiempo. Por otra parte, a veces puede ser más rentable ejecutar todo el proceso en la nube, utilizando grandes cantidades de recursos de computación y aceleradores según sea necesario, y luego liberarlos.

Los principales proveedores de nubes -y también una serie de nubes menores- han realizado un esfuerzo significativo en la construcción de sus plataformas de aprendizaje automático para apoyar su ciclo de vida completo -desde la planificación de un proyecto hasta el mantenimiento de un modelo en producción. ¿Cómo se determina cuál de estas nubes satisfará sus necesidades? Aquí hay 12 capacidades que cada plataforma de aprendizaje de máquina de extremo a extremo debe proporcionar.

Estar cerca de sus datos

Si tiene la gran cantidad de datos necesarios para construir modelos precisos, no querrá enviarlos al otro lado del mundo. El problema aquí no es la distancia -es el tiempo: La velocidad de transmisión de datos está limitada en última instancia por la velocidad de la luz -incluso en una red perfecta con un ancho de banda infinito. Las largas distancias significan latencia.

El caso ideal para conjuntos de datos muy grandes es construir el modelo donde los datos ya residen, de modo que no se necesite una transmisión masiva de datos. Varias bases de datos apoyan eso en una medida limitada.

El siguiente mejor caso es que los datos estén en la misma red de alta velocidad que el software de construcción de modelos, lo que típicamente significa dentro del mismo centro de datos. Incluso mover los datos de un centro de datos a otro dentro de una zona de disponibilidad de nubes, puede introducir un retraso significativo si se tienen terabytes (TB) o más. Puede mitigar esto haciendo actualizaciones incrementales.

El peor caso sería si tiene que mover grandes datos a grandes distancias a través de rutas con un ancho de banda limitado y alta latencia. Los cables transpacíficos que van a Australia son particularmente atroces en este sentido.

Apoyar un pipeline ETL o ELT

ETL (exportación, transformación y carga) y ELT (exportación, carga y transformación) son dos configuraciones de pipelines de datos que son comunes en el mundo de las bases de datos. El aprendizaje de las máquinas y el aprendizaje profundo amplifican la necesidad de éstas, especialmente la parte de la transformación. El ELT le da más flexibilidad cuando sus transformaciones necesitan cambiar, ya que la fase de carga suele ser la que más tiempo consume para los grandes datos.

En general, los datos que circulan libremente son ruidosos. Eso necesita ser filtrado. Además, estos datos tienen rangos variables: Una variable puede tener un máximo en los millones, mientras que otra puede tener un rango de -0,1 a -0,001. Para el aprendizaje automático, las variables deben transformarse en rangos estandarizados, para evitar que las que tienen rangos grandes dominen el modelo. Exactamente qué rango estandarizado depende del algoritmo usado para el modelo.

Apoyar un entorno online para la construcción de modelos

La sabiduría convencional solía ser que debería importar sus datos a su escritorio para construir modelos. La mera cantidad de datos necesarios para construir buenos modelos de aprendizaje de máquinas y de aprendizaje profundo cambia el panorama: Puede descargar una pequeña muestra de datos a su escritorio para el análisis de datos exploratorios y la construcción de modelos, pero para los modelos de producción necesita tener acceso a los datos completos.

Los entornos de desarrollo basados en la web como Jupyter Notebooks, JupyterLab y Apache Zeppelin son muy adecuados para la construcción de modelos. Si sus datos están en la misma nube que el entorno de los notebooks, puede llevar el análisis a los datos, minimizando el movimiento de datos que consume mucho tiempo.

Apoyar el entrenamiento de escalado y ampliación

Los requisitos de computación y memoria de las computadoras portátiles son generalmente mínimos, excepto en el caso de los modelos de capacitación. Es de gran ayuda si un portátil puede generar trabajos de formación que se ejecuten en múltiples máquinas virtuales grandes o contenedores. También ayuda mucho si la formación puede acceder a aceleradores como GPU, TPU y FPGAs; estos pueden convertir días de formación en horas.

Soporte AutoML e ingeniería de características automáticas

No todo el mundo es bueno para elegir modelos de aprendizaje de máquinas, seleccionar características (las variables que son utilizadas por el modelo), y diseñar nuevas características a partir de las observaciones en bruto. Incluso si se es bueno en esas tareas, requieren mucho tiempo y pueden ser automatizadas en gran medida.

Los sistemas AutoML suelen probar muchos modelos para ver cuáles dan como resultado los mejores valores objetivos de las funciones; por ejemplo, el mínimo error cuadrado para los problemas de regresión. Los mejores sistemas AutoML también pueden realizar ingeniería de características y utilizar sus recursos eficazmente para buscar los mejores modelos posibles con los mejores conjuntos de características posibles.

Apoyar los mejores marcos de aprendizaje automático y aprendizaje profundo

La mayoría de los científicos de datos tienen los marcos y lenguajes de programación favoritos para el aprendizaje de máquina y el aprendizaje profundo. Para aquellos que prefieren Python, Scikit-learn es a menudo uno de los favoritos para el aprendizaje automático; mientras que TensorFlow, PyTorch, Keras, y MXNet son a menudo los favoritos para el aprendizaje profundo. En Scala, Spark MLlib tiende a ser preferido para el aprendizaje automático. En R, hay muchos paquetes de aprendizaje automático nativos, y una buena interfaz para Python. En Java, H2O.ai tiene una alta calificación, al igual que Java-ML y Deep Java Library.

Las plataformas de aprendizaje automático en la nube y de aprendizaje profundo tienden a tener su propia colección de algoritmos, y a menudo soportan marcos externos en al menos un lenguaje o como contenedores con puntos de entrada específicos. En algunos casos se puede integrar sus propios algoritmos y métodos estadísticos con las facilidades de AutoML de la plataforma, lo cual es bastante conveniente.

Algunas plataformas de nubes también ofrecen sus propias versiones afinadas de los principales marcos de aprendizaje profundo. Por ejemplo, AWS tiene una versión optimizada de TensorFlow que, según afirma, puede lograr una escalabilidad casi lineal para el entrenamiento de redes neuronales profundas.

Ofrecer modelos pre-entrenados y apoyar el aprendizaje de transferencia

No todo el mundo quiere dedicar el tiempo y los recursos de computación para entrenar sus propios modelos -ni deberían, cuando los modelos pre-entrenados están disponibles. Por ejemplo, el conjunto de datos de ImageNet es enorme, y entrenar una red neural profunda de última generación contra ella puede llevar semanas, por lo que tiene sentido utilizar un modelo pre-entrenado para ello cuando se pueda.

Por otro lado, los modelos pre-entrenados no siempre pueden identificar los objetos que le interesan. El aprendizaje de transferencia puede ayudarle a personalizar las últimas capas de la red neuronal para su conjunto de datos específicos, sin el tiempo y el gasto de entrenar la red completa.

Ofrecer servicios de IA afinados

Las principales plataformas de nubes ofrecen servicios de IA robustos y ajustados para muchas aplicaciones, no solo para la identificación de imágenes. Los ejemplos incluyen la traducción de idiomas, de voz a texto, de texto a voz, la previsión y las recomendaciones.

Estos servicios ya han sido entrenados y probados con más datos de los que normalmente están disponibles para las empresas. También están ya desplegados en puntos finales de servicio con suficientes recursos computacionales, incluyendo aceleradores, para asegurar buenos tiempos de respuesta bajo una carga mundial.

Gestione sus experimentos

La única manera de encontrar el mejor modelo para su conjunto de datos es probarlo todo, ya sea manualmente o usando AutoML. Eso deja otro problema: la gestión de sus experimentos.

Una buena plataforma de aprendizaje de máquina de nube tendrá una manera de que pueda ver y comparar los valores de las funciones objetivas de cada experimento, tanto para los conjuntos de datos de entrenamiento como para los datos de prueba, así como el tamaño del modelo y la matriz de confusión. Ser capaz de graficar todo eso es una ventaja definitiva.

Apoyar el despliegue del modelo para la predicción

Una vez que tengas una forma de elegir el mejor experimento dado su criterio, también necesita una forma fácil de desplegar el modelo. Si despliega múltiples modelos para el mismo propósito, también necesitará una forma de repartir el tráfico entre ellos para las pruebas a/b.

Monitorizar el rendimiento de la predicción

Desafortunadamente, el mundo tiende a cambiar, y los datos cambian con él. Eso significa que no puede desplegar un modelo y olvidarlo. En cambio, necesita monitorear los datos enviados para hacer predicciones a lo largo del tiempo. Cuando los datos empiecen a cambiar significativamente con respecto a la línea de base de su conjunto de datos de entrenamiento original, tendrá que volver a entrenar su modelo.

Controlar los costos

Por último, necesita formas de controlar los costos incurridos por sus modelos. El despliegue de modelos para la inferencia de la producción a menudo representa el 90% del costo de la enseñanza profunda, mientras que la formación solo representa el 10% del costo.

La mejor manera de controlar los costos de predicción depende de su carga y de la complejidad de su modelo. Si tiene una carga alta, podría utilizar un acelerador para evitar añadir más instancias de máquinas virtuales. Si tiene una carga variable, podría ser capaz de cambiar dinámicamente su tamaño o el número de instancias o contenedores a medida que la carga sube o baja. Y si tiene una carga baja u ocasional, podrías usar una instancia muy pequeña con un acelerador parcial para manejar las predicciones.

También en este reportaje