Tous les articles par Philippe Gauron

Réunion du 18 avril 2018

 

Prochainement

Pour rappel, une visite de l’installation ThomX (IgleX) se déroulera demain jeudi 19 à 10h, avec rendez-vous à l’entrée du LAL.

Rédaction scientifique collaborative

Sharelatex est une interface web collaborative pour éditer du LaTeX. Une instance sharelatex est proposée par Mathrice et accessible avec un certificat CNRS.

Dask : « Parallel Python with task scheduling »

C’est un Spark en plus léger, Python-only et moins ambitieux, idéal pour des développeur python habitués aux « arrays » de numpy et aux « dataframes » de panda, avec une aide à la parallélisation (structuration des données, création de tâches, etc.).

3 éléments de documentations

Bibliothèque de FITS en Scala

Julien a complété cette bibliothèque avec une interface en Python et R.

« Posit number » et arrondis

L’implémentation de ces posit n’est pas si indépendant de l’architecture d’après Hadrien. En effet, leur encodage de taille variable est économe en place, mais coûteux en performances de calcul, car il nécessite des scans de bits non parallélisables et dont les performances sont très variables selon l’architecture cible.

Expressions rationnelles (regular expression)

Antoine présente l’outil Regxr : « A minimal, beautiful, lightweight MacOS desktop application to check for regular expression pattern matches » (lien disparu)

Voir également txt2regex qui permet de construire son expression de manière interactive :

$> git clone git@github.com:aureliojargas/txt2regex.git

Très pratique en interactif, et dans des programmes qui durent ? Le problème est de gérer la diversité des inputs: en interactif, on voit quand la regex se « trompe » car elle n’est pas assez précise, mais en non-interactif il faut être sûr de soi, donc il faut une bonne base de tests avec des inputs très variés.

outil de comparaison de fichiers

  • plusieurs outils fonctionnent sous les principaux systèmes d’exploitations, utilisable sur des répertoires (récursif) :
  • un outil de comparaison textuelle avancée en ligne : medite

Une présentation de ces outils serait utile, en particulier pour montrer comment les utiliser avec des outils de gestion de version.

Résumé du WLCG-HSF Workshop (Naples)

Personne parmi les développeurs n’a pu s’y déplacer. Un résumé est présent ici

NbGrader, un outil d’aide à l’enseignement

Il s’agit d’une application d’aide à l’enseignement et à la correction.

Une cellule peut être définie comme contenant des instructions « solution » à ne pas distribuer aux étudiants. Cela génère un notebook pour étudiants sans la solution, qui peut être récupéré par les étudiants. Il permet la comparaison entre la solution fournie par l’étudiant avec la solution créé par l’enseignant. La note peut être attribuée automatiquement selon des jeux d’essais fournis par l’enseignant. L’outil est complet semble réellement adapté à l’enseignement au quotidien.

Formations à la gestion de version

formation régionale à git/GitHub/GitLab

Après le succès d’une formation organisée à Grenoble, une seconde session est proposée aux Directions Régionales qui le souhaitent (cf. courriel de Sylvie Falcinelli du 17/04).

Formation à la gestion de version avec Git

Hadrien organise fin mai et les inscriptions sont presque closes (voir courriel sur la liste le 18/04/2018 13h08). Elle n’est pas orientée spécifiquement développeurs mais avec des exemples d’édition parallèle.

Google summer of code

Une fois Google ayant validé le projet, c’est la première personne proposant le stage qui choisir l’étudiant qui se le voit attribué. Une 2de phase de validation par Google a lieu ensuite.

Réunion du 4 avril 2018

Visite au CNES

Il y a eu une réunion au CNES pour SVOM la semaine dernière.

Le CNES impose des contraintes de développement (mais moins que l’ESA) du fait du logiciel embarqué, en particulier. Parmi les bonnes pratiques de développement, la gestion des exigences est vérifiée par une équipe dédiée, en utilisant l’outil Reqtify; les exigences sont décrites textuellement dans un document analysé par l’outil. Au CNES, la pratique habituelle est d’extraire la description des exigences d’un document Word en s’appuyant sur les balises de style ! La documentation de la partition scientifique de l’instrument SVOM-MXT étant au format Markdown, il a été décidé d’introduire des balises HTML5 et de les analyser pour extraire les exigences.

L’ensemble du projet est hébergé au CC sous la forge GitLab, et le processus de développement s’appuie sur l’implémentation du framework Scrum par GitLab.

Café LoOPS CoCalc

Un café LoOPS avait lieu hier sur CoCalc. CoCalc est le projet libre qui prend la suite de SageMathCloud, lui-même basé sur Sage, un logiciel proposant des outils mathématiques allant de l’algèbre au calcul symbolique (résolution d’équation), en passant par la théorie des ensemble et la combinatoire.

