mi información de contacto
correo[email protected]
2024-10-07
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
compilación del corazón de la máquina
autor: omar khattab
editor: salsa de huevo, zenan
¿escribir un artículo? ése es sólo un pequeño paso.
durante la escuela de posgrado, muchas personas suelen sentirse confundidas acerca de cómo estructurar su propia investigación. ¿cómo deberíamos realizar investigaciones para marcar la diferencia en el ya saturado campo de la inteligencia artificial?
demasiadas personas creen que los proyectos a largo plazo, las publicaciones de código adecuadas y los puntos de referencia bien pensados no son lo suficientemente motivadores; a veces puede ser algo que se hace de manera rápida y culpable, y luego se vuelve a realizar una investigación "real".
recientemente, omar khattab, estudiante de doctorado en el grupo de pnl de la universidad de stanford, publicó una entrada en un blog en la que analiza las opiniones de los principales académicos de la ia sobre la realización de investigaciones impactantes.
veamos qué dijo:
el impacto de la investigación se presenta de muchas formas, y solo me centraré en medir el impacto de la investigación en la ia a través del trabajo de código abierto (por ejemplo, modelos, sistemas, marcos o puntos de referencia). debido a que parte de mi objetivo es refinar mis ideas, registrar sugerencias específicas y recopilar comentarios, haré la declaración más concisa. si tiene otras ideas, discútalas en el área de comentarios.
primero, aquí están los principios rectores:
concéntrese en los proyectos, no en los documentos.
puedes "cavar un hoyo" eligiendo un problema apropiado que tenga más espacio para el desarrollo.
piense dos pasos por delante y repita rápidamente.
haz público tu trabajo y promociona tus ideas.
encuentre formas de motivarse: a continuación se ofrecen consejos para hacer crecer su investigación de código abierto.
continúa invirtiendo en tu proyecto con papeles nuevos.
el quinto punto, “consejos para desarrollar investigaciones de código abierto”, merece un artículo propio más extenso. quizás escriba sobre eso en mi próxima publicación.
centrarse en proyectos
en lugar de un papel
esta es una pieza de pensamiento crucial en la que se basa todo lo demás.
los estudiantes principiantes pondrán gran énfasis en publicar sus primeros artículos. esto tiene sentido: así es como se aprende a realizar investigaciones, explorar direcciones iniciales y demostrar avances tempranos. pero esta es una etapa que eventualmente deberá abandonar: a largo plazo, sus logros y crecimiento dependerán menos de la cantidad de artículos y más de su impacto y el contexto de investigación general que transmita.
desafortunadamente, demasiados estudiantes de doctorado consideran que el comportamiento más potencialmente impactante es "desmotivador". esto me confundió hasta que me di cuenta de que lo que querían decir era que estas acciones podrían ralentizar su capacidad para publicar su próximo artículo. pero su capacidad para publicar su próximo artículo tan rápidamente es menos importante.
le sugiero que no piense en su trabajo como una serie de artículos aislados, sino que se pregunte: ¿cuáles son las visiones más amplias que va a liderar y cuáles son los subcampos o paradigmas dentro de ellas? ¿qué diferencia quieres hacer con tu trabajo? por lo tanto, publicará artículos individuales para explorar y establecer puntos de referencia, mientras que la visión más amplia debe ser algo que se repita intencionalmente. tiene que ser mucho más grande de lo que lleva el papel y ciertamente es un problema que aún no se ha resuelto del todo.
una forma de hacerlo es estructurar algunos artículos de investigación en torno a artefactos coherentes (como modelos, sistemas, marcos o puntos de referencia) que mantenga en el dominio de código abierto. esta estrategia es más costosa que "realizar algunos experimentos y liberar un repositorio rápido y fugaz", pero te obliga a encontrar un problema con impacto real y ayuda a garantizar que la nueva investigación que realizas sea realmente coherente y útil: no pones esfuerzo en introducir una pequeña característica o truco que sea inútil para los artefactos que ha estado desarrollando y manteniendo.
elija preguntas apropiadas con mayor margen de mejora
puede "cavar un hoyo"
no vale la pena invertir indefinidamente en todos los artículos que escribe. muchos artículos son artículos exploratorios únicos. para encontrar direcciones que puedan convertirse en proyectos más grandes, utilice los siguientes criterios.
en primer lugar, el problema debe ser de vanguardia. puedes definirlo de muchas maneras, pero enaiuna estrategia eficaz en el campo es encontrar un espacio problemático que esté "de moda" en 2 o 3 años pero que aún no se haya generalizado.
en segundo lugar, el problema debe tener un gran potencial para cavar agujeros, es decir, un impacto potencial en muchos problemas posteriores. básicamente, los resultados de estas preguntas podrían beneficiar o ser de interés para suficientes personas. los investigadores y las personas se preocupan por lo que les ayuda a alcanzar sus objetivos, por lo que su pregunta podría ser algo como ayudar a otros a construir cosas o alcanzar objetivos de investigación o producción. puede aplicar este filtro para estudiar fundamentos teóricos, infraestructura del sistema, nuevos puntos de referencia, nuevos modelos y muchas otras cosas.
en tercer lugar, hay que dejar el problema con un margen mayor. si le dices a la gente que su sistema puede ser 1,5 veces más rápido o un 5% más eficiente, probablemente no sea interesante. me parece que es necesario encontrar problemas en los que, al menos después de años de arduo trabajo, se tenga una esperanza distinta de cero de hacer algo más rápido, digamos 20 veces más rápido o un 30% más eficiente. por supuesto, no es necesario llegar hasta allí para tener éxito, y no debe esperar hasta llegar allí para publicar su primer artículo o publicar su primer trabajo.
no quiero ser demasiado abstracto, usemos colbert para ilustrar. a finales de 2019, la investigación sobre la aplicación de bert para la recuperación fue muy popular, pero estos métodos son muy caros. naturalmente, uno se pregunta: ¿podemos mejorar significativamente la eficiencia de este enfoque? ¿qué hace que ésta sea una buena pregunta?
en primer lugar, tiene mucho prefacio. podemos predecir correctamente que para 2021 (1,5 años después), muchos investigadores buscarán arquitecturas de recuperación eficientes basadas en bert. en segundo lugar, tiene mucho margen de desarrollo. los nuevos paradigmas de ml tienden a ser así porque la mayoría de estos esfuerzos inicialmente ignoran la eficiencia. de hecho, el enfoque original podía tardar 30 segundos en responder una consulta, pero ahora puede completar recuperaciones de mayor calidad en 30 milisegundos, lo que es 1000 veces más rápido. en tercer lugar, tiene un gran despliegue. la recuperación escalable es un buen problema de "base": todos necesitan construir algo sobre los recuperadores, pero pocos quieren construirlos.
piensa dos pasos por delante
e iterar rápidamente
ahora que tienes un buen problema, ¡no te apresures a elegir la fruta más fácil que tienes delante como enfoque! en algún momento, al menos mucha gente acabará considerando el enfoque "obvio".
en lugar de ello, piense al menos dos pasos por delante. identifique el camino que probablemente tomará la mayoría de las personas cuando este tema de actualidad finalmente se convierta en algo común. luego, identifique las limitaciones del camino en sí y trabaje para comprender y abordar esas limitaciones.
¿cómo se ve esto en la práctica? revisemos el caso colbert. la forma obvia de construir un recuperador eficiente usando bert es codificar documentos en vectores. curiosamente, a finales de 2019, solo un trabajo limitado de relaciones internacionales había logrado esto. por ejemplo, el trabajo más citado en esta categoría (dpr) no publicó su primera preimpresión hasta abril de 2020.
teniendo esto en cuenta, se podría pensar que lo correcto en 2019 es construir un excelente modelo ir de vector único a través de bert. por el contrario, pensar sólo dos pasos por delante plantea la pregunta: tarde o temprano todo el mundo construye un enfoque de un solo vector, entonces, ¿dónde se atasca fundamentalmente este enfoque de un solo vector? de hecho, este problema condujo a paradigmas de interacción posteriores y modelos ampliamente utilizados.
como otro ejemplo, podemos usar dspy. en febrero de 2022, a medida que las sugerencias se volvieron cada vez más poderosas, quedó claro que la gente quería usarlas para garantizar la calidad basada en la recuperación, en lugar de realizar ajustes como antes. para ello, naturalmente tenemos que establecer un método. yendo dos pasos más allá, nos preguntamos: ¿dónde se atasca ese enfoque? en última instancia, el enfoque "recuperar y luego generar" (o rag) es probablemente el enfoque más simple que involucra lm.
por las mismas razones por las que las personas están interesadas en él, obviamente estarán cada vez más interesadas en: (i) expresar combinaciones más complejas de módulos (ii) descubrir qué se debe hacer mediante indicaciones automáticas o ajustes del lm subyacente; supervisar u optimizar el complejo proceso resultante. esto es dspy.
la segunda mitad de esta regla es "iterar rápidamente". este fue quizás el primer consejo de investigación que me dio mi asesor matei zaharia (ganador del premio sloan y fundador de apache spark) durante la primera semana de mi doctorado: identificar un tema en el que puedas iterar rápidamente y obtener retroalimentación (como retrasar o verificar). puntuación) del problema, lo que puede mejorar enormemente tus posibilidades de resolver el rompecabezas. esto es especialmente importante si estás pensando dos pasos adelante, lo cual es bastante difícil e incierto.
haz público tu trabajo
deja que tus ideas penetren
en este punto, descubrió un buen problema y siguió iterando hasta que descubrió algo interesante y escribió un artículo revelador. no pases al siguiente artículo. en su lugar, concéntrese en difundir los resultados de su trabajo en el mundo y trate de tener interacciones reales con las personas, no solo sobre su publicación en papel, sino sobre el panorama general que está investigando activamente. o mejor aún, informe a la gente acerca de una útil herramienta de código abierto que está creando y manteniendo y que captura sus ideas clave.
un primer paso común es publicar una preimpresión de su artículo en arxiv y luego publicar una "publicación" anunciando la publicación de su artículo. al hacer esto, asegúrese de comenzar su publicación con un reclamo específico, sustancial y comprensible. el objetivo no es decirle a la gente que publicaste un artículo, que no tiene valor intrínseco. el objetivo es transmitir tus argumentos clave de una manera directa y atractiva. (sí, sé que es difícil, pero es necesario).
quizás lo más importante es que el proceso no termina con el primer "lanzamiento", sino que es sólo el comienzo. dado que ahora usted invierte en proyectos, no sólo en artículos, sus ideas y comunicación científica continuarán durante todo el año, mucho más allá de publicaciones en papel aisladas.
cuando ayudo a estudiantes de posgrado a twittear sobre su trabajo, no es raro que sus publicaciones iniciales no reciban la atención que esperaban. los estudiantes a menudo ven esto como una validación de su miedo a publicar su investigación y lo toman como otra señal de que deben pasar al siguiente trabajo. evidentemente, esta idea es incorrecta.
hay una gran cantidad de experiencias personales, experiencias de segunda mano y observaciones que demuestran que tiene mucho sentido perseverar en este asunto (lo cual, por cierto, no mucha gente hace). es decir, con raras excepciones, la tracción de una buena idea requiere que usted le diga a la gente cosas clave varias veces en diferentes contextos y que refine continuamente su idea y su forma de entregarla hasta que la comunidad pueda crecer con el tiempo, o hasta que la comunidad pueda crecer con el tiempo. el campo alcanza la etapa adecuada de desarrollo en la que estas ideas se entienden más fácilmente.
reunir emoción
consejos para publicar investigaciones de código abierto
hacer que la gente se entusiasme con su investigación es algo bueno, pero entregar sus ideas a aplicaciones posteriores relevantes mediante la publicación, la contribución y el desarrollo de herramientas de código abierto a menudo puede tener un mayor impacto.
no es fácil hacer esto: simplemente cargar los archivos de código junto con el archivo readme en github no es suficiente. un buen repositorio será el "hogar" de su proyecto, más importante que cualquier artículo que publique.
una buena investigación de código abierto requiere dos cualidades casi independientes. en primer lugar, debe ser una buena investigación, novedosa, oportuna, bien delimitada y precisa. en segundo lugar, debe tener una utilidad posterior clara y baja fricción.
esta es la parte más importante: la gente evitará repetidamente (y otros usarán repetidamente) su trabajo oss por todas las razones "incorrectas". por ejemplo, su investigación puede ser objetivamente "de última generación", pero con toda probabilidad la gente priorizará las alternativas con menos fricción. por otro lado, los estudiantes de posgrado a menudo no entienden por qué las personas usan su herramienta, por ejemplo, porque no aprovechan al máximo sus partes más creativas. esto no es algo a lo que valga la pena resistirse, sino algo que vale la pena comprender y mejorar.
en base a esto, me gustaría enumerar algunos hitos a los que se debe prestar atención cuando se trata de resultados de investigación de código abierto.
hito 0: hacer que el contenido publicado esté disponible
no tiene sentido publicar código que nadie pueda ejecutar. en su campo de investigación, estas personas quieren replicar sus resultados. tal vez vayan más allá de su trabajo y citen los resultados de su investigación. estas personas son más pacientes que otro tipo de usuarios. aún así, encontrará grandes diferencias en el impacto académico dependiendo de qué tan fácil sea parchear el código.
hito 1: hacer que el contenido publicado sea útil
además de las personas de tu nicho, debes asegurarte de que tu lanzamiento sea útil para una audiencia que realmente quiera utilizar el proyecto para crear otras cosas. en la investigación de la inteligencia artificial, este hito rara vez se produce de forma natural. debería dedicar mucho tiempo a pensar en los problemas que la gente intenta resolver (investigación, producción, etc.) y en qué pueden ayudar sus esfuerzos de ia. si puede hacer esto correctamente, tendrá muchos beneficios, desde el diseño del proyecto hasta la api expuesta y la documentación/ejemplos presentados.
hito 2: hacer que los lanzamientos sean comprensibles
esto es difícil para los investigadores de ia, pero debemos darnos cuenta de que una versión útil, donde todo está técnicamente disponible y es de alguna manera explicable, no significa que la mayoría de sus usuarios potenciales encontrarán esto. la versión es fácil de entender y suficiente para conservarlos. comprometidos en aprenderlo o probarlo.
el conocido estudioso de la ia, andrej karpathy, escribió un artículo sobre este tema: "construyes algo y luego necesitas construir rampas para llegar a él". ben clavie también ha escrito extensamente sobre esto y ha sido una parte importante en tomar el trabajo que hicimos en colbert y hacerlo más accesible.
hito 3: descubra por qué falló la alternativa obvia y tenga paciencia
empezamos hablando de pensar dos pasos por delante. en mi opinión, esto es crucial, pero también significa que la mayoría de las personas no entenderán por qué necesitan una solución a un problema que aún no pueden observar claramente. creo que parte de tu trabajo con el tiempo es construir un caso. reúna evidencia y explique de una manera fácil de entender por qué las alternativas obvias (piense paso a paso) fracasarán.
hito 4: comprender el tipo de usuarios y aprovecharlo para crecer
cuando comencé colbert y dspy, mi audiencia inicial eran investigadores e ingenieros profesionales de ml. con el tiempo, aprendí a dejar de lado eso y a comprender que puedes llegar a una audiencia más amplia, pero ellos quieren cosas diferentes. antes de hacer cualquier cosa, no bloquees directa o indirectamente diferentes categorías de usuarios potenciales. esta situación es mucho más común de lo que la gente piensa.
en segundo lugar, a la hora de buscar usuarios, debemos encontrar un equilibrio entre los dos tipos de usuarios. por un lado, los constructores expertos con casos de uso avanzados pueden exigirle que invierta mucho dinero, pero tienden a impulsar ciertos casos de uso en un sentido de investigación, lo que puede dar sus frutos. los constructores públicos, por otro lado, no suelen ser expertos en ml, pero a menudo construyen y comparten sus aprendizajes en público, representan una mayor proporción del crecimiento a gran escala y le harán pensar más en su hipótesis inicial. necesitas ambos.
hito 5: convertir el interés en una comunidad en crecimiento
el verdadero éxito del trabajo de oss radica en la presencia de una comunidad y su crecimiento continuo independientemente de sus esfuerzos. en términos generales, una buena comunidad debe ser orgánica, pero es necesario trabajar activamente para ayudarla a formarse, como dar la bienvenida a las contribuciones y debates, y buscar oportunidades para convertir el interés en contribuciones o algún tipo de foro (como discord o github).
hito 6: convertir el interés en proyectos downstream activos, colaborativos y modulares
lo más probable es que su proyecto oss en sus primeras etapas no resuelva todos los problemas de su visión original. un proyecto bien diseñado a menudo tendrá múltiples partes modulares que le permitirán iniciar colaboraciones de investigación (u otros esfuerzos) y permitir que los nuevos miembros del equipo no solo avancen en el proyecto, sino que también posean partes importantes del proyecto, haciéndolo más rápido o con mayor influencia. sus ideas mientras mejoran dramáticamente el proyecto. por ejemplo, dspy actualmente cuenta con equipos separados que lideran los esfuerzos de i+d en optimización justo a tiempo, abstracción de programación y aprendizaje reforzado. los componentes de colbert, como las interfaces de programación de aplicaciones externas, la infraestructura de recuperación subyacente y el modelado central, son impulsados principalmente por diferentes personas en diferentes proyectos.
ven, resume. la adopción de la investigación de código abierto requiere una buena investigación y buenos resultados de código abierto. es difícil lograr este equilibrio, pero una vez que lo logras, puede resultar muy gratificante. personalmente, me llevó mucho tiempo comprender e internalizar esto. esto fue gracias a los repetidos comentarios de mis supervisores doctorales, chris potts y matei zaharia, así como a los valiosos aportes de heather miller y jeremy howard.
el criterio para evaluar la investigación es el "incremento" en comparación con el conocimiento previo, pero antes de poder explotar significativamente el "incremento", el software en sí debe ser eficaz. para que el software sea efectivo, su documentación también debe ser efectiva: las personas no verán todas las formas posteriores en que se supone que deben usar el software a menos que usted se lo muestre. es decir, hasta que estas tareas puedan ser desarrolladas por una comunidad independiente.
dicho todo esto, la habilidad más importante en esta sección es "publicar", publicar de verdad, publicar con frecuencia y aprender de ello.
publicar nuevo artículo
continúe invirtiendo en sus propios proyectos
cuando lees la quinta regla, es natural preguntar: ¿dónde pasan tanto tiempo los estudiantes de posgrado en software de código abierto? ¿cuándo se podrá realizar una investigación real?
la respuesta práctica es que la mayor parte del tiempo dedicado al código abierto podría utilizarse para realizar investigaciones nuevas y apasionantes. los dos no están tan separados como parecen. ¿por qué dices eso?
en primer lugar, estar a la vanguardia de este tipo de trabajo de software de código abierto le permite identificar intuitivamente nuevos problemas desde el principio. comprenderá el problema de forma más instintiva que de otra manera. además, la comunidad que usted crea a menudo proporciona comentarios directos sobre sus propios prototipos de métodos y le brinda acceso a colaboradores talentosos que comprenden la importancia del problema. también obtendrá acceso a "canales de distribución" útiles para garantizar que cada artículo nuevo que publique en esta área llegue a su audiencia y fortalezca su plataforma existente.
por ejemplo, "colbert" no es sólo un artículo de principios de 2020. ahora tiene probablemente unos diez artículos relacionados de seguimiento, invirtiendo en capacitación mejorada, menor uso de memoria, infraestructura de recuperación más rápida, mejor adaptabilidad del dominio y mejor coincidencia con las tareas posteriores de pnl. asimismo, dspy no es un artículo, sino una colección de artículos sobre abstracción de programación, optimización de sugerencias y programas posteriores. muchos de estos artículos están escritos por varios autores excelentes y su trabajo ha tenido un gran impacto, en parte al crear una gran audiencia a través de canales de software de código abierto.
por lo tanto, una buena herramienta de código abierto puede crear trabajos modulares que nuevos investigadores y contribuyentes puedan explorar, poseer y desarrollar.
texto original de referencia: https://github.com/okhat/blog/blob/main/2024.09.impact.md