¡Nunca vuelvas a tener un Jupyter Notebook inmantenible!

Rate this content
Bookmark

La visualización de datos es una parte fundamental de la Ciencia de Datos. La charla comenzará con una demostración práctica (utilizando pandas, scikit-learn y matplotlib) de cómo confiar solo en estadísticas resumidas y predicciones puede dejarte ciego ante la verdadera naturaleza de tus conjuntos de datos. Haré hincapié en que las visualizaciones son cruciales en cada paso del proceso de Ciencia de Datos y, por lo tanto, los Jupyter Notebooks definitivamente pertenecen a la Ciencia de Datos. Luego veremos cómo la mantenibilidad es un desafío real para los Jupyter Notebooks, especialmente cuando se intenta mantenerlos bajo control de versiones con git. Aunque existen numerosas herramientas de calidad de código para scripts de Python (flake8, black, mypy, etc.), la mayoría de ellas no funcionan en Jupyter Notebooks. Con este fin, presentaré nbQA, que permite ejecutar cualquier herramienta estándar de calidad de código de Python en un Jupyter Notebook. Por último, demostraré cómo usarlo dentro de un flujo de trabajo que permite a los profesionales mantener la interactividad de sus Jupyter Notebooks sin tener que sacrificar su mantenibilidad.

26 min
02 Jul, 2021

Video Summary and Transcription

Los Jupyter Notebooks son importantes para la ciencia de datos, pero mantenerlos puede ser un desafío. La visualización de conjuntos de datos y el uso de herramientas de calidad de código como NBQA pueden ayudar a abordar estos desafíos. Herramientas como nbdime y Precommit pueden ayudar con el control de versiones y la calidad del código futuro. La configuración de NBQA y otras herramientas de calidad de código se puede hacer en el archivo PyProject.toml. NBQA se ha integrado en los flujos de trabajo de integración continua de varios proyectos. Se debe considerar mover el código de los notebooks a paquetes de Python según la necesidad de reproducibilidad y soluciones autocontenidas.

Available in English

1. Introducción a Jupyter Notebooks

Short description:

Discutiremos la importancia de Jupyter Notebooks y los desafíos de mantenerlos. Luego, demostraré un flujo de trabajo para mantener tus Jupyter Notebooks mantenibles.

Hola, amigos. Hoy estamos aquí para hablar sobre Jupyter Notebooks y cómo mantenerlos mantenibles. Comenzaremos con un ejemplo motivador, en el cual presentaré el caso de por qué podrías estar interesado en usar Jupyter Notebooks en primer lugar. Luego, abordaré un par de desafíos que las personas suelen mencionar al intentar mantener sus Jupyter Notebooks mantenibles.

El primero tiene que ver con el control de versiones, y cualquiera que haya intentado ver la diferencia entre dos notebooks usando git diff sabrá de qué estoy hablando. No es fácil. El segundo tiene que ver con la integración continua y, más específicamente, la falta de herramientas de calidad de código disponibles para ejecutar en Jupyter Notebooks.

Entonces, finalmente, demostraré un flujo de trabajo para mantener tus Jupyter Notebooks mantenibles. Vamos directo a nuestro ejemplo motivador. He preparado un flujo de trabajo de ciencia de datos bastante estándar aquí, absolutamente estándar. Lo recorreremos en un segundo. Ahora, podrías preguntarte por qué te estoy mostrando un flujo de trabajo de ciencia de datos absolutamente estándar, y ten paciencia, puede haber un giro al final, puede. Así que vamos a recorrerlo.

2. Analyzing Summary Statistics

Short description:

Comenzamos leyendo cuatro archivos CSV utilizando Pandas read CSV. Imprimimos estadísticas resumidas para los cuatro conjuntos de datos, que muestran que son bastante similares.

Comenzamos leyendo cuatro archivos CSV utilizando Pandas read CSV, bastante estándar. Cada uno de ellos tiene dos columnas, x e y, bastante estándar. Luego, imprimiremos algunas estadísticas resumidas, por lo que imprimiremos la media de x, la media de y, la desviación estándar de x, la desviación estándar de y y la correlación entre x e y. Haremos esto para los cuatro conjuntos de data, aún bastante estándar.

Y luego, utilizando Scikit-learn, para cada uno de estos conjuntos de data ajustaremos un modelo de regresión lineal, también bastante estándar, e imprimiremos el error cuadrado medio, también absolutamente estándar.

