Parte 11. ¿Que son few shot learners? ¿One shot learners?En problemas de categorización en los modelos de aprendizaje, los “one-shot learners” tienen como objetivo aprender información sobre categorías de objetos de una, o solo unas pocas, muestras/imágenes durante el entrenamiento. En el paper usan el término “meta-learning” para demostrar la estructura del bucle interno / bucle externo del método general, y el término “in context-learning” para referirse al bucle interno del “meta-learning”. Por lo que los autores describen a “zero-shot”, “one-shot”, o “few-shot” dependiendo de cuántas demostraciones se brinden en el momento de la inferencia.2. Comente el modelo GPT-3 que utilizan, ¿Cómo es?El modelo de Pre-entrenamiento Generativo (GPT-3) utiliza modelado de lenguaje de probabilidad condicional con una arquitectura de red neuronal transformadora que se basa en mecanismos de auto atención (inspirados en mecanismos de atención de tareas de procesamiento de imágenes) en lugar de recurrencia o convolución. Según los autores este es un modelo de lenguaje autorregresivo de 175 mil millones de parámetros. 3. Comente alguna de las aplicaciones para la que lo utilizaronUtilizaron el modelo GPT-3 para evaluarlo en más de dos docenas de conjuntos de datos NLP, así como en varias tareas diseñadas para probar la adaptación rápida a tareas que probablemente no estén contenidas directamente en el conjunto de entrenamiento.Compararon el modelo GPT-3 con configuraciones de “one-shot” y “few-shot” con resultados de F1 en conjuntos de datos: CoQA DROP QuACSQuADv2 RACE-h RACE-m, LAMBADA y otros con datos limpios y sucios.Probaron el modelo en varias medidas GPT-3 Small (con 125M de parámetros), GPT-3 Medium (con 350M de parámetros), GPT-3 Large (con 760M de parámetros), así hasta llegar al “GPT-3” (con 175.0B de parámetros).
Precommit pipeline
ResumenEste documento muestra el significado de estrategías accionables en el desarrollo de software, se analizan los métodos actuales para la representación visual del progreso del software sobre un proyecto de software. Se propone una metodología de visualización dado el fenómeno de factor bus en un proyecto, se muestra la herramienta realizada y la travesía a través de su desarrollo con la incorporación de git hooks. Introducción Una unidad fundamental de trabajo en la programación es la contribución del código “commit” que un desarrollador hace a la base del código de algún proyecto, sea individual o colaborativo. El desarrollo y mantenimiento de software implica cambiar código para agregar nuevas funciones, resolver defectos o mejorar el rendimiento. Dichos cambios tienen lugar de muchas formas: agregando nuevos métodos, implementando diferentes implementaciones de programación como concurrencia y manejo de excepciones, actualizando funciones de algún API, etc. Los administradores, desarrolladores e investigadores a menudo están interesados en analizar dichos datos evolutivos para comprender las características del desarrollo y mantenimiento del software. Por ejemplo, un administrador podría estar interesado en saber “¿Cómo la elección de un lenguaje de programación afecte la calidad del software?”. Del mismo modo, un desarrollador podría preguntarse "Si uso muchas validaciones en mi código, ¿me ayuda a reducir errores?". Finalmente, los investigadores podrían tener curiosidad sobre “¿Cómo afecta la evolución de un API a la calidad del código?”, O “¿Cuáles son las características de los diferentes errores del mundo real, por ejemplo, errores de concurrencia y rendimiento?”. También los proyectos de desarrollo de software enfrentan muchos riesgos (como inflación de requisitos, mala programación, problemas técnicos, etc.) Subestimar esos riesgos puede poner en peligro el éxito del proyecto.Metodología propuestaFactor Bus Por definición se conoce como el número de desarrolladores clave que necesitarían ser incapacitados, es decir, atropellados por un autobús, para que un proyecto no pueda continuar. Pero tal vez ser atropellado por un bus sea una situación muy extrema, podríamos cambiarlo por “tomar vacaciones al mismo tiempo” para tener la misma idea.Este factor es un indicador de lo costoso que será reemplazar a personas específicas.Alcanzar un factor bus de cero es posible si la base de código es lo suficientemente pequeña como para que pueda caber fácilmente en la mente de una persona.En una situación ideal, todos en el equipo conocerán todas las partes del sistema para que la pérdida de cualquier persona tenga un impacto mínimo. En realidad, muchos proyectos dependen de uno o más “héroes” que son los únicos que entienden ciertas partes críticas del sistema. Cuando estos héroes se van (y se debe asumir que lo harán), el equipo debe estar preparado para recuperarte.Si se tiene un héroe en el equipo, lo mejor que se puede hacer es reasignar a esa persona a una parte diferente del proyecto. Esto permitirá que el reemplazo aumente conocimiento mientras el héroe aún está disponible para dar asistencia.El factor bus es una métrica rápida que resaltará los posibles problemas en el proyecto. Tener héroes en el equipo puede ser muy beneficioso, pero deben ser cuidados los que están a cargo de la administración del proyecto. El factor bus es una métrica que resaltará sus dependencias.Git hookUn git hook se puede usar para ejecutar uno o varios scripts cada vez que ocurre un evento en particular, como un “commit” o un “push” a su repositorio. Estos eventos generalmente se dividen en pasos y se puede conectar un script a cada uno de estos pasos. Los hooks pueden ser del lado del cliente, afectando su repositorio local o del lado del servidor, ejecutando scripts en el repositorio remoto.
IntroducciónGitHub es una plataforma popular para el almacenamiento de código fuente. Este hecho, junto con la API proporcionada por el sistema, contribuye a que GitHub sea ampliamente utilizado en la investigación de Ingeniería de Software. Existen actualmente herramientas que ayudan a la minería de repositorios como lo son GH Archive y GHTorrent. Además para el proyecto es importante la selección de herramientas de diagramación y el entorno de desarrollo en el que se puede elaborar.Compilado de base de datosGitHub  proporciona una API REST que proporciona a través de solicitudes HTTP datos de GitHub como objetos JSON. GH Archive \cite{archive} y GHTorrent \cite{Gousios_2013}  están diseñados para minería de repositorios a gran escala independiente del lenguaje, centrándose principalmente en metadatos de GitHub.   GH Archive  Es un proyecto creado por Ilya Grigorik para recopilar datos de GitHub, por lo que los usuarios pueden recuperar y utilizar fácilmente estos datos en su trabajo. El sistema recopila eventos de GitHub y los pone a disposición en archivos por hora que un cliente HTTP puede descargar. Aunque GitHub Archive no proporciona datos directos sobre repositorios y usuarios, esos datos pueden obtenerse a través de eventos Git.GHTorrentEs un proyecto creado y mantenido por Georgios Gousios. Proporciona un mirror off-line de los datos de GitHub, en dos formatos: datos estructurados y datos sin procesar sobre eventos. Los eventos se recopilan mediante la API de eventos de GitHub y se complementan con otras solicitudes a la API REST de GitHub para proporcionar una representación estructurada. GHTorrent proporciona tres formas de acceder a sus datos: volcados de MySQL o MongoDB, servicio web proporcionado por GHTorrrent al acceder a los últimos volcados de MySQL o MongoDB, o Google Big Query al acceder desde MySQL.  Toda esta información es relevante al elegir una fuente de datos para una investigación, y puede afectar su resultado. GHTorrent y GitHub Archive son apropiados cuando es importante recuperar datos históricos sobre proyectos de acuerdo a un estudio comparativo realizado por Mombach y Valente \cite{mombach_github_nodate}.Selección de herramientaActualmente existen herramientas al estilo de notebook que logran mostrar código a la hora de representar visualizaciones, son muy prácticos a la hora de probar y obtener resultados inmediatos sobre estadística de datos, análisis de información, etc. Python JupyterPython Jupyter \cite{kluyver_jupyter_2016}, que es una aplicación moderna que emplea un paradigma de programación alfabetizada. El objetivo de Jupyter es lograr una narrativa computacional combinando el lenguaje humano, el código en vivo y sus resultados en un solo documento narrativo.ObservableObservable \cite{observable} proporciona notebooks de JavaScript para comentarios instantáneos, donde es muy sencillo agregar interacción y animaciones. Los notebooks se pueden compartir de manera web,  supera las limitaciones de los documentos estáticos como archivos PDF al proporcionar la posibilidad de integrar contenido interactivo en documentos de texto. La facilidad de Observable es que permite la incorporación de frameworks como D3.js, Vega-Lite, en realidad cualquier biblioteca que exista para creación de diagramas.Para la representación de esta metodología se decide utilizar la herramienta de Observable ya que permite una representación visual e inmediata de los datos de forma Web. Se prefiere el uso del framework D3.js debido a todas las formas de representación visual que permite a la hora de modelar datos.