Por qué Swift puede convertirse en un gran evento en el aprendizaje profundo

Hola Habr! Les presento la traducción del artículo "Por qué Swift puede ser la próxima gran cosa en el aprendizaje profundo" de Max Pechyonkin, que me interesó, en el que el autor analiza el lenguaje en el que se llevará a cabo una capacitación profunda en los próximos años.

Si está haciendo un entrenamiento en profundidad, lo más probable es que comience a aprender Swift

Entrada


Si está programando, lo más probable es que cuando escuche Swift, piense en desarrollar aplicaciones en iOS y MacOS. Si está entrenando en profundidad, entonces debería haber oído hablar de Swift for Tensorflow (S4TF). Entonces puede preguntarse: "¿Por qué Google creó una versión de TensorFlow para Swift? Después de todo, ya hay versiones para Python y C ++, entonces ¿por qué otro idioma? En esta publicación, trataré de responder a esta pregunta y expondré las razones por las que debe monitorear de cerca S4TF, así como el lenguaje Swift en sí. No intentaré hacer un análisis detallado, solo trataré de describir el panorama general con muchos enlaces, si está interesado, puede profundizar.

Swift tiene un apoyo muy fuerte


Swift fue creado por Chris Luttner cuando trabajaba en Apple. Ahora Chris trabaja para Google Brain (uno de los mejores equipos de investigación de inteligencia artificial del mundo). El hecho mismo de que el creador del lenguaje Swift ahora esté trabajando en el laboratorio, que se dedica a una capacitación en profundidad, habla de la seriedad de este proyecto.

Hace algún tiempo, la gente en Google se dio cuenta de que incluso si Python y un lenguaje maravilloso, todavía tiene muchas restricciones que son difíciles de superar. Se necesitaba un nuevo lenguaje para TensorFlow, y después de mucha deliberación, Swift fue elegido como candidato. No entraré en detalles aquí, pero aquí hay un documento que describe las fallas de Python, así como también qué otros lenguajes se consideraron y cómo todo se unió en Swift.

Swift para TensorFlow es mucho más que una biblioteca


Swift para TensorFlow no es solo TF para otro idioma. Esta es esencialmente otra rama (en el sentido git ) del lenguaje Swift. Esto significa que S4TF no es una biblioteca; Es un lenguaje con sus propias reglas, con sus propias funciones integradas que admiten toda la funcionalidad requerida por TensorFlow. Por ejemplo, S4TF tiene un sistema muy poderoso de diferenciación automática : es una de las cosas fundamentales en el aprendizaje profundo, es necesario para calcular gradientes. Compare esto con Python, en el que la diferenciación automática no es el componente principal del lenguaje. Algunas características desarrolladas originalmente como parte de S4TF se integraron más tarde en el lenguaje Swift.

Rápido rápido


Cuando descubrí por primera vez que Swift es tan rápido como C, me sorprendió. Sabía que C estaba muy optimizado y permitía alcanzar una velocidad muy alta, pero esto se debía a la gestión de la micro memoria y, por lo tanto, C tenía problemas con la seguridad de la memoria. Además, C no es tan fácil de aprender.

Swift ahora funciona tan rápido como C en cálculos numéricos, no tiene problemas con la seguridad de la memoria y es mucho más fácil de aprender. El compilador LLVM de Swift es muy potente y tiene una optimización muy eficiente, proporcionará una velocidad de código muy rápida.

Puedes usar Python, C y C ++ en Swift


Dado que Swift para el aprendizaje automático se encuentra en una etapa muy temprana de su desarrollo, muchas bibliotecas para MO no se han creado para ello. No debe preocuparse demasiado por esto, ya que Swift tiene una increíble compatibilidad de Python con Python. Simplemente importa cualquier biblioteca de Python a Swift, y funciona. También puede importar las bibliotecas C y C ++ en Swift (para C ++ debe asegurarse de que los archivos de encabezado estén escritos en C puro, sin funciones de C ++).

En resumen, si necesita una funcionalidad específica, pero aún no está implementada en Swift, puede importar los paquetes apropiados de Python, C o C ++.
Impresionante!

Swift puede ir muy bajo


Si alguna vez usó TensorFlow, lo más probable es que lo haya hecho con el paquete Python. Bajo el capó, la versión de Python de la biblioteca TensorFlow usa código C a un nivel muy bajo. Por lo tanto, cuando llama a una función en TensorFlow, en algún nivel usa algún código C. Esto significa que hay un límite en cuanto a qué tan profundo puede verificar el código fuente. Por ejemplo, si desea ver cómo se implementan las convoluciones, no verá el código Python porque están implementadas en C.

Swift es diferente. Chris Luttner llamó a Swift " azúcar sintáctico para LLVM [lenguaje ensamblador]". Esto significa que, de hecho, Swift funciona casi directamente con el hardware, y no hay otras líneas de código escritas en C. También significa que Swift es muy rápido, como describí anteriormente. Todo esto lleva al hecho de que usted, como desarrollador, puede verificar el código a niveles muy altos y muy bajos, sin la necesidad de usar C.

Que sigue


Swift es solo una parte de las innovaciones de aprendizaje en profundidad que se desarrollan en Google. Hay otro componente que también está muy conectado: MLIR , que significa representación intermedia multinivel. MLIR será una infraestructura de compilación unificadora que le permitirá escribir código en Swift (o en cualquier otro idioma) y compilarlo en cualquier hardware compatible. Ahora hay muchos compiladores para diferentes equipos de destino, pero MLIR es capaz de cambiar esto, permitirá no solo reutilizar el código, sino también escribir sus propios componentes de compilador de bajo nivel. También permitirá a los investigadores utilizar el aprendizaje automático para optimizar algoritmos de bajo nivel.

Si bien MLIR actúa como un compilador para el aprendizaje automático, también vemos la posibilidad de utilizar métodos de aprendizaje automático en los compiladores. Esto es especialmente importante ya que el número de ingenieros que desarrollan bibliotecas numéricas no está creciendo tan rápido como la variedad de modelos o hardware para el aprendizaje automático.

Imagine utilizar el aprendizaje profundo para optimizar algoritmos de bajo nivel para particionar la memoria en datos ( Halide está tratando de resolver un problema similar). Y esto es solo el comienzo, estamos esperando muchas más aplicaciones creativas que utilicen el aprendizaje automático en compiladores.

Resumen


Si estás en el campo del aprendizaje profundo, entonces probablemente deberías comenzar a aprender Swift. Esto traerá muchas ventajas sobre Python. Google está invirtiendo seriamente para hacer de Swift el componente principal de su infraestructura TensorFlow ML, y muy probablemente Swift se convertirá en un lenguaje de aprendizaje en profundidad. Si ya está comenzando a aprender y usar Swift, esto le dará la ventaja pionera.

Source: https://habr.com/ru/post/457954/


All Articles