DeepPavlov Agent: Marco de código abierto para IA conversacional multihabilidad

Rate this content
Bookmark

DeepPavlov Agent es un marco diseñado para facilitar el desarrollo de asistentes virtuales multi-habilidad escalables y listos para producción, sistemas de diálogo complejos y chatbots. Las características clave de DeepPavlov Agent incluyen (1) escalabilidad y confiabilidad en entornos de alta carga debido a la arquitectura de microservicios; (2) facilidad para agregar y orquestar habilidades conversacionales; (3) memoria compartida de estado de diálogo y anotaciones de NLP accesibles para todas las habilidades.


DeepPavlov DREAM es una plataforma de socialbot con un diseño modular con componentes principales como anotadores, habilidades y selectores que se ejecutan como servicios independientes. Estos componentes se configuran e implementan utilizando contenedores Docker. Permite a los desarrolladores centrarse en el desarrollo de aplicaciones en lugar de enfocarse en los detalles intrínsecos de la configuración de infraestructura manual a nivel bajo.

27 min
02 Jul, 2021

Video Summary and Transcription

El Agente Pavlov es un marco de código abierto para IA conversacional multihabilidad, que aborda la necesidad de habilidades específicas en diferentes dominios. La arquitectura de microservicios permite la escalabilidad y reutilización de habilidades. La Biblioteca Deep Pavlov permite la creación de tuberías de procesamiento de lenguaje natural (NLP) para diferentes habilidades. Deep Pavlov Dream sirve como un repositorio de habilidades y plantillas, mientras que el Agente de Implementación orquesta todos los componentes para una experiencia conversacional perfecta. DeepLove.AI ofrece más flexibilidad y personalización en comparación con el servicio LUIS de Microsoft.

Available in English

1. Introducción a Pavlov Agent

Short description:

Hola, mi nombre es Mikhail Burtsev, y soy fundador y líder del proyecto Pavlov en el Instituto de Física y Tecnología de Moscú. Hoy les hablaré sobre el Agente Pavlov, un marco de código abierto para IA conversacional multi-habilidad. La multi-habilidad es importante porque la experiencia del cliente abarca múltiples dominios y, para abordar cada dominio, se necesitan habilidades específicas. Los sistemas de conversación tradicionales utilizan un sistema de diálogo modular, donde las indicaciones del usuario se convierten a forma textual y se procesan mediante un módulo de comprensión del lenguaje natural. El Gestor de Diálogos actualiza el estado del diálogo y realiza acciones basadas en el estado actual. Los sistemas actuales se basan en redes neuronales, modelos de aprendizaje profundo y reglas para la gestión del diálogo y la generación del lenguaje natural. El ciclo de vida del asistente de IA comienza con un Producto Mínimo Viable, que incluye modelos pre-entrenados para NLU y scripts para el Gestor de Diálogos.

Hola, mi nombre es Mikhail Burtsev, y soy fundador y líder del proyecto Pavlov en el Instituto de Física y Tecnología de Moscú. Y hoy les hablaré sobre el Agente Pavlov, que es un marco de código abierto para IA conversacional multi-habilidad. Así que comencemos con una pregunta, ¿por qué es tan importante la multi-habilidad? Es importante porque la experiencia del cliente abarca múltiples dominios, como encuestas, promociones, campañas, servicio al cliente, soporte técnico y muchos otros. Y generalmente, para abordar cada dominio, se necesita una habilidad específica. Por eso necesitamos construir un asistente digital multi-habilidades, y necesitamos tener múltiples habilidades conversacionales en nuestro sistema. Y si observamos los asistentes de comercio electrónico, como los sistemas de diálogo complejos modernos. Por ejemplo, aquí tenemos el caso de Alimia Assist, que es un asistente en AliExpress. Entonces puedes ver aquí que es un sistema híbrido con muchas habilidades diferentes. Por ejemplo, tenemos este servicio de asistente con un motor de llenado de espacios, y tenemos servicio al cliente con un motor de gráficos de conocimiento, y tenemos servicio de chat con un motor de chat. Así que ves que es una combinación de algunas reglas comerciales, de escenarios escritos y con habilidades específicas que abordan diferentes necesidades del cliente.