CoCalc intègre des notebooks JuPyTer, document LaTeX, et hébergé en ligne. L’intégration d’outils Dropbox, Owncloud, Google docs est possible. Un terminal intégré dans l’interface web pour manipuler les fichiers semble particulièrement pratique.

Une version payante permet d’accéder à des ressources complémentaires (RAM, processeurs, accès réseau, etc.). Le problème de la limitation d’accès réseau est lié au fait que la plateforme a été piratée rapidement. Ils ont répondu en fermant l’utilisation (payer quelques euros pour accéder au réseau).

Une discussion débute sur la difficulté à faire une authentification actuellement sans passer par des acteurs privés (GAFAM, Google, Amazon, Facebook, Apple, Microsoft). Le passage par ces entreprises pose problème car elles ont pour modèle économique la revente d’informations privées (l’affaire Cambridge Analytica le rappelle).

Cependant, des acteurs publics ont prouvé que les entreprises ne sont pas les seuls capable de mettre en place un système efficace. Par exemple, le réseau d’authentification de l’ESR eduroam permet de s’authentifier au niveau européen dans les établissements d’enseignement supérieur et de recherche.

Dans le cas de CoCalc, une authentification ne suffit pas à éviter le piratage puisqu’il n’est pas possible de prévoir ce que va faire un utilisateur. Les authentifications basées sur l’identité réelle peuvent cependant diminuer le risque d’usage malveillant.

Il existe néanmoins un certain nombre d’alternatives pour l’installer soi-même, ou au sein d’une Université sans utiliser l’interface web. Un problème subiste : comment mettre en place un système de certification/authentification fiable et robuste?

Journée Meson

Une journée autour de l’outil de compilation Meson aura lieu le 13/4/2018.

Les dernières versions de Meson permettent d’obtenir un niveau de fonctionnalité équivalent à celui d’autres outils. Ainsi, Xorg 1.20 proposera le même niveau de fonctionnalités quand on compile avec Meson que quand on compile avec autotools.

RGPD et données ouvertes

Un nouveau règlement européen, le Référentiel Général de Protection des Données (RGPD) entre en application le 25 mai 2018. Il cadre la protections des données en Union Européenne en remplaçant la directive de 1995.

Les conditions d’utilisation doivent être raisonnables (adieu les conditions de 20 pages). Les données bénéficient aussi d’un droit de propriété intellectuelle renouvelables pour 15 ans à chaque traitement.

Par ailleurs, et sans lien avec le RGPD, les données de la recherche doivent être accessibles aux concitoyens, sous réserve d’exceptions.

Ces données concernent les données elles-mêmes, les articles (si financés avec plus de 50% de fonds publics), les codes sources. La mise à disposition de ces données doit se faire, sauf exception. Concernant les données de la recherche en physique, cela ne concerne pas la grande partie des citoyens, mais cela peut intéresser des entreprises faisant dans l’analyse de données par exemple.

La mise à disposition de ces données part du principe que le citoyen payeur doit avoir accès aux données. C’est aussi un moyen de faciliter la vérification des articles publiés. Des études ont montré que les articles publiés, tout domaine confondu, sont rarement reproductibles (les sciences humaines et sociales ne sont pas les plus concernées comme on le pense souvent).

SciHub et accès aux publications scientifiques

Le site SciHub permet l’accès aux publications sans passer par les droits d’accès demandés par les maisons d’édition. Ce site kazakhe est décrié par lesdites maisons d’édition, qui remettent en questions sa légalité. La justice française n’a pour l’heure pas rendu de décision allant dans ce sens. Les maisons d’édition faisant leur possible pour empêcher l’accès à ce site, il est principalement publié à travers TOR.

D’autres moyens d’accéder aux publications scientifiques existent ). La liste accesouvert@groupes.renater.fr s’intéresse au sujet de l’accès ouvert en général.

Le collectif Couperin qui négocie de manière coordonnée les tarifs d’accès aux publications scientifiques a récemment pris la décision de ne pas se soumettre aux conditions du groupe SpringerNature, ce qui signifie qu’a priori, les chercheurs publics n’auront plus accès par leur établissement à ces publications.

Cela rejoint la problématique de science ouverte, et l’accès à tous aux données de la recherche pour pouvoir vérifier les résultats obtenus, les critiquer, et les utiliser pour développer la science (dans son sens complet, donc comprenant les sciences humaines et sociales, et donc les arts lettres et langues). Actuellement, un déplacement des frais a été constaté avec l’accès ouvert, ce sont désormais non plus les lecteurs mais les auteurs qui paient pour que les publications soient accessibles, ce qui pose d’autres soucis (éthiques entre autres).