Entonces, ¿dónde está el giro? Bueno, veamos qué sucede si ejecutamos esto usando Python. Correcto, mira eso. Si observamos lo que se ha impreso en la consola, veremos que la media de x es la misma para los cuatro conjuntos de data, pero también lo es la media de y, la desviación estándar de x, la desviación estándar de y, la correlación entre x e y, y el error cuadrado medio al ajustar un modelo de regresión lineal también es casi idéntico. Entonces, si observamos esto, podemos decir que los cuatro conjuntos de data deben ser bastante similares. Eso es lo que estas estadísticas resumidas nos están diciendo.

3. Analyzing Data Sets in Jupyter Notebooks

Short description:

Intentemos hacer el análisis en un cuaderno de Jupyter en lugar de un script de Python. Visualizaremos los conjuntos de datos y las líneas de regresión lineal. Los gráficos revelan que los conjuntos de datos no son iguales, resaltando la importancia de la visualización. Los cuadernos de Jupyter pueden ser criticados por problemas de control de versiones, como se muestra en la diferencia después de un cambio trivial.

Ahora, intentemos hacer algo ligeramente diferente. Repitamos este análisis, pero en lugar de hacerlo en un script de Python, hagámoslo en un cuaderno de Jupyter. Haremos lo mismo. Simplemente leeremos estos conjuntos de data utilizando pandas.read.csv y ajustaremos un modelo de regresión lineal utilizando scikit-learn. Pero luego, en lugar de simplemente imprimir algunas estadísticas resumidas, visualizaremos nuestros conjuntos de data y también visualizaremos las líneas de regresión lineal, que habremos ajustado. Y debido a que acabamos de imprimir las estadísticas resumidas y eran las mismas para los cuatro conjuntos de data, esperamos que los cuatro gráficos se vean casi idénticos. Así que, vamos. Listos, preparados, ya.

Oh, ¿qué está pasando? Parece que tal vez estos cuatro conjuntos de data no son tan similares después de todo. Sin embargo, si contrastamos esto con lo que vimos hace un segundo cuando solo imprimimos algunos números en la consola, ahora podemos decir que los cuatro conjuntos de data no son realmente iguales. Simplemente tienen algunas características compartidas. Pero cuando solo nos basamos en números individuales como estadísticas resumidas, no podíamos decir eso. Sin embargo, es frustrantemente común ver flujos de trabajo de data science en los que las personas simplemente cargan los data, ajustan un modelo y luego imprimen algunos números sin molestarse en visualizarlo. Así que ese es el ejemplo motivador. Espero que este ejemplo motivador haya resaltado la importancia de visualizar tus data. Y los cuadernos de Jupyter son una excelente manera de hacerlo. Pero si los cuadernos de Jupyter son tan buenos, ¿por qué a veces son criticados? Bueno, dije antes que plantean un problema cuando se trata de control de versiones. Y para cualquiera que no haya intentado hacer eso antes, veamos juntos a qué me refiero. Guardemos el cuaderno tal como está. Y hagamos un commit. git commit run notebook. Ahora hagamos un cambio absolutamente trivial. Simplemente agreguemos una pequeña línea aquí que diga fig subplot title Data Frames. Ya sabes, un cambio realmente pequeño. Ejecutemos la celda nuevamente. Lo único que ha cambiado es que he agregado este título. Si esto fuera un script de Python y solo hubiéramos cambiado una línea de código, entonces si hiciéramos git diff, veríamos una diferencia realmente pequeña. Sin embargo, esto no es un script de Python. Es un cuaderno de Jupyter. Y así que si guardamos y hacemos git diff, mira lo que sucede.

4. Desafíos con Jupyter Notebooks y Soluciones

Short description:

Nos encontramos con una diferencia horrenda entre los cuadernos, lo que me hace querer dejar de usar los cuadernos de Jupyter. Sin embargo, una herramienta especializada llamada nbdyme proporciona una vista visualmente agradable de la diferencia, lo que hace que los cuadernos de Jupyter sean más deseables. Otro desafío es la falta de herramientas de calidad de código para los cuadernos. Sin embargo, una herramienta llamada NBQA puede convertir los cuadernos en scripts de Python, ejecutar herramientas de calidad de código y reconstruir el cuaderno. Esto permite la integración continua y verificaciones de calidad de código en los cuadernos de Jupyter.