Entonces, ¿cuál es la forma tradicional de construir sistemas de conversación en la actualidad? El enfoque más dominante es el llamado sistema de diálogo modular. ¿Cómo funciona? Tenemos al usuario, el usuario tiene alguna indicación para el sistema, y esta indicación se convierte a forma textual y se alimenta al módulo de comprensión del lenguaje natural, que realiza básicamente tres funciones. Detección de dominio, detección de intención y detección de entidades en la entrada del usuario. Y luego, después de este preprocesamiento, tenemos una descripción formal de la entrada del usuario, que también se llama marco semántico, donde tenemos la intención, aquí es solicitar una película, y tenemos las entidades. En esta solicitud, es comedia general y fin de semana. Y luego, toda esta información va al Gestor de Diálogos. Y la tarea del Gestor de Diálogos es primero actualizar el estado de diálogo actual, para que esté actualizado, para integrar esta nueva información en el historial previo del diálogo, y luego, con este estado de diálogo actualizado, realizar la acción necesaria en el lado del sistema.

Entonces, consta del estado de diálogo y de la política, o guion, que decide qué acción se debe seleccionar, dada la situación actual del diálogo. Y aquí en nuestro ejemplo tenemos la acción que es solicitar ubicación. Pero esta acción está en alguna representación interna del sistema. Y necesitamos convertir esta acción en la indicación de lenguaje natural. Y aquí tenemos el último módulo de nuestro sistema, que es la generación de lenguaje natural. Que crea la forma superficial de nuestra solicitud para los usuarios. Así que, con la acción de solicitar ubicación, tenemos como resultado en lenguaje natural `¿Dónde estás?`. Así es básicamente cómo se construyen los sistemas actuales. Y principalmente en esta parte de la entrevista, tenemos muchas redes neuronales, modelos de aprendizaje profundo, que se utilizan aquí, y en la parte del Gestor de Diálogos, tenemos algunas redes neuronales y muchas reglas y diálogos escritos. Y también para la generación de lenguaje natural, principalmente tenemos modelos de recuperación con algún llenado de espacios o plantillas.

Bien, entonces, ¿cuál es el ciclo de vida del asistente de IA? ¿Cómo construimos nuestro asistente digital, nuestros sistemas de diálogo, con esta tecnología modular? Por lo general, comenzamos con un Producto Mínimo Viable (MVP). Para NLU, tenemos algunas características y algunos modelos pre-entrenados para este dominio, y en el lado del Gestor de Diálogos, tenemos algunos scripts y es muy agradable y claro architecture, y entendemos cómo funciona.

2. Ventajas de la Descomposición de la Complejidad

Short description:

Queremos ir más allá del techo de complejidad de la tecnología actual mediante la descomposición de la complejidad entre el agente y las habilidades conversacionales. Nuestra arquitectura de microservicios permite la escalabilidad y la reutilización de habilidades existentes. Con la Biblioteca Deep Pavlov, podemos construir tuberías de procesamiento del lenguaje natural y combinar diferentes componentes en habilidades conversacionales para dominios y tareas específicas.

Cubre los aspectos más importantes de la interacción entre el sistema y el usuario. Y luego, desplegamos este MVP en producción y este sistema comienza a interactuar con los usuarios. Y aquí, entendemos que necesitamos aumentar la cobertura del sistema porque los usuarios hacen las mismas preguntas de manera diferente debido a la variabilidad del lenguaje, por lo que necesitamos agregar más características y hacer que nuestra comprensión del lenguaje natural sea más compleja.

Y también queremos cubrir más funciones, por lo que agregamos más scripts en el lado de nuestro gestor de diálogos. Y luego, continuamos con más características y más scripts, más características, más scripts, llegamos a la llamada etapa principal del asistente de IA, que en realidad es un desorden de características y scripts. Y esta es una solución que ya alcanza la complejidad máxima debido a todos estos componentes interdependientes. Así que ahora estás en una posición en la que no puedes hacer crecer tu producto más.

