Transcript
00:00:00Mojo, el lenguaje de programación, acaba de llegar a la versión 1.0, y el momento es un poco extraño.
00:00:05Se lanzó con un compilador cerrado, siete días después lo hicieron de código abierto,
00:00:09y Qualcomm acababa de comprar la empresa.
00:00:12Pero olvidémonos de todo eso por un segundo.
00:00:14Lo verdaderamente importante de Mojo es código tipo Python sin renunciar a C++ o CUDA para ganar velocidad.
00:00:20Así que veamos si esto realmente cumple.
00:00:27Todo el concepto de Mojo gira en torno a una pregunta.
00:00:30¿Qué tal si pudieras escribir código que se ve y se siente exactamente como Python,
00:00:34pero ejecutar las partes que realmente importan sin abandonar C++ o CUDA?
00:00:39Un único lenguaje legible tanto en la CPU como en la GPU.
00:00:42De eso se trata todo esto.
00:00:43Y ahora que Mojo finalmente ha alcanzado la versión 1.0, quería comprobar cuánto de esto es realmente real.
00:00:49Así que antes de meternos con Qualcomm, código abierto y todo eso, vamos a probarlo.
00:00:53Si te gustan las herramientas de programación para acelerar tu flujo de trabajo, asegúrate de suscribirte.
00:00:57Subimos videos todo el tiempo.
00:00:59Voy a hacer esto en mi máquina, pero no voy a dar un tutorial completo de Mojo aquí.
00:01:03Si nunca lo has visto antes, pues sí, se parece mucho a Python,
00:01:07pero vas a notar algunas diferencias clave.
00:01:10En el lado izquierdo está Python.
00:01:12En el lado derecho está Mojo.
00:01:13Es el mismo bucle, la misma cuadrícula, el mismo límite de iteraciones.
00:01:17No voy a entrar a detallar las matemáticas de esto.
00:01:20Observa los dos bucles while.
00:01:21Están haciendo exactamente lo mismo.
00:01:23Primero vamos a ejecutar Python aquí.
00:01:26Muy bien.
00:01:27Corrió.
00:01:28Se ejecutó.
00:01:28Ahora, el mismo programa compilado con Mojo.
00:01:32De nuevo, vamos a ejecutarlo.
00:01:35Y boom.
00:01:35Listo.
00:01:36Ahora bien, las sumas de comprobación no coincidirán en el último dígito.
00:01:39Difieren por un par de cientos sobre un cuarto de millón.
00:01:43Python primero multiplica y luego suma.
00:01:45La compilación de Mojo puede fusionar eso en una sola instrucción.
00:01:49Unos pocos píxeles toman una iteración adicional.
00:01:51Toma los segundos aquí como el número real.
00:01:54Y esto no es NumPy.
00:01:55No es un modelo.
00:01:56El rendimiento no se limita a que el bucle de la CPU sea más rápido.
00:02:00Puedes empezar en Python porque es fácil.
00:02:03Luego, el camino pasa a C++ o CUDA.
00:02:06Ahora tienes dos archivos y empiezan a desincronizarse.
00:02:09Así que esta es la pregunta que plantea Mojo.
00:02:12¿Puede el archivo que lees ser exactamente el mismo archivo que se ejecuta en la GPU?
00:02:17Esta función es el núcleo (kernel).
00:02:18Cada hilo de la GPU suma un par de números.
00:02:20Eso es todo.
00:02:21No me cambié a Metal, Swift o CUDA.
00:02:24Compílalo.
00:02:26Y ahora tenemos el código funcionando.
00:02:28Así que sí.
00:02:30Mojo puede hacer algo bastante interesante aquí.
00:02:32Y acabo de compilar un núcleo de GPU funcional en una MacBook usando el mismo lenguaje en el que escribía
00:02:38código normal, Python.
00:02:40Tu código de aprendizaje automático empieza en Python porque Python es fácil de usar.
00:02:44Todos lo sabemos.
00:02:45Luego, con el tiempo, el rendimiento empieza a importar.
00:02:48Así que las partes importantes se reescriben en C++ o CUDA.
00:02:52Ahora, estamos manteniendo dos versiones del mismo sistema.
00:02:55Y de nuevo, con el tiempo, eso solo genera confusión.
00:02:58La gracia de Mojo es que el archivo legible y el archivo rápido son exactamente lo mismo.
00:03:03Ahora bien, la persona detrás de todo esto es Chris Lattner.
00:03:06Él construyó LLVM, luego Clang y después Swift.
00:03:10Pero hacer funcionar un núcleo de GPU es una cosa.
00:03:14Llamar al lenguaje 1.0, eso es un poco diferente.
00:03:18Entonces, ¿qué significa realmente 1.0 aquí?
00:03:21No significa que Mojo esté terminado.
00:03:23Significa más o menos estabilidad.
00:03:25Hay promesas de que el código que escribes hoy no se va a romper.
00:03:29De eso trata un lanzamiento importante como este.
00:03:30Pero entonces te encuentras con la primera parte extraña.
00:03:32Mojo llegó a la versión 1.1 antes de que su compilador fuera siquiera de código abierto.
00:03:37La biblioteca estándar ya se había abierto en marzo de 2024.
00:03:40Los núcleos max se abrieron en 2025.
00:03:43Pero el compilador, lo que realmente realiza la compilación, se mantuvo propietario hasta el 18 de agosto de este año.
00:03:50Bajo la licencia Apache 2.0, y eso es importante porque apenas siete días antes, cuando salió Mojo 1.0, seguía cerrado.
00:03:57Y eso responde a una de las mayores críticas que Mojo ha recibido durante tres años seguidos.
00:04:02Solías poder decir: seguro, pero el compilador es cerrado.
00:04:05Ya no podemos decir eso realmente, lo cual suena a que va en la dirección correcta.
00:04:10Tal vez lo esté.
00:04:10Hasta que miras lo que pasó tres semanas antes.
00:04:14La adquisición por parte de Qualcomm se completó el 29 de julio.
00:04:16Mojo 1.0 se lanzó el 11 de agosto.
00:04:19El compilador se abrió el 18 de agosto.
00:04:21Así que el hito de apertura más grande en la historia de Mojo ocurrió en menos de tres semanas después de que Modular dejara de ser una empresa independiente.
00:04:29Y eso crea inmediatamente dos formas completamente diferentes de interpretar esto.
00:04:33La número uno es que Qualcomm compró Modular porque quiere a Mojo en todas partes.
00:04:37Probablemente no.
00:04:37O que Qualcomm compró Modular y, eventualmente, todo esto sea absorbido por una compañía mucho más grande.
00:04:44Qualcomm hace chips.
00:04:45Un lenguaje que compila bien para chips se vuelve mucho más valioso.
00:04:49Podemos usarlo libremente.
00:04:50Así que la jugada del código abierto tiene sentido.
00:04:53Pero si Mojo tiene éxito o no, probablemente no dependerá de Qualcomm.
00:04:57Dependerá de si el lenguaje es lo suficientemente bueno como para justificar el cambio en primer lugar.
00:05:02Pero de nuevo, aquí es donde todo empieza a volverse confuso.
00:05:05Mojo tiene un problema con los benchmarks.
00:05:07Allá por 2023, la gran cifra era que Mojo podía ser 68,000 veces más rápido que Python.
00:05:13Eso es una locura.
00:05:14Todavía hay una publicación activa que afirma que Mojo es un 50% más rápido que Rust en análisis de ADN.
00:05:19Esa prueba de rendimiento fue destrozada.
00:05:21Demostraron que el benchmark no estaba midiendo lo que decía medir.
00:05:25Y todavía verás la cifra de 35,000 veces dando vueltas por ahí.
00:05:29Eso proviene de la multiplicación de matrices.
00:05:31Pero lo que están comparando es, bueno,
00:05:34por un lado, una implementación en Mojo totalmente vectorizada, paralela y optimizada por bloques.
00:05:40Por el otro lado, un triple bucle en Python puro.
00:05:44Sí, un triple bucle.
00:05:45No NumPy, solo un bucle anidado que nadie en la tierra usaría realmente.
00:05:49Así que no me importa mucho lo de ser 35,000 veces más rápido.
00:05:52Yo quería números de esta máquina.
00:05:54Estoy en un M4 Pro comparado con Python puro.
00:05:57Frente a Python puro, 26 veces y media más rápido.
00:06:00Frente a NumPy, por operación, cerca de dos veces más rápido.
00:06:05Ahora bien, obviamente 26 no son 68,000.
00:06:08Pero 26 veces sigue siendo una buena cifra porque NumPy ya está hecho en C por debajo.
00:06:14En ese punto, realmente no estás venciendo a Python.
00:06:16Estás venciendo a C con un mejor comportamiento de la memoria.
00:06:19Y eso es lo frustrante de Mojo.
00:06:21Pero el rendimiento no es en realidad la mayor razón por la que dudaría en usar Mojo hoy.
00:06:25Ya he jugado con él antes.
00:06:27Lo estoy ejecutando aquí hoy.
00:06:28El gran tema es la estabilidad.
00:06:30Ahora bien, ¿qué tan estable es esto?
00:06:32Porque Mojo 1.0 se lanza con 41 advertencias de API inestables, incluyendo int, print y len, funciones nativas principales.
00:06:40Fueron marcadas como inestables dentro de un supuesto lanzamiento de estabilidad.
00:06:45Y el mismo día que Mojo promete que tu código no se romperá, eliminar la palabra clave fn rompió aproximadamente 39 paquetes del ecosistema.
00:06:52Ahora bien, la palabra clave fn, que era fundamental en cómo operaba Mojo, fue completamente eliminada.
00:06:58Sin proceso de transición.
00:06:59Y aunque el compilador ahora es de código abierto, todavía no aceptan contribuciones para él.
00:07:04Así que Mojo 1.0 es estable, supongo.
00:07:07Pero tal vez no tan estable como dicen.
00:07:09Lo que nos lleva a la única pregunta que realmente importa.
00:07:12¿Deberías usar esto?
00:07:13Ahora bien, si escribes núcleos de GPU, CUDA, Triton, ese mundo, creo que Mojo definitivamente vale un día o dos.
00:07:21Un solo lenguaje entre CPU y GPU, y compilé un núcleo de GPU funcional en una laptop.
00:07:27No hay muchas otras cosas que hagan eso.
00:07:29Pero esto todavía tiene mucho margen de crecimiento.
00:07:31Así que yo no le daría prioridad de ninguna manera todavía.
00:07:35Hace tres años, el argumento en contra de Mojo era bastante simple.
00:07:38Nuevo lenguaje genial, pero ¿quién va a usar esto?
00:07:40Era un lenguaje cerrado de una startup que pedía a los desarrolladores apostar todo en él.
00:07:44Hoy en día, el compilador tiene licencia Apache 2.0.
00:07:47El lenguaje es la versión 1.0.
00:07:48Y esa startup ahora forma parte de Qualcomm.
00:07:51Soy Josh de BetterStack.
00:07:53Si disfrutas de los consejos y trucos de programación como este, asegúrate de suscribirte.
00:07:56Nos vemos en otro video.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video