Obtenemos esta diferencia de imagen en bruto absolutamente horrenda e irrazonable. Miro esto y no tengo idea de lo que está sucediendo. Me hace querer dejar de usar los cuadernos de Jupyter para siempre. Sin embargo, todo está perdido, porque tal vez no sea tanto que los cuadernos de Jupyter no funcionen bajo control de versiones, tal vez solo necesitamos una herramienta más especializada.

Y una de esas herramientas, que les presentaré hoy, se llama nbdyme. La forma en que nbdyme funciona es que lo llamas desde la línea de comandos, como nbdiff-web, y luego, permíteme permitir eso, y obtendrás una URL que puedes abrir en tu navegador, y ahora obtenemos una vista visualmente agradable y fácil de entender de la diferencia entre los cuadernos. Ahora, si miramos esto, está absolutamente claro que solo ha cambiado una línea de código. También podemos comparar fácilmente la diferencia en las salidas y ver que solo ha cambiado el título. Esto es mucho más fácil de leer en comparación con lo que teníamos hace unos minutos. Esta diferencia absolutamente ilegible, ahora tenemos algo visualmente agradable que me hace querer usar los cuadernos de Jupyter nuevamente. Genial. Entonces no era que los cuadernos de Jupyter no funcionaran con el control de versiones. Era más que necesitábamos una herramienta especializada. Entonces ese es el primer desafío cuando se trata de los cuadernos de Jupyter que mencioné anteriormente. Ahora veamos el siguiente. Porque si estás manteniendo las cosas bajo control de versiones, es probable que no solo estés viendo la diferencia entre las versiones de tu código, también estarás ejecutando integración continua. Si estás acostumbrado a hacer integración continua en tus scripts de Python, es probable que estés acostumbrado a ejecutar una suite completa de linters y formateadores en tu código como black, isort, flake8, pyupgrade, mypy, la lista continúa. Si le dices a alguien que está acostumbrado a hacer eso que de repente tienen que cambiar a usar cuadernos de Jupyter, para los cuales no tendrán disponible esa gran suite de herramientas, entonces es posible que se sientan con razón como llorar. Pero ¿eso significa que todo está perdido, o nuevamente, significa que solo necesitamos una herramienta más especializada? Veamos. Necesitaríamos una herramienta que convierta temporalmente tu cuaderno en un script de Python y lo guarde en un directorio temporal, ejecute estas herramientas de calidad de código en él, reconstruya el cuaderno y pase la salida. Y una de esas herramientas, que les presentaré hoy, se llama NBQA. Veamos cómo funciona un poco. He preparado aquí un cuaderno para ustedes, que produce un gráfico bonito al final, que se toma de la galería de matplotlib, pero dentro de él he escrito un código intencionalmente distorsionado. Veamos qué sucede cuando ejecutamos NBQA y luego algunas herramientas de calidad de código en él. Puedes ejecutar NBQA desde la línea de comandos. De hecho, ni siquiera necesitas tener tu cuaderno abierto o tener una instancia de Jupyter ejecutándose. Entonces, veamos qué sucede. Vamos a formatearlo automáticamente usando black. Luego ordenemos las importaciones usando isort. Luego actualizaremos la sintaxis usando pyupgrade, y finalmente ejecutaremos flake8, que no modificará nuestro cuaderno.

5. Usando Precommit para la Calidad del Código Futuro

Short description:

Eliminamos una importación no utilizada y usamos nb-dime para ver la diferencia entre los cuadernos. Las importaciones se ordenan, se elimina la importación no utilizada, se reemplaza el constructor obsoleto y se soluciona la indentación inconsistente. Para garantizar la calidad del código en el futuro, podemos usar la herramienta Precommit, que ejecuta automáticamente verificaciones de calidad del código y bloquea los commits si no pasan. Al habilitar pre-commit en nuestro espacio de trabajo, podemos asegurarnos de que nuestros cuadernos continúen pasando las verificaciones de calidad del código. Pre-commit también se puede utilizar durante la integración continua para validar los cambios entrantes.

Solo nos informará si hay alguna violación de la guía de estilo. Y, de hecho, nos dice que hay una importación que no se utiliza, Seaborn. Entonces, podemos abrir nuestro cuaderno nuevamente, eliminar esta importación no utilizada y ahora, veamos qué ha cambiado.

Para ver qué ha cambiado, vamos a hacer git diff, excepto que no vamos a hacer git diff. Acabo de decirte que deberíamos usar nb-dime para ver la diferencia entre los cuadernos. Entonces, vamos a usarlo. Abramos este enlace en nuestro navegador y ahora, veamos qué ha cambiado.