Y lo que queremos hacer con nuestro marco, con el Agente Deep Pavlov, es romper esta imagen. Queremos ir más allá de este techo de complejidad de la tecnología actual. Así que en nuestra visión, el ciclo de vida del sistema de IA comienza con el mismo MVP simple, claro y agradable. Y luego, lo que haces, lo pruebas y luego lo agregas al sistema ya desplegado como una de las habilidades conversacionales. Y luego, si quieres agregar más funcionalidad a tu sistema, simplemente creas una nueva habilidad conversacional y la agregas a tu agente. Esto te permite descomponer la complejidad entre el agente, que es básicamente un marco de orquestación de habilidades, y las habilidades conversacionales. Y esto te proporciona una arquitectura de microservicios muy agradable, que se puede escalar en un sistema de IA mayor mucho más complejo.

Y también te brinda muchas características interesantes. Por ejemplo, puedes tener habilidades predeterminadas. No necesitas desarrollarlas tú mismo. Solo necesitas conectar tus propias habilidades. Y es, como dije, una arquitectura muy escalable porque cada habilidad se despliega como un microservicio. Y también es muy práctico porque cuando creas un nuevo producto o quieres crear nuevas habilidades, que son similares a las que ya tienes, simplemente puedes reutilizar las antiguas y ampliarlas para la nueva función o integrarlas en tu producto. Y lo que también es importante en nuestra cultura de desarrollo global en este momento, es que generalmente las soluciones complejas se construyen con equipos distribuidos. Y esta arquitectura de orquestación de habilidades y estructura modular de tu agente conversacional te permite distribuir el mantenimiento y desarrollo de habilidades separadas a diferentes equipos separados. Esto hace que tu trabajo y coordinación entre habilidades sea mucho más organizado y eficiente. Así que esto es lo que queremos, esta es nuestra visión. Lo que queremos hacer es tener habilidades conversacionales y tener un nivel de orquestación conversacional. Entonces, lo que estamos haciendo ahora mismo para implementar esta visión. Así que hemos comenzado con la Biblioteca Deep Pavlov. La Biblioteca Deep Pavlov es una biblioteca de código abierto para construir tuberías de procesamiento del lenguaje natural y habilidades conversacionales para la IA conversacional. Entonces puedes tener modelos específicos de NLP como reconocimiento de entidades nombradas, resolución de correferencia, reconocimiento de intención y autodetección, respuesta a preguntas, política de diálogo, historial de diálogo, modelos de lenguaje, y así sucesivamente. Y luego, con nuestro marco, puedes combinar estos diferentes componentes en habilidades conversacionales para dominios y tareas específicas, como aquí.

3. Deep Pavlov Agent Framework and DreamSocialBot

Short description:

Tenemos habilidades orientadas a tareas, habilidades factorizadas y habilidades de conversación informal, todas orquestadas por el marco del agente Deep Pavlov. Un ejemplo de esta arquitectura es el DreamSocialBot, construido para la competencia Alexa Prize. La entrada del usuario es procesada por los anotadores, que extraen información y actualizan el estado del diálogo. Un selector de habilidades determina las habilidades más relevantes, y un subconjunto de estas habilidades se ejecuta para producir candidatos de respuesta. Los anotadores de candidatos garantizan la seguridad del usuario, y un selector de respuestas realiza la selección final. Este sistema multi-habilidad se ejecuta de forma asíncrona, con la biblioteca Deep Pavlov como base para crear tuberías de procesamiento del lenguaje natural.

Podemos tener habilidades orientadas a tareas, como reservas de restaurantes. Podemos tener habilidades factorizadas, que te permiten responder a una pregunta factorizada, y podemos tener habilidades de conversación informal. Y luego, tenemos el marco del agente Deep Pavlov, que orquesta estas habilidades.

Y como ejemplo de esta arquitectura, me gustaría presentarte la arquitectura de DreamSocialBot, que está construido con Deep Pavlov y el marco del agente Deep Pavlov para la competencia Alexa Prize, el Desafío Alexa Prize. Y nuestro equipo, como es un equipo universitario, participamos el año pasado en el Desafío Alexa y fuimos seleccionados como uno de los 10 equipos de entre 350 solicitudes para desarrollar una solución que se alojará dentro de Amazon Alexa y que puede ser invocada por Alexa Chat Commons. Así que usamos nuestro agente Deep Pavlov para construir este DreamSocialbot. Así que echemos un vistazo a cómo funciona.