Une grande partie des revues sont passées sous la coupe de deux maisons d’éditions internationales (SpringerNature et Elsevier) qui négocient de manière opaque les frais d’accès pour les institutions. Des établissements comparables peuvent payer des sommes très différentes pour accéder aux mêmes ressources. Les revues qui sont gérées par ces éditeurs ont été cédées par les chercheurs qui souhaitaient se défaire de cette charge administrative (et sans doute mal ou pas valorisée par leurs institutions).

Si des disciplines comme les mathématiques sont devenues rapidement indépendantes des éditeurs, et que la physique a suivi, c’est cependant plus difficile dans d’autres disciplines pour lesquelles il n’existe que des éditeurs privés.

En France, deux articles qui diffèrent dans leur forme de manière raisonnable sont considérés comme deux articles différents, donc une version d’article avant impression peut être publié sur sa page web sans violer une clause d’exclusivité sur l’article lui-même.

Il est rappelé que les clauses illégales ne s’appliquent pas en France (mais le reste du contrat s’applique). Ainsi, une clause qui donne ses droits inaliénables (non patrimoniaux, c’est-à-dire le droit d’être cité comme auteur, de décider de la publication initiale, etc.) de propriété intellectuelle à un éditeur ne vaut rien au sens où le ou les auteur·s disposent de ce droit à vie. Par ailleurs, les droits patrimoniaux appartiennent habituellement à l’employeur et non à l’auteur, mais une exception existe pour les chercheurs, qui restent propriétaires de ces droits pour les articles. Pour les données les droits appartiennent a priori à l’employeur.

Métiers de l’informatique IN2P3

Une première réunion a eu lieu, assez houleuse. Des priorités nationales doivent être prises par le groupe de travail, elles devraient servir à négocier les postes face aux DU.

Réunion du 7 mars 2018


Présentation de JupyterLab

Le 06/03/2018, une demi-journée de présentation des outils du projet Jupyter a été organisée conjointement par les étudiants et une équipe d’ingénieurs et d’enseignant-chercheurs de l’X. Antoine, David et Philippe y ont participé.
Elle était bien organisée, et faisait appel à des développeurs du noyau mais aussi des utilisateurs.
Le matériel est accessible, et une instance Jupyter a été démarrée au LAL, Adrien R. peut y donner accès.

Pour information, Paris-Sud travaille sur un JupyterHub pour l’Université. Un noyau Spark (Scala) est envisagé.
Pour rappel, le noyau Xeus pour C++ a été développé dans l’Université, par Loic Gouarin, et est déjà utilisé à des fins pédagogiques (cf. café LoOPS sur Xeus).

Une session hackathon est organisée ces deux prochaines journées à l’Université.

Formation Symfony

Symfony est le framwork le plus répandu pour développer des applications web dans le monde PHP.
Les développeurs Symfony sont très demandés.
Sur le même créneau, le principal concurrent est le framework Python Django.

Au LAL, la base des applications web se basaient généralement sur PHP mais aussi FileMaker et Perl. Cette base a été progressivement refondue sur une base unique PHP/MySQL. Le choix du framework Symfony était donc évident dans ce contexte.
Le framework Django est aussi utilisé au LAL pour le monde python.

Depuis 2011, Symfony est utilisé par Justine et Serge pour développer les nouvelles applications pour l’administration et certaines demandes provenant des expériences.
Ils se sont formés avec les didacticiels gratuits qui existaient déjà à l’époque (après avoir raté une première formation IN2P3 à Aussois en 2008).
L’offre des formations gratuites en français est maintenant bien fournie (openclassrooms.com, mooc-francophone.com) mais ne concerne que les versions 2 et 3 de Symfony.
Une formation CNRS à Symfony 4 se déroulera du 4 au 8 juin à Marseille.

Le formulaire de pré-inscription est disponible.
Les informations sont disponibles.

Distribution d’un format de donnée FITS pour le calcul réparti

Un travail a lieu avec Julien et Christian au SI, et Stéphane, un physicien, pour traiter les données d’astrophysique à l’aide d’outils du domaine "Big Data".
L’idée est de distribuer les données pour pouvoir les traiter avec Spark, autour duquel s’est déroulé une formation en début d’année.
Un connecteur SparkFITS a été développé.
La spécificité est que Spark est beaucoup utilisé pour des données textuelles peu structurées (JSON, CSV, logs…), alors que le format FITS est très structuré.
Spark est principalement écrit en Scala. Son utilisation est donc plus intuitive depuis ce langage (bien que d’autres passerelles existent), et il est préférable de passer par Scala pour étendre l’implémentation.