Entonces, en primer lugar, verás que las importaciones ahora se han ordenado gracias a isort. Esta importación no utilizada se ha eliminado gracias a flakeate. Este constructor obsoleto de este diccionario se ha reemplazado por uno más moderno gracias a pyupgrade. Esta indentación inconsistente se ha solucionado gracias a black y de repente, el estilo del código se siente mucho más uniforme y será más fácil mantener una calidad consistente. Será más fácil comparar las diferencias cuando diferentes personas lo hayan modificado, si el estilo es consistente.

Genial, excepto que no solo queremos que nuestro cuaderno tenga una cierta code quality hoy. Queremos asegurarnos de que se mantenga así en el futuro y una forma popular de hacerlo es a través de una herramienta llamada Precommit. La forma en que funciona Precommit es que necesitas un archivo .precommit config.yaml en el que especifiques los repositorios que alojan las herramientas de code quality que deseas ejecutar en tus archivos. Aquí estaré usando NVQA. Especificas una revisión, en este momento estoy poniendo 0.3.3, pero siempre debes verificar cuál es la última versión, y probablemente poner esa. Y luego especificas qué hooks quieres ejecutar. Así que ejecutaré nbqa-black, nbqa-iSort, nbqa-pyupgrade y nbqa-flake8. Esto es exactamente lo que teníamos antes, pero ahora lo he puesto en mi archivo pre-commit. Entonces, lo que sucederá ahora es que si hacemos un commit que incluya un cuaderno, pre-commit ejecutará todas estas verificaciones de code quality automáticamente y bloqueará nuestro commit si no pasan todas. Excepto, lo siento, necesitamos habilitar pre-commit en nuestro espacio de trabajo para que funcione. Entonces, hagamos un reset notebook. Ahora agreguémoslo nuevamente. Hagamos commit. Muy bien y ahora verás que ha ejecutado nuestras herramientas de code quality. Tuve que hacer esto dos veces para que todas pasaran y la segunda vez pre-commit nos permitió hacer el commit. Entonces, si usas pre-commit, te asegurarás de que no solo tus cuadernos pasen las verificaciones de code quality hoy, sino también que continúen pasando las verificaciones de code quality en el futuro. También puedes ejecutar pre-commit durante tu integración continua. Y así te asegurarás de que cualquier cambio entrante en tu repositorio pase.

6. Configurando NBQA y Herramientas de Calidad del Código

Short description:

¿Es realmente tan simple como ejecutar nbqa black en tus cuadernos? He ocultado la complejidad en el archivo PyProject.toml, donde puedes configurar NBQA y otras herramientas de calidad del código. Puedes permitir que NBQA modifique tu cuaderno directamente especificándolo en la sección mutate. Se pueden agregar argumentos adicionales de línea de comandos en addopt.

¿Son realmente tan simples estas comprobaciones? ¿Es realmente tan simple como ejecutar nbqa black y luego puedes usar black en tus cuadernos de la misma manera que usarías normalmente black en tus scripts de Python? Tengo una confesión que hacer. En realidad, he ocultado un poco de complejidad en el archivo PyProject.toml. Puedes configurar NBQA completamente dentro de este archivo. Es el mismo archivo que puedes usar para configurar tu formateador black. Entonces, si alguna de tus herramientas utiliza archivos de configuración, puedes ponerlos aquí. Si quieres que alguna herramienta de calidad del código modifique tu cuaderno directamente, puedes indicárselo a NBQA aquí en la sección mutate. Observa que no he puesto flakate porque flakate solo analiza nuestro cuaderno sin modificarlo realmente. Y luego, si quieres pasar algún argumento adicional de línea de comandos,

7. Importancia de los Cuadernos Jupyter y Desafíos

Short description:

Los cuadernos Jupyter son cruciales para la ciencia de datos, ya que permiten la visualización de datos, abordan los desafíos de mantenimiento y proporcionan herramientas de calidad de código a través de NB time y NBQA.