Entonces, primero tenemos la entrada del usuario. Y esta entrada del usuario va a los llamados anotadores. Es la primera etapa del procesamiento. Los anotadores actuales también están implementados como tuberías de procesamiento del lenguaje natural de Deep Pavlov y se ejecutan como microservicios y se utilizan para extraer información de la entrada del usuario. Después de eso, esta entrada del usuario anotada pasa al estado del diálogo y el estado del diálogo es como una memoria compartida entre todos los microservicios como anotadores o habilidades, etc. Entonces, esta entrada del usuario anotada y el estado actual del diálogo son utilizados por un selector de habilidades para decidir qué habilidades son más relevantes para el estado actual del diálogo. Y aquí, para la competencia, hemos desarrollado alrededor de 25 habilidades diferentes y algunas para uso para el clima, películas, libros, como chat general, etc.

Y luego, como dije, solo se selecciona un subconjunto de estas habilidades y estas habilidades se ejecutan y producen candidatos de respuesta. Cada habilidad produce un candidato de respuesta y cierta confianza en su propia respuesta. Y todos estos candidatos van a los anotadores de candidatos. Necesitamos que estos anotadores se aseguren de que no haya candidatos que puedan ser perjudiciales para nuestros usuarios. Así que realizamos la detección de toxicidad, la detección de terminación del diálogo y el filtrado de la lista negra de los candidatos de respuesta. Después de eso, tenemos candidatos de respuesta anotados y realizamos la selección final. Así que tenemos un selector de respuestas que realiza la selección final de la salida final de nuestro sistema. Y esta respuesta también puede ser anotada posteriormente y presentada a los usuarios. Y como puedes ver, en realidad es un sistema multi-habilidad y todos los elementos de nuestra tubería se ejecutan de forma asíncrona. Por lo tanto, todos los anotadores y habilidades se ejecutan de forma asíncrona como microservicios con solo dos puntos de sincronización, que son el selector de habilidades y el selector de respuestas y nuestro estado de diálogo, como dije, sirve como una memoria compartida. Y lo que tenemos ahora mismo, lo que queremos construir, en realidad tenemos lo que podemos llamar un ecosistema de Deep Pavlov. Es un ecosistema de nuestros productos y en el lado izquierdo aquí, puedes ver nuestra biblioteca Deep Pavlov, que es una biblioteca para crear tuberías de procesamiento del lenguaje natural. Y también puedes incluir modelos de procesamiento del lenguaje natural de terceros, como Hugging Face Transformers o NVIDIA NIMU, como componentes de tus tuberías de procesamiento del lenguaje natural. Y luego, puedes implementar todas estas tuberías de procesamiento del lenguaje natural como microservicios en la nube. Por ejemplo, para tu asistente de IA, estos pueden ser anotadores o algunos componentes deNLP. Y luego tenemos lo que llamamos el sueño de Deep Pavlov.

4. Deep Pavlov Dream and Deployment Agent

Short description:

Queremos abrir nuestros conocimientos y ofrecerlos como una distribución predeterminada para agentes conversacionales. Puedes reutilizar nuestros conocimientos y agregar tus propias habilidades orientadas a tareas. El sueño de Deep Pavlov es un repositorio de diferentes habilidades y plantillas, que permite la integración de habilidades de terceros. El agente Pavlov orquesta todos los componentes para producir la experiencia conversacional final. Nuestro objetivo es crear un centro abierto para el intercambio de habilidades, facilitando y acelerando el desarrollo. Nuestra biblioteca DeepPowell integra modelos de aprendizaje automático en tuberías de procesamiento del lenguaje natural y resuelve problemas de habilidades conversacionales. Ofrecemos una solución única con nuestro Deployment Agent para la orquestación de múltiples habilidades.

¿Por qué llamamos a esto el sueño de Deep Pavlov? Porque lo que queremos hacer es abrir nuestros conocimientos, que hemos desarrollado para la competencia, y hacerlos de código abierto para proporcionar una distribución predeterminada para agentes conversacionales que pueda ser utilizada por otros. Entonces, no necesitas desarrollar tu propia habilidad de chit chat o habilidades básicas como el clima, entre otras. Para tu solución, simplemente puedes reutilizar nuestros conocimientos y luego agregar tus propias habilidades orientadas a tareas.

