Un réseau de neurone sans les données d'entraînement ni les soft, c'est comme un binaire
Bof, est-ce que ça ne serait pas plutôt un jeu avec le moteur de jeu distribué sous GPL et les données distribuées dans un format exploitable (png, jpg, etc) mais pas dans le format natif (svg...)? Ou est-ce que toute analogie est incomplète et qu'il ne faut pas raisonner comme ça?
J'ai l'impression que l'application de la définition d'un logiciel libre suppose que tu doives disposer de toutes les informations nécessaires pour recréer l'exécutable sur ta machine, donc techniquement, le code source du réseau et les poids. Les poids ont été déterminés à partir d'une procédure d'entrainement, qui est quelque chose qui s'est déroulée en amont, qui a nécessité des données et d'autres logiciels, mais qui ne sont pas nécessaire à l'exécution du logiciel.
D'une manière générale, la GPL n'est pas transitive quand on parle de données. Tu peux par exemple créer des images avec Photoshop et d'inclure les png dans un jeu libre, ça ne contrevient pas à la GPL. Tu peux même ne rien dire sur la manière dont les png ont été générés, tu n'as pas à fournir ni le nom, ni les sources du logiciel que tu as utilisé.
Du coup, pour les poids d'un réseau de neurones, le respect de la GPL ne nécessite probablement pas d'expliquer d'où ils sortent: quel algorithme, quelles données d'entrainement, quelle procédure d'entrainement... Tout ça ne semble pas faire partie des informations requises par la GPL, parce qu'on parle de données d'entrée du programme, et pas du programme en lui-même.
Bien sûr, un tel réseau de neurones, distribué sous licence libre avec les poids mais sans information sur la procédure d'entrainement, ne serait pas transparent. Mais transparent et libre, ça n'est pas la même chose: tu peux être transparent et non-libre (par exemple si tu distribues les sources sous une licence qui ne permet pas la redistribution des versions modifiées), et tu peux être libre et non-transparent, par exemple des trucs dans l'esprit de
double expexpx(double x) { 11956.81*x-22295.44; } // This does the job
dans ton code (c'est l'extension linéaire de la fonction autour de x=2, mais si tu ne le sais pas tu ne peux pas deviner d'où viennent les coefficients).
Demander les données d'entrainement et l'algo sous licence libre, en prétendant qu'autrement c'est du faux libre, c'est aller plus loin que la définition du libre. On a le droit, bien sûr, de dire que les définitions actuelles du libre ne sont plus adaptées et qu'il faudrait une GPLv4 par exemple (y compris pour essayer de définir une licence pour ce qui sort des IA entrainées par des données libres), mais ça n'est pas la même chose.
Je me suis toujours méfié des discussions sur l'"esprit du libre". L'esprit du libre, c'est d'avoir un bugtracker, c'est d'avoir une communauté ouverte, c'est seulement le copyleft, c'est d'accepter les pull request... Rien dans le libre n'impose une quelconque "pureté", et cette course à la pureté finit toujours mal, parce qu'on trouve toujours des trucs qui ne sont pas assez purs (un logo ou une marque déposés, l'autorisation de plug-ins propriétaires, des blobs binaires dans les drivers...). Je n'ai rien contre un club des purs qui s'entre-écharpent pour savoir qui est le plus à même de représenter l'esprit de l'essence du libre, mais personne n'a la légitimité de prétendre qu'un truc qui respecte les quatre libertés et/ou une licence considérée comme libre n'est "pas libre".
[^] # Re: IA = code + données
Posté par arnaudus . En réponse à la dépêche Une intelligence artificielle libre est-elle possible ?. Évalué à 5. Dernière modification le 27 février 2025 à 12:21.
Bof, est-ce que ça ne serait pas plutôt un jeu avec le moteur de jeu distribué sous GPL et les données distribuées dans un format exploitable (png, jpg, etc) mais pas dans le format natif (svg...)? Ou est-ce que toute analogie est incomplète et qu'il ne faut pas raisonner comme ça?
J'ai l'impression que l'application de la définition d'un logiciel libre suppose que tu doives disposer de toutes les informations nécessaires pour recréer l'exécutable sur ta machine, donc techniquement, le code source du réseau et les poids. Les poids ont été déterminés à partir d'une procédure d'entrainement, qui est quelque chose qui s'est déroulée en amont, qui a nécessité des données et d'autres logiciels, mais qui ne sont pas nécessaire à l'exécution du logiciel.
D'une manière générale, la GPL n'est pas transitive quand on parle de données. Tu peux par exemple créer des images avec Photoshop et d'inclure les png dans un jeu libre, ça ne contrevient pas à la GPL. Tu peux même ne rien dire sur la manière dont les png ont été générés, tu n'as pas à fournir ni le nom, ni les sources du logiciel que tu as utilisé.
Du coup, pour les poids d'un réseau de neurones, le respect de la GPL ne nécessite probablement pas d'expliquer d'où ils sortent: quel algorithme, quelles données d'entrainement, quelle procédure d'entrainement... Tout ça ne semble pas faire partie des informations requises par la GPL, parce qu'on parle de données d'entrée du programme, et pas du programme en lui-même.
Bien sûr, un tel réseau de neurones, distribué sous licence libre avec les poids mais sans information sur la procédure d'entrainement, ne serait pas transparent. Mais transparent et libre, ça n'est pas la même chose: tu peux être transparent et non-libre (par exemple si tu distribues les sources sous une licence qui ne permet pas la redistribution des versions modifiées), et tu peux être libre et non-transparent, par exemple des trucs dans l'esprit de
double expexpx(double x) { 11956.81*x-22295.44; } // This does the jobdans ton code (c'est l'extension linéaire de la fonction autour de x=2, mais si tu ne le sais pas tu ne peux pas deviner d'où viennent les coefficients).
Demander les données d'entrainement et l'algo sous licence libre, en prétendant qu'autrement c'est du faux libre, c'est aller plus loin que la définition du libre. On a le droit, bien sûr, de dire que les définitions actuelles du libre ne sont plus adaptées et qu'il faudrait une GPLv4 par exemple (y compris pour essayer de définir une licence pour ce qui sort des IA entrainées par des données libres), mais ça n'est pas la même chose.
Je me suis toujours méfié des discussions sur l'"esprit du libre". L'esprit du libre, c'est d'avoir un bugtracker, c'est d'avoir une communauté ouverte, c'est seulement le copyleft, c'est d'accepter les pull request... Rien dans le libre n'impose une quelconque "pureté", et cette course à la pureté finit toujours mal, parce qu'on trouve toujours des trucs qui ne sont pas assez purs (un logo ou une marque déposés, l'autorisation de plug-ins propriétaires, des blobs binaires dans les drivers...). Je n'ai rien contre un club des purs qui s'entre-écharpent pour savoir qui est le plus à même de représenter l'esprit de l'essence du libre, mais personne n'a la légitimité de prétendre qu'un truc qui respecte les quatre libertés et/ou une licence considérée comme libre n'est "pas libre".