En el ámbito de los LLM, “código abierto” se usa como término para referirse a “pesos descargables”.
(web.archive.org)- LLaMA2 tiene restricciones sobre el uso comercial y el uso de las salidas del modelo, por lo que no se ajusta a la definición tradicional de código abierto; aun así, en el ámbito de los modelos de IA hace falta que el propio concepto de código abierto vuelva a evolucionar
- Al momento de su lanzamiento, existían restricciones que chocan con el espíritu del OSS, como la prohibición de uso comercial para servicios con más de 700M de MAU y la prohibición de usar las salidas del modelo para entrenar otros LLM
- Así como en la historia del software el significado pasó de "free software" a "open source" y luego a "source available", en IA "open source" se usa comúnmente con el sentido de pesos descargables
- El nivel de apertura de los modelos se clasifica en Open models, Open weights, Restricted weights y Contaminated weights; LLaMA2 corresponde a Restricted weights
- Un código abierto completo, reentrenable desde cero, es poco realista por un problema de costos, y que Meta haya publicado cómputo por alrededor de $2M tiene un efecto netamente positivo para el avance del campo
LLaMA2 y la controversia por el término "código abierto"
- Cuando se publicó LLaMA2, varias personas de la comunidad OSS expresaron su malestar por el uso incorrecto del término "open source" para el modelo
- El modelo es en general abierto, pero tiene restricciones claras
- Los negocios con más de 700M de MAU a la fecha de lanzamiento no pueden usar el modelo comercialmente
- Las salidas del modelo no pueden usarse para entrenar otros modelos de lenguaje grandes
- Estas restricciones no encajan bien con el espíritu del código abierto (OSS ethos) y no puede llamarse código abierto en el sentido tradicional
- Sin embargo, la postura es que eso no importa, y que en la era de los modelos de IA el término "open source" debe volver a evolucionar
From Free to Open — de "libre" a "abierto"
- Desde la "Open Letter to Hobbyists" de 1976, siempre existió tensión entre los intereses comerciales y las restricciones de las empresas de software, y la curiosidad de los hackers que buscaban sortearlas
- El movimiento de "free software" comenzó en el MIT AI Lab de los años 70 junto con Richard Stallman, y desembocó en el proyecto GNU en 1983
- Nació la licencia GPL de "copyleft", adoptada por Red Hat, MySQL, Git y Ubuntu
- El término "open source" apareció en 1998 gracias a Christine Peterson, del MIT
- En la "Freeware Summit", "free software" fue descartado oficialmente y reemplazado por "open source software"
- Luego, las comunidades de "free" y "open source" se separaron por diferencias en la interpretación del significado
- El free software definido por la Free Software Foundation es un subconjunto del open source, y usa licencias muy permisivas como GPL y Apache
- En la última década, la tensión entre empresas comerciales de código abierto e hiperescaladores cloud provocó otra división
- Elastic y MongoDB migraron a SSPL (Server-Side Public License), que permite el uso comercial siempre que no se ofrezca una versión alojada
- El objetivo era impedir que AWS rehosteara el producto como servicio cloud y lo monetizara
- La SSPL vulnera los ideales del OSS, y la OSI no la reconoce como licencia de código abierto
- Aun así, muchos desarrolladores siguen llamando a MongoDB código abierto
- "open source" está perdiendo gradualmente su implicación de libertad (freedom) y, en la percepción de los desarrolladores, se está convirtiendo en casi sinónimo de "source available"
From Source to Weights — de "código fuente" a "pesos"
- Con el auge de open models como Dolly, MPT y LLaMA, se produjo una división similar en la comunidad
- Para la mayoría de los ingenieros de IA, hoy "open source" no significa ni más ni menos que pesos descargables (downloadable weights)
- Heather Meeker propuso una definición de "open weights", pero todavía no hay consenso en la comunidad
- El punto central es si un modelo puede llamarse código abierto solo por tener open weights
- En una analogía con el software, sería como publicar solo el binario sin el código fuente necesario para recompilar desde cero
- Para que sea verdaderamente de código abierto y reentrenable desde cero, habría que publicar todo: el código de entrenamiento, el dataset de preentrenamiento, los datos de preferencias para fine-tuning, ejemplos de RLHF, etc.
- El problema es el costo de entrenamiento; incluso si todo se publicara, para la mayoría de los desarrolladores y empresas entrenar desde cero sería económicamente imposible
- Al final, se prefiere incluso solo el acceso a los pesos finales
Clasificación en 4 niveles de apertura de modelos
- Open models: como RedPajama y MPT-7B, ofrecen open weights bajo licencia Apache 2.0 que pueden usarse comercialmente
- El dataset también es de código abierto, por lo que pueden reentrenarse desde cero
- Open weights: StableLM, entrenado por StabilityAI, entra en esta categoría; los pesos se publican bajo Apache 2.0, pero el dataset de entrenamiento no es público
- Según el README, fue preentrenado con un nuevo dataset experimental construido sobre The Pile, de aproximadamente 1.5T tokens, unas 3 veces más grande
- Restricted weights: LLaMA2 entra en esta categoría; el dataset de preentrenamiento no es público y, aunque se dice que los pesos pueden usarse comercialmente, existen las restricciones específicas mencionadas antes
- Contaminated weights: Dolly 1.0 y LLaMA1 entran en esta categoría; los pesos se publican, pero el dataset de entrenamiento no permite uso comercial, por lo que técnicamente son abiertos, pero en la práctica no se pueden usar
Cierre — la dirección de la apertura
- Por un tiempo, open source y open weights se usarán indistintamente, y la postura es que eso está bien
- Lo importante es que este trabajo se está realizando cada vez de forma más abierta (as openly as possible)
- Es natural sentirse decepcionado por la licencia de LLaMA2, pero que Meta haya puesto en un repositorio de GitHub alrededor de $2M en FLOPS tiene un efecto netamente positivo (net positive) para el progreso de este campo
1 comentarios
Comentarios en Hacker News
Es raro que justo arriba del artículo pongan a LLaMA en la categoría de pesos restringidos y luego digan que, en adelante, código abierto y pesos abiertos se usarán como si fueran lo mismo.
Incluso según la definición que propone el autor, LLaMA 2.0 no es open source, y tampoco debería llamarse así.
Si en el campo de los LLM open source significa “puedes descargar los pesos” y no importan las restricciones de uso, entonces no se trata de una evolución del término adaptada a un nuevo contexto, sino más bien de abaratar el significado de Open Source.
LLaMA ni siquiera es de pesos abiertos; como mucho, es un paquete cerrado de pesos propietarios comparable al software de código fuente visible.
Que Facebook llame open source a LLaMA es engañoso, y no deberíamos seguir esa narrativa.
Que pueda existir copyright sobre los pesos es un debate aparte, y personalmente creo que no.
Pero como la mayoría de la gente no lo sabe bien, van a seguir llamándolo “open source”, y la idea era que eso va a ser difícil de corregir.
Más que limitarnos a decir “esto no es open source”, necesitamos crear una mejor terminología.
Además, aunque el uso de los pesos esté restringido, la escala de cómputo revelada públicamente es enorme. La proporción entre tokens de entrenamiento y parámetros es de 285:1, y la gráfica de pérdida muestra que el modelo todavía no está saturado.
Eso es información valiosa para otros equipos que quieran entrenar su propio modelo.
LLaMA1 era muy restrictivo, pero la composición de datos publicada en el paper dio origen a RedPajama, y eso se usó para entrenar MPT.
Aunque no encaje en las etiquetas tradicionales, todavía hay mucho valor que puede fluir hacia el open source a partir de este tipo de trabajo.
No sabía que la licencia de llama prohíbe usar sus salidas para entrenar otros modelos.
Eso es básicamente una restricción fatal. En adelante, los datos sintéticos van a ser el dato de entrenamiento más importante, así que un modelo que impide usar datos sintéticos para entrenar nuevos modelos es un modelo gravemente dañado.
que está bien entrenar modelos con datos arbitrarios de internet sin permiso ni licencia solo porque son accesibles, pero que no está bien entrenar otros modelos con nuestro modelo.
La base legal de estos modelos es que entrenar con material protegido por copyright constituye fair use.
Si no es así, ¿Facebook quiere argumentar que incluir material con copyright en un dataset sin importar la voluntad del autor no es fair use? Si ese es el caso, son malas noticias para LLaMA.
La postura de “necesitas permiso para entrenar con esto” es una posición legal interesante, venga de la empresa de IA que venga.
Básicamente: “Nosotros sí podemos entrenar con buena parte de internet sin permiso, pero ni sueñes con entrenar con las salidas de nuestro modelo sin nuestro permiso”.
OpenAI también pone restricciones parecidas.
No puedes entrenar otro modelo con las salidas de un modelo y esperar que eso no termine en puro disparate. A eso se le llama colapso del modelo: https://arxiv.org/abs/2305.17493v2
Además, la licencia de Llama 2 sí permite que los usuarios entrenen modelos derivados. Lo que de verdad le importa a la gente es esta parte: https://github.com/facebookresearch/llama/blob/main/LICENSE
Esto no es un problema nuevo. El concepto estricto de Open Source definido para software nunca ha encajado exactamente en cosas que no son software.
Para eso existen las licencias Creative Commons. Distribuir una imagen fotográfica con GPL2, desde el principio, no tiene mucho sentido.
En los medios nuevos siempre hace falta redefinir.
La GPL define el código fuente como la forma preferida para hacer modificaciones, e incluye también los scripts necesarios para producir ejecutables a partir del código fuente.
En este caso, los pesos se parecen más al código ejecutable optimizado que sale del flujo de procesamiento, y el “código fuente” serían los datos de entrenamiento y el código y procedimiento que los convierten en un modelo.
En LLM muy grandes casi nadie podría aprovechar eso, pero en modelos académicos pequeños sí tiene sentido, porque los investigadores pueden construir sobre el trabajo de otros.
En un modelo de lenguaje, el código fuente en realidad se parece más al código usado para entrenar ese modelo específico, y el modelo en sí, aunque no sea lenguaje de máquina, se parece más a un binario compilado.
Por eso, para que un modelo sea realmente open source, creo que tendría que publicarse el software usado para generarlo, de modo que yo pueda modificarlo, entrenarlo con mis propios datos y usarlo.
Aún no se ha determinado en los tribunales si los pesos están sujetos a derechos de autor, y dependiendo del resultado, varias licencias y restricciones podrían volverse irrelevantes
“Artistas, el modelo solo aprende como un humano, así que no puede infringir sus derechos de autor. Si por casualidad imprimió parte de un libro, entonces solo fue un plagio accidental. Todos hacemos eso, ¡jaja! Los abogados nos recuerdan que en EE. UU. el plagio no es ilegal.”
“Ingenieros, la salida de nuestro modelo sí tiene derechos de autor, así que si entrenan su propio modelo con ella, nos pertenece.”
No entiendo cómo ambas cosas pueden ser ciertas al mismo tiempo
Como mucho, es solo una cláusula contractual vinculante para ciertos usuarios, y después parece que quienes usen ese modelo mejorado no tendrían problema
Pero cuesta imaginar que un mundo así realmente sea posible
Estaría bien ver un resumen de por qué los pesos podrían no estar sujetos a derechos de autor, o referencias que respalden esa postura
Hay que recordar que lo que sí y no está sujeto a derechos de autor puede cambiar
La GPL quedó validada en el caso FSF contra Cisco (2008), pero las licencias más restrictivas todavía no han sido puestas a prueba
El problema es que ya existen modelos grandes como MPT-30b y Falcon-40b que sí adoptan licencias realmente open source
Se agradece poder acceder a los pesos de Llama2, pero se siente injusto que Llama2 se lleve el mérito de ser “open source” cuando ya hay modelos competidores que sí lo son en el sentido tradicional de la OSI
La diferencia práctica entre las licencias es lo bastante pequeña como para que la mayoría, incluyéndome, probablemente elija Llama2 porque la calidad del modelo es mejor
Pero ese incentivo podría terminar atrapándonos en incómodas licencias semiabiertas
Ya existe el término source available, así que no entiendo por qué tendría que evolucionar el término “open source”
En este caso bastaría con decir “pesos disponibles bajo una licencia con pocas restricciones”
El diagrama de este artículo está muy mal porque muestra solo a la GPL como software libre, y hace parecer que MIT/Apache son open source pero no software libre
A la FSF no le gusta el término “open source”, pero incluso ellos dicen que “casi todo el software open source es software libre”
En particular, las licencias MIT, Apache y LGPL son claramente licencias de software libre. Si no lo fueran, Debian y las distribuciones aprobadas por la FSF tendrían muchísimo menos software para elegir
Lo que el diagrama probablemente intentaba distinguir era copyleft frente a software libre u open source
Si se ordena desde la perspectiva del grado de permisividad, la relación de subconjunto también debería ir al revés. La GPL es mucho más permisiva que la SSPL y similares, pero menos permisiva que MIT/Apache
La diferencia no es técnica, sino política
Esta parte del artículo también resulta bastante engañosa: “el software libre según lo define la Free Software Foundation es solo un subconjunto del software open source y usa licencias muy permisivas como GPL y Apache”
En teoría, el diagrama debería incluir otra categoría que esté fuera de “Restricted Weights” pero sea más estrecha que el conjunto completo de “Completely Closed”
Por ejemplo, pesos y modelos de caja negra, que pueden usarse gratis pero que en la práctica no se pueden inspeccionar ni trasladar
Eso correspondería a la categoría hermana del software privativo que es “gratis para usar”
La IA que se puede usar gratis pero se entrega como un bloque binario encajaría ahí
O también un módulo de Python que llama al motor de inferencia y a los pesos como binarios precompilados, pero sin código fuente
El equivalente tradicional actual en el mundo del software son los drivers de Linux de terceros que no son open source. Son gratis, pero no abiertos
En el mundo de la IA todavía no se ve mucho esto. Quienes publican pesos suelen hacerlo con fines de investigación, así que muchas veces también necesitan que la inferencia sea open source; y quienes tienen modelos cerrados quieren ganar dinero, así que tampoco tienen motivo para publicar la inferencia y les basta con cobrar por la API, como “OpenAI”
El título fue editado. El título real es “LLaMA2 isn't "Open Source" - and why it doesn't matter”
Lo cambiaron de una forma que altera bastante el tono del título real, y me hace pensar que el autor y quien publicó podrían tener visiones distintas sobre el significado de open source
Open Source lleva bastante tiempo asentado en la cultura técnica, así que apartarse de eso siempre ha sido motivo de burla
Últimamente parece que la comunidad se ha vuelto más tolerante con este tipo de licencias “abiertas”
La mayoría de las críticas contra proyectos que no cumplen los criterios de FOSS suelen ser exageradas, pero no me gustaría que nos deslizáramos demasiado rápido hacia la dirección de “open”
También hay otro artículo sobre LLaMa2: https://opensourceconnections.com/blog/2023/07/19/is-llama-2...