puedes ponerlos aquí en addopt. Genial. Entonces, en resumen, hemos visto cómo los cuadernos Jupyter desempeñan un papel integral en la ciencia de datos. Esto se debe a que te permiten visualizar tus datos lo que te ayuda a comprenderlo de una manera que simplemente imprimir algunas estadísticas de resumen en tu consola no lo hace. También vimos que los cuadernos Jupyter presentan algunos desafíos cuando se trata de mantenerlos. Específicamente, que es difícil ver la diferencia entre dos cuadernos. Y vimos cómo podemos abordar esto utilizando NB time. Y también que hay una falta de herramientas de calidad de código disponibles para los cuadernos Jupyter. Vimos cómo podemos mantener nuestras mismas herramientas de calidad de código de Python pero simplemente ejecutarlas en nuestros cuadernos Jupyter a través de NBQA. He incluido enlaces a las páginas de inicio de NB time y NBQA aquí así como a esta presentación. Eso es todo de mi parte. Ahora, por favor, sal y escribe un código mantenible.

QnA

Integración y Beneficios de NBQA

Short description:

Hemos tenido a PyMC3, Alibi, SK time, Pandas profiling y NLP profiler utilizando NBQA como parte de sus flujos de trabajo de integración continua. Estamos considerando introducir una acción de GitHub para NBQA. nbdime tiene una integración de GitHub para revisar solicitudes de extracción. Es gratuito para proyectos de código abierto pero no para proyectos privados. NBQA es similar a integrar un IDE en un cuaderno Jupyter y agregarle algunos esteroides. Jeremy Howard describe los cuadernos Jupyter como una encarnación del entorno de programación literaria concebido por Donald Knuth. Cualquier herramienta que nos ayude a programar de manera más cómoda y mantenible dentro de un cuaderno sería bienvenida.

Cuaderno Jupyter. Bueno, bienvenidos. Vamos a pasar a las preguntas de nuestra audiencia. ¿Están listos? Claro, es bueno estar aquí. Muy bien. Primera pregunta. ¿Has presentado NBQA a los otros científicos de datos en tu lugar de trabajo? ¿Cuánto ha ayudado en su flujo de trabajo? Claro. Recientemente lo mencioné en el trabajo, por lo que la adopción es limitada. En este momento la mayoría de la adopción ha sido en el mundo de código abierto. Hemos tenido a PyMC3, Alibi, SK time, Pandas profiling y NLP profiler utilizándolo como parte de sus flujos de trabajo de integración continua. Sospecho que la mayoría de la adopción probablemente estará allí. Estamos considerando introducir una acción de GitHub y esperamos que eso ayude a despertar más interés y a llegar a más personas. Sí, ¿puedes ampliar eso? Porque mostraste cómo usarlo localmente pero se puede usar en GitHub en el futuro, ¿verdad? Sí, claro. En el futuro habrá una acción de GitHub. Esto se refiere específicamente a nbqa. La otra herramienta que mostré, nbdime, que solo para aclarar, no estoy afiliado a ella ni soy coautor, nbdime tiene una integración de GitHub que se puede utilizar para revisar solicitudes de extracción en GitHub. Algunas bibliotecas como pymc3 lo utilizan bastante. Es gratuito para proyectos de código abierto pero no para proyectos privados. Si quieres usarlo en tu lugar de trabajo, tendrás que argumentar a tu empleador por qué deberían pagarlo. Bueno, puedo ser muy convincente, así que eso no es un problema.

Siguiente pregunta. ¿Sería seguro decir que NBQA es similar a integrar un IDE en un cuaderno Jupyter y agregarle algunos esteroides? Me sorprende que nadie haya pensado en esto antes. Excelente trabajo. Oh, gracias. Eso es muy amable de tu parte. Me gustaría pensar en ello de esa manera. Creo... Estoy tratando de recordar su nombre. El tipo que hizo fast.ai, Jeremy Howard, describe los cuadernos Jupyter como una encarnación del entorno de programación literaria, que fue concebido por Donald Knuth, si no me equivoco. Y creo que es una lástima que muchas de las prácticas de desarrollo estándar, que están disponibles cuando programamos en scripts de Python, no estén tan fácilmente disponibles cuando programamos en cuadernos Jupyter. Y dado algunos de los beneficios que proporcionan al hacer ciencia de datos, creo que cualquier herramienta que nos ayude a programar de manera más cómoda y mantenible dentro de un cuaderno, me gustaría pensar que sería bienvenida.

Migración de código de un cuaderno a un paquete de Python

Short description:

Al decidir si mover el código de un cuaderno Jupyter a un paquete de Python, considere la necesidad a largo plazo de reproducibilidad. Si el código forma parte de un informe o análisis que debe producirse de manera consistente a lo largo del tiempo, puede ser mejor mantenerlo en el cuaderno. Sin embargo, si desea una solución autocontenida o si el código no está directamente relacionado con la ciencia de datos, migrarlo a un paquete de Python podría ser más apropiado. Jeremy Howard y el equipo de Fast.AI tienen herramientas para crear paquetes a partir de cuadernos, aunque personalmente aún no las he utilizado.

