Aprendizaje automático Es una disciplina compleja pero que se implementa. modelos de aprendizaje automático es mucho menos intimidante de lo que solía ser. Marcos de aprendizaje automático como TensorFlow de Google Facilite el proceso de adquisición de datos, entrenamiento de modelos, entrega de predicciones y refinamiento de resultados futuros.
Creada por el equipo de Google Brain y lanzada inicialmente al público en 2015, TensorFlow es una biblioteca de código abierto para computación numérica y aprendizaje automático a gran escala. TensorFlow agrupa una gran cantidad de modelos y algoritmos de aprendizaje automático y aprendizaje profundo (alias Redes neuronales) y los hace útiles a través de metáforas programáticas comunes. Una cómoda API de interfaz de usuario permite a los desarrolladores crear aplicaciones utilizando Pitón o javascript, mientras que la plataforma subyacente ejecuta esas aplicaciones en C++ de alto rendimiento. TensorFlow también proporciona bibliotecas para muchos otros lenguajes, aunque Python tiende a dominar.
TensorFlow, que compite con frameworks como PyTorch y Apache MXNet, pueden entrenar y ejecutar redes neuronales profundas para clasificación de dígitos escritos a mano, reconocimiento de imágenes, incrustaciones de palabras, redes neuronales recurrentes, modelos de secuencia a secuencia para traducción automática, procesamiento de lenguaje natural y simulaciones basadas en PDE (ecuación diferencial parcial). Lo mejor de todo es que TensorFlow admite la predicción de producción a escala, con los mismos modelos utilizados para la capacitación.
TensorFlow también tiene un Amplia biblioteca de modelos previamente entrenados. disponible para usar en sus proyectos. Código de la Jardín modelo TensorFlow proporciona ejemplos de mejores prácticas para entrenar sus propios modelos.
Cómo funciona TensorFlow
TensorFlow permite a los desarrolladores crear gráficos de flujo de datos—estructuras que describen cómo se mueven los datos a través de un grafico, o una serie de nodos de procesamiento. Cada nodo en el gráfico representa una operación matemática y cada conexión o borde entre nodos es una matriz de datos multidimensional, o tensor.
Las aplicaciones de TensorFlow se pueden ejecutar en casi cualquier destino que sea conveniente: una máquina local, un clúster en la nube, dispositivos iOS y Android, CPU o GPU. Si utiliza la propia nube de Google, puede ejecutar TensorFlow en la nube personalizada de Google. Unidad de procesamiento TensorFlow (TPU) silicio para una mayor aceleración. Los modelos creados por TensorFlow se pueden implementar en casi cualquier dispositivo para realizar predicciones.
TensorFlow 2.0, lanzado en octubre de 2019, renovó significativamente el marco según los comentarios de los usuarios. El resultado es un marco de aprendizaje automático con el que es más fácil trabajar, por ejemplo, mediante el uso relativamente simple Duro API para entrenamiento de modelos y más rendimiento. La capacitación distribuida es más fácil de ejecutar gracias a una nueva API y la compatibilidad con TensorFlow Lite hace posible implementar modelos en una mayor variedad de plataformas. Sin embargo, el código escrito para versiones anteriores de TensorFlow debe reescribirse (a veces de manera significativa) para aprovechar al máximo las nuevas funciones de TensorFlow 2.0.
Se puede utilizar un modelo entrenado para ofrecer predicciones como servicio. a través de un contenedor Docker usando DESCANSO o API de gRPC. Para escenarios de publicación más avanzados, puede usar Kubernetes.
TensorFlow con Python
Muchos programadores acceden a TensorFlow a través del lenguaje de programación Python. Python es fácil de aprender y trabajar, y proporciona formas convenientes de expresar y acoplar abstracciones de alto nivel. TensorFlow es compatible con las versiones de Python 3.7 a 3.11 y, si bien puede funcionar en versiones anteriores de Python, no se garantiza que lo haga.
Los nodos y tensores en TensorFlow son objetos de Python, y las aplicaciones de TensorFlow son en sí mismas aplicaciones de Python. Sin embargo, las operaciones matemáticas reales no se realizan en Python. Las bibliotecas de transformaciones disponibles a través de TensorFlow están escritas como archivos binarios de C++ de alto rendimiento. Python simplemente dirige el tráfico entre las piezas y proporciona las abstracciones de programación para conectarlas.
El trabajo de alto nivel en TensorFlow (crear nodos y capas y vincularlos) se basa en la Duro biblioteca. La API de Keras es aparentemente simple; puedes definir un modelo básico con tres capas en menos de 10 líneas de código, y el código de entrenamiento para el mismo requiere solo unas pocas líneas más. Pero si desea «levantar el capó» y hacer un trabajo más detallado, como escribiendo tu propio bucle de entrenamientousted puede hacer eso.
TensorFlow con JavaScript
JavaScript también es un lenguaje de primera clase para TensorFlow, y una de las enormes ventajas de JavaScript es que se ejecuta en cualquier lugar donde haya un navegador web.
TensorFlow.js, como se llama la biblioteca JavaScript TensorFlow, utiliza la API WebGL para acelerar los cálculos mediante cualquier GPU que esté disponible en el sistema. También es posible utilizar un Asamblea web back-end para su ejecución. WebAssembly es más rápido que el back-end de JavaScript normal si solo se ejecuta en una CPU, pero es mejor usar GPU siempre que sea posible. Modelos prediseñados ayudarle a ponerse en marcha con proyectos sencillos, dándole una idea de cómo funcionan las cosas.
TensorFlow Lite
Los modelos de TensorFlow entrenados también se pueden implementar en dispositivos móviles o de computación de punta, como sistemas iOS o Android. El TensorFlow Lite El conjunto de herramientas optimiza los modelos de TensorFlow para que funcionen bien en dichos dispositivos, permitiéndole elegir compensaciones entre el tamaño y la precisión del modelo. Un modelo más pequeño (es decir, 12 MB frente a 25 MB, o incluso más de 100 MB) es menos preciso, pero la pérdida es generalmente pequeña y está más que compensada por la velocidad y la eficiencia energética del modelo.
Por qué los desarrolladores usan TensorFlow
La mayor ventaja de TensorFlow para el desarrollo del aprendizaje automático es abstracción. En lugar de lidiar con los detalles esenciales de la implementación de algoritmos, o descubrir formas adecuadas de conectar la salida de una función a la entrada de otra, puede concentrarse en la lógica general de la aplicación. TensorFlow se encarga de los detalles detrás de escena.
TensorFlow ofrece comodidades adicionales para los desarrolladores que necesitan depurar y obtener introspección en las aplicaciones de TensorFlow. Cada operación del gráfico se puede evaluar y modificar por separado y de forma transparente, en lugar de construir el gráfico completo como un único objeto opaco y evaluarlo todo a la vez. Este llamado «modo de ejecución ansiosa», que se proporcionaba como opción en versiones anteriores de TensorFlow, ahora es estándar.
El Tablero Tensor El conjunto de visualización le permite inspeccionar y perfilar cómo se ejecutan los gráficos a través de un panel interactivo basado en web. El proyecto TensorBoard de código abierto reemplaza TensorBoard.dev y se puede utilizar para alojar proyectos de aprendizaje automático.
TensorFlow también obtiene muchas ventajas del respaldo de un equipo comercial de primer nivel en Google. Google impulsó el rápido ritmo de desarrollo detrás del proyecto y creó muchas ofertas importantes que hacen que TensorFlow sea más fácil de implementar y usar. El silicio TPU para un rendimiento acelerado en la nube de Google es sólo un ejemplo.
Entrenamiento de modelo determinista con TensorFlow
Algunos detalles de la implementación de TensorFlow dificultan la obtención de resultados de entrenamiento de modelos totalmente deterministas para algunos trabajos de entrenamiento. A veces, un modelo entrenado en un sistema variará ligeramente de un modelo entrenado en otro, incluso cuando reciben exactamente los mismos datos. Las razones de esta variación son resbaladizas: una es cómo y dónde se siembran los números aleatorios; otro está relacionado con Comportamientos no deterministas al usar GPU.. La rama 2.0 de TensorFlow tiene una opción para permitir el determinismo en todo un flujo de trabajo, que puedes hacer con un par de líneas de código. Sin embargo, esta característica tiene un costo de rendimiento y solo debe usarse al depurar un flujo de trabajo.
TensorFlow frente a PyTorch, CNTK y MXNet
TensorFlow compite con una variedad de otros marcos de aprendizaje automático. PyTorch, CNTK y MXNet son tres competidores importantes que abordan muchas de las mismas necesidades. Echemos un vistazo rápido a dónde se destaca cada uno y se queda corto frente a TensorFlow:
- PyTorch está construido con Python y tiene muchas otras similitudes con TensorFlow: componentes acelerados por hardware bajo el capó, un modelo de desarrollo altamente interactivo que permite el trabajo de diseño sobre la marcha y muchos componentes útiles ya incluidos. PyTorch Generalmente es una mejor opción para proyectos que deben estar en funcionamiento en poco tiempo, pero TensorFlow gana para proyectos más grandes y flujos de trabajo más complejos.
- CNTKMicrosoft Cognitive Toolkit, es como TensorFlow al utilizar una estructura gráfica para describir el flujo de datos, pero se centra principalmente en la creación de redes neuronales de aprendizaje profundo. CNTK maneja muchos trabajos de redes neuronales más rápido y tiene un conjunto más amplio de API (Python, C++, C#, Java). Pero no es tan fácil de aprender o implementar como TensorFlow. Además, solo está disponible bajo la licencia GNU GPL 3.0, mientras que TensorFlow está disponible bajo la licencia Apache, más liberal. Y CNTK no está desarrollado de manera tan agresiva; el último lanzamiento importante fue en 2019.
- Apache MXnetadoptado por Amazon como el principal marco de aprendizaje profundo en AWS, puede escalar casi linealmente en múltiples GPU y máquinas. MXnet también admite una amplia gama de API de lenguajes (Python, C++, Scala, R, JavaScript, Julia, Perl, Go), aunque no es tan agradable trabajar con sus API nativas como las de TensorFlow. También tiene una comunidad mucho más pequeña de usuarios y desarrolladores.
Copyright © 2024 IDG Communications, Inc.