Índice del Contenido[Esconder][Espectáculo]
¿Alguna vez ha deseado construir aplicaciones más rápidas y eficientes y ha descubierto que los lenguajes de programación estándar son incapaces de cumplir con sus requisitos?
Aquí es cuando Mojo Language entra en juego.
Mojo es un nuevo lenguaje de programación desarrollado por Modular, una empresa que se especializa en infraestructura de IA.
Está especialmente diseñado para permitir a los desarrolladores crear aplicaciones más rápidas y sólidas para varios casos de uso, incluido el desarrollo de IA. En esta publicación, veremos qué Mojo es, cómo funciona y por qué debería usarlo en su próximo proyecto.
Los orígenes de Mojo
Los creadores de Mojo reconocieron la necesidad de un lenguaje de programación que combinara la facilidad de uso de Python con la velocidad y eficiencia de C.
Y establecieron un lenguaje que permitiría a los desarrolladores crear aplicaciones de alto rendimiento sin tener que aprender lenguajes de descripción de hardware estándar.
Como resultado, crearon Mojo, que está destinado a ser totalmente compatible con el ecosistema de Python al tiempo que proporciona una velocidad de nivel C.
Modular: la organización detrás del lenguaje Mojo
Entonces, ¿quiénes son los creadores de este lenguaje futurista?
Modular es una startup de infraestructura de IA líder en el mundo creada por Chris Lattner y Tim Davis, quienes se conocieron en Google y se dieron cuenta de que la infraestructura demasiado complicada y fragmentada estaba limitando la influencia global de la IA.
El objetivo y objetivo de Modular es repensar la infraestructura de IA para mejorar la humanidad. Su cultura y principios otorgan una gran importancia a los clientes, el software de producción de alta calidad y la entrega de resultados significativos.
Los objetivos de Mojo
Mojo fue diseñado para proporcionar un modelo de programación único para aceleradores de aprendizaje automático.
Modular determinó que Mojo debería permitir la programación de propósito general porque las CPU actuales tienen tensores y otros aceleradores de IA. Además, debido a que Python se usa ampliamente en el aprendizaje automático y otros campos, Modular decidió unirse al ecosistema de Python.
El uso de Python facilitó aún más el diseño del lenguaje. Debido a que la mayor parte de la sintaxis ya se había determinado, la corporación podría concentrarse en construir el mecanismo de compilación y proporcionar capacidades de programación especializadas.
Características importantes a considerar
programabilidad
Tipos progresivos
La función de tipos progresivos de Mojo Language permite a los desarrolladores utilizar anotaciones de tipo para mejorar la eficiencia y comprobaciones de errores.
Los desarrolladores pueden diseñar un código más efectivo que detecte errores en el momento de la compilación, eliminando errores y mejorando la eficiencia, al proporcionar información de tipo más completa.
Abstracciones de costo cero
Los desarrolladores pueden tomar el control del almacenamiento mediante la asignación de datos en línea en estructuras gracias a las abstracciones de costo cero proporcionadas por Mojo Language.
Al eliminar el requisito de asignaciones de memoria adicionales, esta característica mejora la eficiencia del código y reduce la cantidad de código repetitivo.
Ajuste automático de idioma integrado
La funcionalidad de ajuste automático integrada en el idioma en Mojo Language permite a los desarrolladores determinar automáticamente los valores ideales de los parámetros para beneficiarse del hardware de destino.
Con esta funcionalidad, es más sencillo optimizar el código sin tener que ajustarlo manualmente para cada combinación de hardware.
Mojo Language es una herramienta flexible y eficaz para el desarrollo de IA, ya que también proporciona todo el poder de MLIR (Representación intermedia de varios niveles), un tiempo de ejecución paralelo heterogéneo y tiempos de compilación rápidos.
Paralelización
Mojo utiliza MLIR, que permite a los programadores utilizar vectores, subprocesos y unidades de hardware para AI para la paralelización. Mojo admite el procesamiento paralelo en varios núcleos a diferencia de la ejecución de un solo subproceso de Python.
Con una aceleración de 35,000x sobre Python, Mojo supera a otros lenguajes en términos de velocidad.
Interoperabilidad
La interoperabilidad con todo el ecosistema de Python es una de las ventajas únicas de Mojo. Esto implica que puede combinar Mojo con cualquier biblioteca arbitraria, como Numpy y Matplotlib, así como con su código personalizado.
Por ejemplo, puede visualizar datos en su código Mojo utilizando la biblioteca de Python Matplotlib.
Checkout Extensibility
Mojo también es bastante flexible, lo que permite a los usuarios simplemente agregar pasos de procesamiento previo y posterior a los modelos o cambiar los pasos existentes por otros nuevos.
Para mejorar sus modelos y la pila modular, los desarrolladores pueden usar la fusión del kernel, la reescritura de gráficos, las funciones de forma y otras técnicas.
¿Por qué lo elegirías sobre Python?
Python es un lenguaje de desarrollo de IA popular debido a su flexibilidad y bibliotecas compiladas de alto rendimiento. Sin embargo, es significativamente más lento que lenguajes como C++.
Por lo tanto, los programadores aprenden a usar envoltorios de Python en lenguajes más rápidos para evitar usar Python en áreas críticas para el rendimiento.
Esto lleva al problema de los dos idiomas, en el que los modelos deben transformarse de Python a una implementación más rápida, como ONNX o torch script, que no es compatible con todas las capacidades de Python. Python también tiene problemas de rendimiento y falta de un buen procesamiento paralelo.
Incluso a los programadores experimentados les resulta difícil estudiar, depurar y abordar los problemas de rendimiento debido al dilema de los dos idiomas.
También existen restricciones básicas sobre lo que Python puede hacer debido a la forma en que está estructurado el lenguaje. Si bien la implementación en el mundo real de algoritmos que emplean componentes básicos puede parecer fácil, es significativamente más difícil y requiere el uso de un lenguaje más rápido.
¿Cómo empezar?
Puede comenzar a usar Mojo Language ahora mismo en su Playground para comenzar. Playground basado en JupyterHub brinda lecciones y la oportunidad de crear su propio código Mojo, aunque Mojo todavía es un trabajo en progreso.
Puede registrarse para acceder en su sitio web para acceder al Playground.
Para alcanzar sus objetivos de rendimiento, Mojo emplea tecnologías de compilación de próxima generación con tecnologías integradas de almacenamiento en caché, subprocesos múltiples y distribución en la nube.
Agrega primitivos adicionales a la programación de sistemas y aspira a convertirse en un superconjunto de Python con el tiempo. Para comenzar a codificar con Mojo, use el compilador Mojo para ejecutar un programa Mojo desde la terminal de la misma manera que lo hace Python.
El lenguaje está actualmente en desarrollo y está dirigido a desarrolladores con experiencia en programación de sistemas.
Envolver
Mojo se considera un superconjunto de Python. Y tiene el potencial de revolucionar la programación al combinar la simplicidad de Python con el rendimiento de C++ y Rust.
Puede aprovechar al máximo Biblioteca de Python ecosistema, lo que permite a los desarrolladores crear bibliotecas de alto rendimiento sin necesidad de C, C++, Rust o CUDA.
Permite la producción de código portátil gracias a sus funciones de autoajuste y metaprogramación en tiempo de compilación.
Aunque todavía es un trabajo en progreso, tiene el potencial de convertirse en una formidable herramienta de programación y transformar la industria de la programación. Por lo tanto, ¡deberíamos estar atentos a los futuros desarrollos de Modular!
¿Crees que una persona con conocimientos básicos a intermedios podría iniciar sus estudios en este nuevo idioma? ¿O aconseja estudiar primero un lenguaje más básico, como Javascript o Python?
Hola Cris, perdón por la respuesta tardía. Creo que tener una comprensión/experiencia básica de Python de antemano podría ser útil antes de comenzar con Mojo.