De acuerdo. La siguiente pregunta es de nuestro miembro de la audiencia, Dido. ¿Alguna recomendación sobre cuándo mover el código de un cuaderno a un paquete de Python? Esa es una buena pregunta. Quiero decir, mi principal uso para los cuadernos es cuando tengo algún informe o algún análisis que no solo quiero poder producir hoy, sino también que quiero poder producir en un mes, dos meses a partir de ahora y saber que cuando intente producirlo nuevamente en dos meses, no se romperá de repente. Con este caso de uso en mente, típicamente no migraría lo que tengo en un cuaderno a un paquete de Python. Mi pensamiento habitual para crear un paquete de Python es cuando quiero algo más autocontenido que no sea parte de un análisis o algún modelo, mientras que el tipo de trabajo que hago en un cuaderno Jupyter está más relacionado con la puradata ciencia. Por lo tanto, típicamente no migraría un cuaderno a un script de Python. Sin embargo, Jeremy Howard y el equipo de Fast.AI tienen alguna forma de crear un paquete a partir de un cuaderno Jupyter. Son muy prolíficos en la cantidad de herramientas que lanzan. Por lo tanto, existe la posibilidad de hacerlo. Simplemente no es algo que haya utilizado aún en mi propio trabajo. De acuerdo. La siguiente pregunta es de Jordy VD. No sé si estás familiarizado con JavaScript, pero ¿conoces alguna alternativa en JavaScript para Jupyter notebook? No estoy familiarizado con JavaScript, me temo. Ah, bueno. Yo sí, pero no estoy tan familiarizado con Jupyter notebook. Así que no sé si voy a responder correctamente la pregunta de Jordy, pero Jordy, te recomendaría que si solo quieres probar rápidamente código, que es básicamente lo que entiendo que estás haciendo, ¿verdad? Con Jupyter notebook. Bueno, está bien, así que solo interrumpo eso, porque está en medio de una oración. Entonces algunas personas usan cuadernos solo para probar rápidamente código, pero me gustaría pensar que con la aparición de más y más herramientas de mantenimiento para cuadernos, pueden ser realmente como un entorno de desarrollo adecuado en lugar de algo para probar rápidamente algo. Uno de los preguntadores anteriores dijo que los estamos transformando en un entorno de desarrollo integrado y sí, me gustaría pensar que ese es el objetivo a largo plazo, pero no creo que hayamos llegado completamente allí todavía. De todos modos, continúa y termina tu respuesta. Sí, bueno, básicamente le diría a Jordi que mire Code Sandbox, eso es lo que siempre uso para estos escenarios, que es un sitio web muy bueno. Así que publicidad gratuita para Code Sandbox aquí, luego hay algunas personas, tres personas escribiendo sus preguntas ahora, así que veamos quién termina de escribir primero. Esto es más preguntas de las que esperaba. Alexander Schultz dice, gran charla, ahora tengo algunas cosas geniales para probar en mi propio trabajo, así que es un buen cumplido para ti. Gracias. Oh, y Jordi ya dio su opinión de que está usando Code Sandbox, y que son geniales. Genial. Otra pregunta de Soren, excelente forma de trabajar con el cuaderno Jupyter. ¿Es utilizable en el cuaderno de SageMaker? No estoy familiarizado con SageMaker, me temo. Si tienes tiempo, tal vez podrías describir brevemente qué es, si tienes alguna interfaz de línea de comandos disponible y si se guarda en el mismo formato que un cuaderno Jupyter, entonces supongo que podrías usarlo allí. Bueno, Soren, supongo que solo hay una cosa que puedes hacer. Si quieres saber más sobre SageMaker y la opción de trabajar con el cuaderno Jupyter allí, tendrás que ir a la sala de conferencias de Marco, que comenzará en unos pocos minutos. Entonces puedes profundizar hablando y discutiendo sobre el cuaderno Jupyter, Soren. Supongo que eso es todo el tiempo que tenemos ahora para preguntas y respuestas. Entonces como dije antes, Marco se dirigirá a la sala de conferencias en este momento. Si quieres unirte a Marco, simplemente encuentra el enlace debajo del reproductor en el sitio web, haz clic en la discusión... la sala de conferencias para Marco y puedes unirte a la conversación. Así que Marco, muchas gracias por tu charla y esta encantadora sesión de preguntas y respuestas. Muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2021React Advanced Conference 2021
27 min
(Easier) Interactive Data Visualization in React
Top Content
If you’re building a dashboard, analytics platform, or any web app where you need to give your users insight into their data, you need beautiful, custom, interactive data visualizations in your React app. But building visualizations hand with a low-level library like D3 can be a huge headache, involving lots of wheel-reinventing. In this talk, we’ll see how data viz development can get so much easier thanks to tools like Plot, a high-level dataviz library for quick & easy charting, and Observable, a reactive dataviz prototyping environment, both from the creator of D3. Through live coding examples we’ll explore how React refs let us delegate DOM manipulation for our data visualizations, and how Observable’s embedding functionality lets us easily repurpose community-built visualizations for our own data & use cases. By the end of this talk we’ll know how to get a beautiful, customized, interactive data visualization into our apps with a fraction of the time & effort!
6 min
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
Featured Article
When it comes to career, Charlie has one trick: to focus. But that doesn’t mean that you shouldn’t try different things — currently a senior front-end developer at Netlify, she is also a sought-after speaker, mentor, and a machine learning trailblazer of the JavaScript universe. "Experiment with things, but build expertise in a specific area," she advises.