Como dije, el sueño de Deep Pavlov es un repositorio de diferentes habilidades o plantillas. Y también puedes utilizar habilidades de terceros aquí, porque nuestra architecture te permite integrar otras habilidades a través de una API. Así que puedes usar Rasa o habilidades de IA/ML en tu tubería como parte del sueño de Pavlov. Luego, ejecutas todas estas habilidades como microservicios. Y en el centro tenemos el agente Pavlov, que realiza la orquestación de todos estos componentes, anotadores y habilidades, para producir la experiencia conversacional final de tu asistente de IA.

Como dije, lo que queremos hacer es crear algo que se pueda ver como un sistema operativo de código abierto pero aquí no tenemos un sistema operativo, sino un sistema de conversación o diálogo porque tenemos algunas aplicaciones y estas aplicaciones son habilidades conversacionales y tenemos algunos servicios como anotadores y tenemos la user experience. Así que puedes agregar tus aplicaciones para mejorar la user experience. Y también queremos crear un centro abierto para el intercambio de habilidades para facilitar la vida de cada desarrollador de asistentes conversacionales complejos, porque al intercambiar algunas habilidades de propósito general se facilita mucho más el desarrollo de la solución y la prototipación de tus agentes conversacionales complejos.

Ahora, si observamos la pila de tecnologías de IA conversacional, en la parte inferior de esta pila tenemos plataformas de aprendizaje automático como PyTorch y TensorFlow. Luego tenemos frameworks de procesamiento del lenguaje natural (NLP) que integran modelos de aprendizaje automático en las tuberías de NLP y aquí tenemos SpaCy, Transformers y NVIDIA NIMR, e incluso Stanford NLP, y nuestra biblioteca DeepPowell pertenece a este nivel de frameworks de NLP. Pero no solo a este nivel, también forma parte del nivel de habilidades conversacionales porque puedes crear una tubería de NLP en DeepPowell que resuelve exactamente el problema de la habilidad conversacional.

En este nivel de habilidades conversacionales, tenemos Rasa, Pandora Bots o LMONT. Estos son frameworks para crear habilidades conversacionales separadas. Y luego, en el nivel más alto, en el nivel de orquestación de múltiples habilidades, creo que en el dominio de código abierto, ofrecemos una solución única en este momento. Es nuestro Deployment Agent, que es un marco para la orquestación de habilidades conversacionales. Con él, puedes implementar y gestionar tus habilidades y orquestar para proporcionar una experiencia de usuario muy agradable. Esta imagen muestra toda la línea de nuestro marco que estamos construyendo para crear nuestra solución de código abierto para la IA conversacional, una solución de código abierto de extremo a extremo para la IA conversacional. Así que gracias por tu atención. Eso es todo. Y estaré encantado de responder tus preguntas. Gracias. Hola, una vez más. Hola, gracias por unirte hoy y dar esta increíble charla.

5. Comparison with Microsoft LUIS

Short description:

DeepLove.AI es completamente de código abierto, lo que proporciona más flexibilidad en comparación con el servicio de comprensión del lenguaje (LUIS) de Microsoft. Si bien hay una curva de aprendizaje más pronunciada, nuestro marco permite una mayor personalización y control sobre los componentes.