Une bibliothèque FITS a donc été développée en Scala, ainsi qu’un connecteur Spark pour distribuer les données.
Ce dernier découpe un fichier FITS lu par la bibliothèque pour l’envoyer à différentes machines qui feront le calcul. Le format d’entrée-sortie du format FITS est actuellement implémenté en C dans CFITSIO. La lecture-écriture y est séquentielle et en accès direct, il n’est pas pensé pour avoir plusieurs pointeurs d’accès aux données sur le même fichier.
La bibliothèque a été développée avec à l’esprit de permettre un usage facile à une personne sachant utiliser les interfaces Spark habituelles.

Les essais actuels de performances montrent qu’un téraoctet de données ont pu être réparties et traitées au LAL, avec un total de 200 Go de RAM disponible (100 coeurs à 2 Go de RAM).
Spark permet en effet de gérer facilement une quantité de données supérieure à la capacité de la mémoire vive de l’hôte.
Les données sont découpées aléatoirement, mais réparties autant que possible de manière proches afin de faciliter les échanges si besoin.
Les données sont d’abord déposées sur le système de fichier, puis découpées de manière indépendantes.
L’envoi des données peut se faire en flux, et elles peuvent alors être découpées et calculées au fur et à mesure, ou être disponibles sur le système de fichier.
Par exemple, dans le cas d’un calcul de matrice, il faut une description de la structure de données qui permette d’appliquer le calcul sur chaque morceau de cette matrice, même si le flux arrivant est au milieu d’une ligne.
Il est possible de découper les blocs de données de manière fainéante, au fil de leur arrivée, mais cela nécessite que la structure des données soit adaptée à cette façon de traiter les données.

Les prochaines étapes sont de contacter l’autre laboratoire de l’IN2P3 qui travaille sur ces mêmes données, puis une présentation en conférence est prévue dans les prochains mois. Un exemple d’application immédiat est LSST, qui traite 15 To/jour (mais cela peut se ramener à 0,5 à 1To/jour réellement après nettoyage et réduction des données): le logiciel actuellement utilisé n’est pas suffisant pour gérer cette quantité de données.

Avantages du développement en langage fonctionnel

La bibliothèque cfitsio a été en partir réécrite en scala, pour être utilisée en calcul réparti. Cela représente un mois de travail et 1000 lignes, mais comme les langages fonctionnels sont plus expressifs que les langages impératifs, cela correspond à un nombre de lignes bien supérieur en langage impératif.

Julien en profite pour recommander la formation Scala car elle est très bien faite et lui a été très utile. Christian indique que les interfaces de développement sont très bien faites en Spark aussi. Le mariage entre orienté objet et fonctionnel ajoute la possibilité d’héritage, qui est efficace :

  • les données FITS étant en N dimensions (pas forcément 2D), la méthode de découpage en lui-même a pris plusieurs jours ;
  • le fait que Spark soit libre (licence Apache) a fait gagner 15 ans de développement. Cela encourage les entreprises à participer au développement de manière visiblement efficace. Exemple : SOLEIL discutait par exemple hier avec Quant, qui travaille sur le développement de jupyter, pour adapter jupyter à leur besoins pour les acquisitions des expériences ;
  • Jupyter peut être interfacé avec Scala pour être utilisé avec matplotlib ;
  • on peut interfacer du Python dans du Scala grâce à JEP, l’équivalent de JNI en Java.

PSPA

Un prestataire extérieur a été choisi pour définir l’ergonomie de l’interface de PSPA, et proposer une solution.
Cela obligera à reprendre les interfaces internes comme publique.
Le bus pourra se faire en Flask, mais l’outil n’est pas encore défini.
Marika, l’experte machine, a rencontré l’ergonome. D’autres entrevues sont prévues avec des utilisateurs (Laurent Nadolski de SOLEIL, un utilisateur de l’IPNO…).
3 mois de travail est prévu, l’échéance est un peu plus longue pour découpler l’interface du moteur, ce qui nécessite de refaire du développement.

SVOM

Marc porte du code Python 2 en Python 3. Une première partie du travail consiste à nettoyer le code grâce à auto pep8 et pylint. Une seconde étape consistera au portage de python 2 à 3 lui-même, avec des outils comme « six », « modernize » et « 2to3″…
Le travail avec le CNES va se baser sur la méthode de gestion de projet agile Scrum.
Antoine demande quelle solutions existent pour un calendrier à distance. Philippe a eu un retour de Valérie pour éviter le calendrier de owncloud.lal.in2p3.fr et préférer celui de zimbra, car le premier est complexe à gérer: les noms des utilisateurs avec lequel on partage le calendrier ne s’affichent pas clairement.
D’autres outils déjà évoqués donnent accès à ce genre d’outils (Philippe indique https://framaboard.org/ qui est une instance kanboard, Antoine indique que Trello aurait des modules similaires).