What led you to software engineering?My background is in digital marketing, so I started my career as a project manager in advertising agencies. After a couple of years of doing that, I realized that I wasn't learning and growing as much as I wanted to. I was interested in learning more about building websites, so I quit my job and signed up for an intensive coding boot camp called General Assembly. I absolutely loved it and started my career in tech from there.
 What is the most impactful thing you ever did to boost your career?I think it might be public speaking. Going on stage to share knowledge about things I learned while building my side projects gave me the opportunity to meet a lot of people in the industry, learn a ton from watching other people's talks and, for lack of better words, build a personal brand.
 What would be your three tips for engineers to level up their career?Practice your communication skills. I can't stress enough how important it is to be able to explain things in a way anyone can understand, but also communicate in a way that's inclusive and creates an environment where team members feel safe and welcome to contribute ideas, ask questions, and give feedback. In addition, build some expertise in a specific area. I'm a huge fan of learning and experimenting with lots of technologies but as you grow in your career, there comes a time where you need to pick an area to focus on to build more profound knowledge. This could be in a specific language like JavaScript or Python or in a practice like accessibility or web performance. It doesn't mean you shouldn't keep in touch with anything else that's going on in the industry, but it means that you focus on an area you want to have more expertise in. If you could be the "go-to" person for something, what would you want it to be? 
 And lastly, be intentional about how you spend your time and effort. Saying yes to everything isn't always helpful if it doesn't serve your goals. No matter the job, there are always projects and tasks that will help you reach your goals and some that won't. If you can, try to focus on the tasks that will grow the skills you want to grow or help you get the next job you'd like to have.
 What are you working on right now?Recently I've taken a pretty big break from side projects, but the next one I'd like to work on is a prototype of a tool that would allow hands-free coding using gaze detection. 
 Do you have some rituals that keep you focused and goal-oriented?Usually, when I come up with a side project idea I'm really excited about, that excitement is enough to keep me motivated. That's why I tend to avoid spending time on things I'm not genuinely interested in. Otherwise, breaking down projects into smaller chunks allows me to fit them better in my schedule. I make sure to take enough breaks, so I maintain a certain level of energy and motivation to finish what I have in mind.
 You wrote a book called Practical Machine Learning in JavaScript. What got you so excited about the connection between JavaScript and ML?The release of TensorFlow.js opened up the world of ML to frontend devs, and this is what really got me excited. I had machine learning on my list of things I wanted to learn for a few years, but I didn't start looking into it before because I knew I'd have to learn another language as well, like Python, for example. As soon as I realized it was now available in JS, that removed a big barrier and made it a lot more approachable. Considering that you can use JavaScript to build lots of different applications, including augmented reality, virtual reality, and IoT, and combine them with machine learning as well as some fun web APIs felt super exciting to me.