Tenemos algunas preguntas de la audiencia. ¿Empezamos de inmediato? Sí. Muy bien. Bueno, la primera pregunta es en realidad de mi co-presentador, AJ, y le gustaría saber, ¿cómo comparas DeepLove AI con otros sistemas de IA conversacional, como los construidos con el servicio de comprensión del lenguaje de Microsoft, por ejemplo? Lo siento. Perdón, ¿puedes repetir la pregunta? ¿Cómo compararías DeepLove.AI con otros sistemas de IA conversacional, como los construidos con el servicio de comprensión del lenguaje de Microsoft, LUIS, por ejemplo? De acuerdo. La diferencia principal aquí es que nuestro proyecto es completamente de código abierto. Con Microsoft LUIS, no tienes tanta flexibilidad como con nuestro marco, y por supuesto, con esta flexibilidad, hay un costo para dominar todos los componentes. Por lo tanto, necesitas un mejor conocimiento de los componentes para construir algo similar a lo que puedes construir en LUIS, y así sucesivamente. Sí, por lo tanto, hay una curva de aprendizaje más pronunciada, pero eres más flexible. Sí. Sí, muy bien. La siguiente pregunta es de un miembro de la audiencia llamado Nick. Quiere saber cuáles serán los pasos para integrar DeepPath de un Agente como un chatbot para el servicio de soporte al cliente. También puede haber anotadores para la localización. Actualmente, DeepPath of an Agent se puede integrar a través de la API, por lo que necesitas simplemente como un servicio REST, puedes usarlo como un servicio REST. Y también tiene muchos componentes como anotadores y habilidades, y estas habilidades pueden usar algunos data de tus bases de datos internas. Y en este caso, también debes proporcionar tus propios conectores para enviar los data de tu database dentro de tus habilidades conversacionales. Y tenemos envoltorios para Telegram y para Amazon Alexa, pero si es para tu empresa y si no estás usando Telegram, por ejemplo, y estás usando tu propio widget de sitio web o chatbot, como una interfaz web construida por ti, entonces debes usar esta API REST, creo. De acuerdo. Siguiente pregunta. Los chatbots de IA generalmente dan respuestas graciosas/raras en conversaciones extendidas, incluso los basados en modelos de lenguaje. ¿Cuánto tiempo crees que tomará para que podamos esperar oraciones coherentes en conversaciones largas utilizando, por supuesto, deeplove.ai? Creo que aquí deberíamos hablar de dos tipos de habilidades conversacionales. En DeepPavlov, tienes una architecture de múltiples habilidades, donde diferentes habilidades pueden implementarse con diferentes tecnologías de fondo. Por lo general, si tienes algo como GPT-free o alguna pregunta y respuesta basada en modelos de lenguaje, tienes un control muy débil sobre lo que obtienes como respuesta. Pero, en otros casos, puedes usar IA/ML u otros enfoques, que te permiten tener plantillas más estrictamente definidas para tus respuestas. Y en este caso, controlas lo que dice tu bot. Tal vez no cubra una amplia gama de temas, pero luego en un dominio estrecho, tendrás respuestas muy sensatas. En Deep Pavlov, puedes integrar tanto enfoques basados en reglas como generación neuronal, y luego decidir en el estado actual del diálogo cuál es el más apropiado para tu usuario, tratando de combinar ambos enfoques. El primero es basado en reglas y guiones, donde controlas el flujo del diálogo, y por otro lado, es generación neuronal, donde puedes tener respuestas mucho más graciosas y mucho más variables, pero pueden perder coherencia después de cierto número de términos de conversación. De acuerdo, muchas gracias. Otra pregunta es de mi co-presentador Sergey. Como diriges un laboratorio de investigación, ¿qué opinas de OpenAI? ¿Ayuda a acelerar la investigación? Creo que juega un papel en ambos lados, acelerando la investigación y también generando expectativas en la investigación, porque comenzaron creando OpenAI Gym, y es un conjunto muy bueno de tareas para el aprendizaje por refuerzo, y muchas personas las utilizan, y es muy bueno. Pero luego lanzaron, o no lanzaron GPT-2, y comenzaron una discusión y promoción de sus resultados sin abrir la solución. Y esto parece un poco extraño, es una organización un poco extraña porque, por un lado, tiene objetivos de producir investigación abierta, pero por otro lado, tiene reglas muy estrictas para no publicar algo y usarlo para obtener ganancias. Por lo tanto, no está claro para la community cómo entender los objetivos de OpenAI en este momento. De acuerdo. Creo que eso es todo el tiempo que tenemos ahora para esta sesión de preguntas y respuestas, pero si las personas aún tienen preguntas o quieren profundizar en Deep Bath Love, entonces estarás en tu sala de oradores, ¿verdad? Así que las personas pueden unirse allí en Spatial.Chat y sí, ahora me gustaría agradecerte por tu tiempo e invitarte a ir a tu sala de oradores.

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

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

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.
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.