Where do you see the fields going together in the future, near or far? I'd love to see more AI-powered web applications in the future, especially as machine learning models get smaller and more performant. However, it seems like the adoption of ML in JS is still rather low. Considering the amount of content we post online, there could be great opportunities to build tools that assist you in writing blog posts or that can automatically edit podcasts and videos. There are lots of tasks we do that feel cumbersome that could be made a bit easier with the help of machine learning.
 You are a frequent conference speaker. You have your own blog and even a newsletter. What made you start with content creation?I realized that I love learning new things because I love teaching. I think that if I kept what I know to myself, it would be pretty boring. If I'm excited about something, I want to share the knowledge I gained, and I'd like other people to feel the same excitement I feel. That's definitely what motivated me to start creating content.
 How has content affected your career?I don't track any metrics on my blog or likes and follows on Twitter, so I don't know what created different opportunities. Creating content to share something you built improves the chances of people stumbling upon it and learning more about you and what you like to do, but this is not something that's guaranteed. I think over time, I accumulated enough projects, blog posts, and conference talks that some conferences now invite me, so I don't always apply anymore. I sometimes get invited on podcasts and asked if I want to create video content and things like that. Having a backlog of content helps people better understand who you are and quickly decide if you're the right person for an opportunity.What pieces of your work are you most proud of?It is probably that I've managed to develop a mindset where I set myself hard challenges on my side project, and I'm not scared to fail and push the boundaries of what I think is possible. I don't prefer a particular project, it's more around the creative thinking I've developed over the years that I believe has become a big strength of mine.***Follow Charlie on Twitter
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
React Advanced Conference 2021React Advanced Conference 2021
21 min
Using MediaPipe to Create Cross Platform Machine Learning Applications with React
Top Content
This talk gives an introduction about MediaPipe which is an open source Machine Learning Solutions that allows running machine learning models on low-powered devices and helps integrate the models with mobile applications. It gives these creative professionals a lot of dynamic tools and utilizes Machine learning in a really easy way to create powerful and intuitive applications without having much / no knowledge of machine learning beforehand. So we can see how MediaPipe can be integrated with React. Giving easy access to include machine learning use cases to build web applications with React.
JSNation Live 2021JSNation Live 2021
39 min
TensorFlow.JS 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
ML conf EU 2020ML conf EU 2020
32 min
An Introduction to Transfer Learning in NLP and HuggingFace
In this talk I'll start introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.

Workshops on related topic

JSNation Live 2021JSNation Live 2021
139 min
Data Visualization for Web Developers
WorkshopFree
In this workshop, through hands-on projects we'll learn how to use Observable, a browser-based reactive coding platform, to rapidly build insightful, interactive visualizations in JavaScript. After completing this workshop, you'll have the basic tools & techniques you need to start using dataviz to better understand your code, your projects & your users, and make better data-driven decisions as a developer.
ML conf EU 2020ML conf EU 2020
160 min
Hands on with TensorFlow.js
Workshop
Come check out our workshop which will walk you through 3 common journeys when using TensorFlow.js. We will start with demonstrating how to use one of our pre-made models - super easy to use JS classes to get you working with ML fast. We will then look into how to retrain one of these models in minutes using in browser transfer learning via Teachable Machine and how that can be then used on your own custom website, and finally end with a hello world of writing your own model code from scratch to make a simple linear regression to predict fictional house prices based on their square footage.
JSNation Live 2021JSNation Live 2021
130 min
Painting with Data: Intro to d3.js
Workshop
D3.js is a powerful JavaScript library for building data visualizations, but anyone who has tried to use it quickly finds out that it goes deeper picking your favorite chart type. This workshop is designed to give you a hands-on introduction to the essential concepts and techniques for creating custom data visualizations with d3.js. By the end of this workshop you will have made an interactive and animated visualization on a realistic dataset that you can easily swap out with your own.
ML conf EU 2020ML conf EU 2020
112 min
The Hitchhiker's Guide to the Machine Learning Engineering Galaxy
Workshop
Are you a Software Engineer who got tasked to deploy a machine learning or deep learning model for the first time in your life? Are you wondering what steps to take and how AI-powered software is different from traditional software? Then it is the right workshop to attend.
The internet offers thousands of articles and free of charge courses, showing how it is easy to train and deploy a simple AI model. At the same time in reality it is difficult to integrate a real model into the current infrastructure, debug, test, deploy, and monitor it properly. In this workshop, I will guide you through this process sharing tips, tricks, and favorite open source tools that will make your life much easier. So, at the end of the workshop, you will know where to start your deployment journey, what tools to use, and what questions to ask.
ML conf EU 2020ML conf EU 2020
146 min
Introduction to Machine Learning on the Cloud
Workshop
This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.