↩ Accueil

Vue lecture

RISC-V : Ubuntu 24.04 est disponible sur HiFive Premier P550

C'est désormais officiel : Ubuntu 24.04 LTS est disponible sur la carte de développement HiFive Premier P550 conçue par SiFive et ESWIN. Cela fait presque 2 ans que Canonical s'active dans la communauté RISC-V. En décembre dernier, les trois partenaires annonçaient la disponibilité rapide de la distribution. La HiFive Premier P550 est une carte de développement utilisant un processeur RISC-V 4 coeurs. La carte est vendue à -400 $ (version 16 Go de RAM). 

Canonical confirme son intérêt pour l'architecture RISC-V et propose un environnement complet pour les développeurs. Aujourd'hui, RISC-V a besoin de logiciels adaptés et de matériels performants, notamment pour le desktop et le monde serveur. L'OS est pré-installé sur la carte.

Catégorie actualité: 
Image actualité AMP: 

NVIDIA Project DIGITS : un ordinateur IA surpuissant dans un barebone

Il existe déjà des PC IA mais NVIDIA va bien au-delà en dévoilant le projet DIGITS. Le PC reprend le format barebone des Intel NUC et Mac Mini. DIGITS n'est pas un autre micro-ordinateur mais plutôt un HPC dédié à l'IA.

Il utilise un NVIDIA G10 Grace Blackweel, 128 Go de RAM, un stockage ultra rapide de 4 To. Le puce NVIDIA embarque une GPU de 1 petaflop de calculs et un CPU intégrant 20 coeurs ARM. DIGITS n'est pas là pour faire du jeu ou de la bureautique, il est taillé pour les LLM de 200 milliards de paramètres, faire de l'entrainement, développer des IA. Il sera possible de mettre en cluster plusieurs DIGITS pour pouvoir utiliser des LLM de 400 milliards de paramètres. La connexion entre les DIGITS pourra se faire via ConnectX qui sont des interfaces Ethernet hautes performantes (jusqu'à 400 Gb/s).

La machine utilise un OS dédié basé sur Linux : DGX OS. Il travaillera en transparence avec DGX Cloud. Tous les SDK et frameworks NVIDIA pourront être utilisés sur la machine. 

DIGITS devrait être disponible à partir de mai 2025 pour un prix de départ de 3 000 $. Reste à voir la configuration de base et les options proposées. DIGITS est un nom de code, peu de chance que ce soit le nom commercial de la machine. 

Catégorie actualité: 
Image actualité AMP: 

Réduire l’empreinte des vecteurs : la quantification vectorielle partie 2

Dossier de Han HELOIR, EMEA Gen AI Solutions Architect (MongoDB)

La quantification vectorielle : Réduire pour mieux produire

1.   Pourquoi compresser les vecteurs ?

La quantification vectorielle est une méthode de compression des embeddings, qui consiste à réduire la précision des vecteurs pour diminuer leur taille en mémoire et leurs besoins en calcul. Cette approche s’inscrit dans une stratégie globale d’optimisation des systèmes d’IA générative, où chaque milliseconde et chaque octet comptent.

Sans quantification, les vecteurs sont généralement stockés en float32, un format numérique utilisant 32 bits par dimension. Cela garantit une précision élevée mais engendre des coûts de stockage exorbitants, une augmentation des latences, et des contraintes pour la scalabilité. La quantification répond à ces défis en réduisant la taille des vecteurs tout en maintenant une précision suffisante pour les tâches courantes.

2.   Les trois grandes méthodes de quantification

Chaque méthode de quantification propose un équilibre différent entre compressionprécision, et performance. Voici un tour d’horizon des principales approches :

a) Quantification scalaire (int8) : La solution universelle

La quantification scalaire réduit la précision de chaque élément d’un vecteur en le mappant à un ensemble pré-défini de niveaux, comme les 255 niveaux disponibles en format int8. Cette méthode divise la taille des vecteurs par 4x à 32x, tout en conservant une grande partie de leur précision.

Comment ça marche?

  1. Les valeurs maximales et minimales de chaque dimension sont identifiées dans l’ensemble de données.
  2. L’espace entre ces valeurs est divisé en niveaux équidistants (ex. : 255 pour int8).
  3. Chaque élément du vecteur est associé au niveau le plus proche, réduisant ainsi sa précision.

Exemple:

Un vecteur original avec des valeurs précises comme [0.456, 0.789, -0.123] pourrait être réduit à [46, 78, -12], tout en maintenant sa signification dans les recherches.

Bénéfices:

-        Réduction importante des coûts de stockage.

-        Compatible avec la majorité des cas d’usage, des moteurs de recherche aux systèmes de recommandations

-        Conservation d’une précision élevée (jusqu’à 96 % dans certains scénarios).

b) Quantification binaire : La compacité maximale

La quantification binaire pousse la compression encore plus loin en réduisant chaque élément à une valeur binaire (0 ou 1). Cela réduit drastiquement les besoins en stockage, mais au prix d’une perte de précision plus marquée.

Comment ça marche?

  1. Les vecteurs sont normalisés dans un espace restreint, souvent entre -1 et 1.
  2. Chaque élément est évalué : s’il est positif, il devient 1 ; sinon, 0.

Exemple :

Un vecteur [0.45, -0.23, 0.78] deviendrait [1, 0, 1].

Bénéfices :

-        Compression maximale, divisant les besoins de stockage par 32x à 64x.

-        Temps de calcul réduit grâce à des représentations simplifiées.

Risque de perte de précision, nécessitant des techniques complémentaires comme le rescoring ou l’oversampling.

c) Quantification par produit (PQ) : La solution modulaire

La quantification par produit (Product Quantization - PQ) divise un vecteur de haute dimension en sous-vecteurs de taille plus petite, chacun étant compressé indépendamment. Cette méthode offre un compromis idéal entre compressionprécision, et efficacité computationnelle.

Comment ça marche?

  1. Le vecteur est divisé en plusieurs segments (ou sous-vecteurs).
  2. Chaque sous-vecteur est associé à un centroïde préalablement calculé (via des algorithmes comme k-means).
  3. Au lieu de stocker les sous-vecteurs eux-mêmes, on ne conserve que les indices des centroïdes correspondants.

Exemple :

Un vecteur [0.45, -0.23, 0.78, -0.11] pourrait être divisé en deux sous-vecteurs [0.45, -0.23] et [0.78, -0.11], chacun étant compressé indépendamment.

Bénéfices:

-        Permet une compression adaptative selon les besoins.

-        Très efficace pour des systèmes traitant des milliards de vecteurs, comme FAISS (Facebook AI Similarity Search).

Performances légèrement inférieures pour les recherches en temps réel.

Cas d’usage recommandé :

-        Systèmes nécessitant une forte scalabilité, comme les plateformes de commerce électronique ou les moteurs de recherche visuelle.

4.   Pourquoi choisir la quantification vectorielle en production ?

a) Réduction des coûts

Selon une étude réalisée par HuggingFace, la quantification scalaire ou binaire peut réduire les coûts de stockage par un facteur de 20x à 30x, tout en maintenant une précision suffisante pour la majorité des cas d’usage. Par exemple : Une base contenant 250 millions de vecteurs passe de 7,5 To à 240 Go.

b) Amélioration des performances

Avec des vecteurs compressés, les recherches deviennent plus rapides car il y a moins de données à traiter. Cela se traduit par une réduction significative de la latence, essentielle pour les applications en temps réel.

Significant storage reduction + good recall and latency performance with quantization on different embedding models(Source: MongoDB blog)

c) Scalabilité accrue

La compression permet de gérer des bases de données volumineuses sans augmenter proportionnellement les coûts en matériel ou en infrastructure cloud. Cela ouvre la voie à une scalabilité durable, même avec une augmentation rapide des utilisateurs et des requêtes.

4.   Techniques avancées pour compenser la perte de précision

Oversampling : Récupère un plus grand nombre de résultats initiaux pour maximiser les chances d’inclure les éléments pertinents.

Rescoring : Affine les résultats en recalculant leur pertinence avec les vecteurs originaux (float32), garantissant des recommandations de haute qualité.

Conclusion : Construire une IA générative scalable

Grâce à des techniques comme la quantification vectorielle et l’indexation HNSW, les entreprises peuvent réduire leurs coûts, améliorer leurs performances, et garantir une scalabilité durable. Ces approches sont essentielles pour transformer les PoC prometteuses en solutions de production robustes et économiques.

Invitation à l’action : Explorez ces techniques dans vos projets et découvrez leur impact sur vos systèmes IA !

Références : 

  1. HuggingFace: Binary and Scalar Embedding Quantization for Significantly Faster & Cheaper Retrieval (https://huggingface.co/blog/embedding-quantization#quantization-experiments)
  2. MongoDB blog: Significant storage reduction + good recall and latency performance with quantization on different embedding models (https://www.mongodb.com/blog/post/vector-quantization-scale-search-generative-ai-applications)
Catégorie actualité: 
Image actualité AMP: 

Réduire l’empreinte des vecteurs : la quantification vectorielle partie 1

Dossier de Han HELOIR, EMEA Gen AI Solutions Architect (MongoDB)

Introduction : la révolution des embeddings et ses défis cachés

L’intelligence artificielle générative, notamment à travers le Retrieval-Augmented Generation (RAG), révolutionne la gestion des données en combinant la puissance des modèles génératifs avec des bases de connaissances structurées. Cette approche permet d’automatiser des tâches complexes tout en accédant en temps réel à des informations précises et pertinentes provenant de multiples sources. 

Au cœur de ces systèmes se trouvent les embeddings, des vecteurs mathématiques capables de représenter des données non structurées telles que des textes, des images, ou des vidéos. Ces vecteurs permettent de réaliser des tâches avancées comme les recherches sémantiques, les recommandations, ou encore l’analyse de similarité.

Cependant, derrière l’innovation se cache une complexité technique. Lors de la phase de PoC (Proof of Concept), la gestion des embeddings peut sembler relativement simple. Mais une fois en production, ces vecteurs deviennent une source importante de coûts, de latence, et de problèmes d’évolutivité. En effet, leur stockage, leur traitement, et leur recherche à grande échelle exigent des infrastructures coûteuses et complexes.

Dans cet article, nous explorons comment la quantification vectorielle, associée à des techniques de l’indexation comme HNSW(Hierarchical Navigable Small World), peut réduire significativement ces obstacles. Ces approches permettent de maintenir des performances élevées tout en rendant la scalabilité plus accessible.

Les défis techniques des embeddings en production

1. Explosion des coûts de stockage

Chaque embedding est une représentation numérique haute dimension, souvent en format float32. Cela signifie que chaque élément du vecteur utilise 32 bits de mémoire. Multipliez cela par des millions, voire des milliards d’embeddings, et vous obtenez des volumes de données astronomiques.

Prenons un exemple concret : une base contenant 250 millions d’embeddings, chacun ayant 1 024 dimensions. En format float32, cette base occuperait 7,5 To d’espace et coûterait environ 3 600 $ par mois sur une plateforme comme AWS. À cela s’ajoutent les frais pour les sauvegardes, la redondance, et la haute disponibilité. Ces coûts deviennent rapidement prohibitifs, notamment pour des start-ups ou des projets avec des budgets limités.

Embeddings et le coût associé (Source: HuggingFace)

2. Latence accrue et surcharge computationnelle

Les embeddings ne se limitent pas au stockage ; ils doivent également être interrogés pour effectuer des recherches rapides et précises. Ces recherches, appelées recherches de voisins les plus proches (Nearest Neighbor Search), nécessitent des calculs dans des espaces vectoriels de haute dimension. Chaque vecteur doit être comparé à d’autres pour déterminer les éléments les plus similaires.

Plus les vecteurs sont longs (haute dimension) et plus la base de données est volumineuse, plus la recherche devient longue. Cela pose un problème critique dans les applications en temps réel, où les utilisateurs s’attendent à des réponses quasi instantanées. Par exemple, une application de recommandations doit répondre en moins de 300 millisecondes pour maintenir une expérience utilisateur satisfaisante. Une recherche trop lente peut entraîner une frustration des utilisateurs et une perte de clients.

3. Scalabilité limitée

À mesure que le nombre d’utilisateurs et de données augmente, les exigences en calcul et en mémoire explosent. Cela entraîne des frais supplémentaires en matériel (serveurs, RAM) et en infrastructure cloud, créant un goulot d’étranglement financier. Les entreprises sont alors confrontées à un dilemme : réduire la qualité du service ou augmenter leurs dépenses.

HNSW : Une indexation intelligente pour les recherches rapides

1. Une structure hiérarchique

HNSW (Hierarchical Navigable Small World) est une méthode d’indexation conçue pour accélérer les recherches dans des bases vectorielles. Contrairement à une recherche linéaire, qui comparerait chaque vecteur à l’ensemble des autres, HNSW construit un graphe multi-niveaux pour organiser les données de manière plus efficace.

Ce graphe hiérarchique fonctionne comme une carte routière :

-        Niveau supérieur : Les autoroutes, qui permettent de parcourir rapidement de grandes distances.

-        Niveaux intermédiaires : Les routes principales, qui affinent la recherche.

-        Niveau le plus bas : Les petites rues, qui mènent aux résultats finaux.

En utilisant cette approche, HNSW réduit drastiquement le nombre de comparaisons nécessaires pour trouver les voisins les plus proches d’un vecteur, tout en garantissant une recherche rapide et précise.

2. Avantages et limitations

HNSW est particulièrement efficace car il :

-        Réduit les temps de recherche, même dans des bases massives.

-        Permet des mises à jour incrémentielles (ajout de nouveaux vecteurs sans reconstruire tout l’index).

Cependant, cette méthode exige une grande quantité de RAM, car le graphe doit être entièrement chargé en mémoire pour offrir des performances optimales. C’est ici que la quantification vectorielle devient essentielle, car elle réduit la taille des vecteurs et, par conséquent, les besoins en mémoire.

Catégorie actualité: 
Image actualité AMP: 

Accident de robots à Los Angeles

Ce n'est pas un film de S-F mais la réalité : le 27 décembre 2024, dans les rues de Los Angeles, un robotaxi de Waymo est entré en collision avec un robot de livraison de Serve Robotics. Selon les vidéos et les commentaires, le robot livreur de Serve traversait une rue alors que le robotaxi tournait au même moment. Qui est à causer l'accident ? 

TechCrunch a voulu en savoir plus et a posé la question à Waymo : comment le système Waymo détecte-t-il un autre robot ? Selon le constructeur, le système (Waymo Driver) a correctement analysé son environnement. Le robot livreur a été vu comme un objet inanimé dans le sens non vivant (humain ou animal). Le système a donc considéré qu'il pouvait continuer sa route sans freiner ni contourner l'obstacle. 

Waymo Drive analyse les objets animés ou non sur sa route et doit pouvoir détecter en temps réel ce qui ne passe sur le route et autour. Si le système doit agir pour sauver un objet animé (= vivant) ce n'est pas pour autant qu'il doit "oublier" les objets inaminé (= non vivant). Ces objets peuvent bouger, tomber sur la chaussée, etc. L'accident de décembre dernier en est la preuve.

Quand on regarde la vidéo de l'accident : le robot livreur traverse la route sur un passage piéton et ralentit quand une voiture passe. Il tente ensuite de monter sur le trottoir, mais fait marche arrière pour se repositionner. C'est à ce moment-là que le taxirobot arrive et heurte le robot. Le robotaxi freine assez fortement mais cela ne suffit pas à éviter le choc frontal. Après quelques secondes, le robot livreur se dégage et reprend visiblement son trajet. Waymo précise que le robotaxi était vide au moment du choc. 

Serve Robotics a répondu à TechCrunch que le robot livreur était contrôlé à distance par un opérateur. Pour les carrefours, c'est la procédure standard. Nos confrères précisent qu'aucun des deux constructeurs n'a répondu sur les causes précises de l'accident ni sur les responsabilités (qui est à l'origine de l'accident ?). Cela pose tout de même des questions sur les futurs accidents : comment définir les responsabilités, rédiger un constat d'accident, etc.

Source : https://techcrunch.com/2024/12/31/a-waymo-robotaxi-and-a-serve-delivery-robot-collided-in-los-angeles/

Catégorie actualité: 
Image actualité AMP: 

Java : Vaadin ou JavaFX pour sa GUI ?

Java Code Geeks publie une liste des frameworks UI pour Java. Ces frameworks permettent de créer des interfaces "modernes". Ces outils permettent de créer des apps graphiques pour les desktop.

Les frameworks les plus récentes :

- Vaadin : orienté interface web app, nécessite un serveur Java, richesse des objets graphiques

- Apache Pivot : basé sur un XML, permet de faire du data binding et de créer rapidement des animations. Popularité limitée.

Les frameworks historiques :

- JavaFX : il reste une référence et offre une grande richesse UI, accélération matérielle

- Swing : framework historique, léger mais dépassé. Pour les apps legacy

- SWT : framework historique, dépendance sur les plateformes. 

Sauf à maintenir les apps historiques, l'usage de SWT et Swing n'est plus d'actualité depuis longtemps. JavaFX est un choix efficace et intégré à la plateforme Java. Il est taillé pour les interfaces modernes, propose une approche déclarative mais attention à l'apprentissage. Vaadin représente une alternative intéressante à JavaFX : pas besoin de CSS ou HTML, propose une collection de composants, typage fort pour limiter les erreurs de runtime. Vaalin propose aussi une approche déclarative avec des templates intégrés. 

A vous de voir si vous optez pour un framework GUI côté client ou côté serveur. 

Le choix de Java Code Geeks : https://www.javacodegeeks.com/2025/01/top-java-gui-frameworks-for-modern-ui-development.html

Présentation de Vaalin : https://vaadin.com/blog/comparing-java-gui-frameworks-vaadin-javafx-and-swing

Catégorie actualité: 
Image actualité AMP: 

Syncfusion 2024 volume 4 : un nouveau composant de Chat disponible

Syncfusion propose dans le dernier pack de composants pour Angular / JS un nouveau composant pour construire un Chat : Angular Chat UI. Il permet aux développeurs de créer un service de chat dans ces apps. Le Chat UI permet de créer des échanges entre utilisateurs, pour créer un chat sur une boutique en ligne.

Le composant intègre :

- une barre d'outils

- chargement des messages à la demande

- affichage des utilisateurs actifs

- personnalisation du composant

Ce composant est disponible sur JS, Angular, React, ASP.Net, Blazor.

Site : https://www.syncfusion.com/blogs/post/new-angular-chat-ui-component

Catégorie actualité: 
Image actualité AMP: 

QNX veut aider les développeurs à créer des apps embarqués

Les systèmes embarqués sont parfois vus comme des objets curieux et difficiles à programmer. L'éditeur QNX veut démocratiser le développement embarqué en proposant des ressources pour des projets non commerciaux : QNX Everywhere. Ce programme permet d'accéder à QNX SDP 8, la plateforme de développement QNX. Des formations et des tutoriels sont également accessibles. 

« L'ingénierie logicielle est le pilier de notre avenir. Elle nous permet de relever les défis les plus complexes de la société, allant de la conduite autonome à la chirurgie robotisée », a déclaré Grant Courville, SVP, Product and Strategy, QNX. « Alors que notre dépendance aux technologies intelligentes et connectées augmente, les initiatives telles que QNX Everywhere, sont essentielles pour rendre l'apprentissage plus accessible. Cette dernière fournit aux développeurs des outils et des technologies de pointe afin de nourrir l'exploration et la créativité, tout en les aidant à résoudre des problématiques comme jamais auparavant. Nous sommes ravis d'élargir l'accès aux solutions QNX, pour une utilisation non commerciale à grande échelle, et nous sommes impatients de voir les innombrables innovations qu'elles susciteront. »

Cette initiative donne accès à :

  • Une licence de développement QNX SDP 8 non commerciale pour un seul utilisateur ;
  • Un kit de démarrage rapide pour Raspberry Pi 4 ainsi que les composants complémentaires associés (applications de rendu, graphiques, écran tactile, caméra, support réseau câblé et Wi-Fi, stockage USB et plus encore).
  • Des accès à des portages open-source QNX supplémentaires et à un code source optimisé.
  • Des accès à des tutoriels dirigés par des ingénieurs, tels que des vidéos accessibles expliquant le développement de logiciels de systèmes embarqués et les concepts de systèmes d'exploitation.

Vous devrez créer un compte QNX : https://www.qnx.com/products/everywhere/

Catégorie actualité: 
Image actualité AMP: 

IPv6 et Java : BigInteger pour faciliter la manipulation

IPv6 est la nouvelle norme IP dans le monde réseau suite à la pénurie d'adresses IPv4. Les deux protocoles sont supportés par Java. IPv4 utilise un adressage 32 bits alors que IPv6 est en 128 bits. 

Comme le précise Oracle : "IPv6 dans Java est transparent et automique. Un portage n'est pas nécessaire et il n'y a pas de recompilation à faire.". Bref, tout est fait pour être le plus transparent possible et ce, depuis plusieurs années. Si vous avez besoin impérativement d'IPv4, vous pouvez configurer java.net.preferIPv4Stack en true. Il est false par défaut. 

Vous pouvez aussi avoir besoin de stocker ou de manipuler simplement les adresses IPv6. Pour ce faire, vous pouvez utiliser BigInteger pour convertir. BigInteger est une classe Java immutable ce qui est particulièrement pratique pour maniper des adresses IP sans risquer de les modifier. Bien entendu, vous pouvez convertir d'IPv6 vers BigInteger et inversement

Présentation d'Oracle : https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/

Configuration réseau : https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

Tutoriel pour utiliser BigInteger : https://www.javacodegeeks.com/convert-ipv6-to-biginteger-in-java.html

Catégorie actualité: 
Image actualité AMP: 

OpenJDK 24 et 25 : point de situation

OpenJDK 24 commence à accélérer son développement. La build 30 a été livrée le 3 janvier. La 1ere version RC est attendue fin février. La build 30 apporte surtout des corrections de bugs. La version 24 s'annonce comme une mise à jour importante. 

Lien : https://github.com/openjdk/jdk/releases/tag/jdk-24%2B30

Liste des JEP :

404:Generational Shenandoah (Experimental)

450:Compact Object Headers (Experimental)

472:Prepare to Restrict the Use of JNI

475:Late Barrier Expansion for G1

478:Key Derivation Function API (Preview)

479:Remove the Windows 32-bit x86 Port

483:Ahead-of-Time Class Loading & Linking

484:Class-File API

485:Stream Gatherers

486:Permanently Disable the Security Manager

487:Scoped Values (Fourth Preview)

488:Primitive Types in Patterns, instanceof, and switch (Second Preview)

489:Vector API (Ninth Incubator)490:ZGC: Remove the Non-Generational Mode

491:Synchronize Virtual Threads without Pinning

492:Flexible Constructor Bodies (Third Preview)

493:Linking Run-Time Images without JMODs

494:Module Import Declarations (Second Preview)

495:Simple Source Files and Instance Main Methods (Fourth Preview)

496:Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism

497:Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

498:Warn upon Use of Memory-Access Methods in sun.misc.Unsafe

499:Structured Concurrency (Fourth Preview)

501:Deprecate the 32-bit x86 Port for Removal

Les équipes travaillent déjà sur la JDK 25 prévue pour l'automne ! Pour le moment, il s'agit surtout de la mise en place du projet. Aucune JEP n'est annoncée. Page officielle : https://jdk.java.net/25/

Catégorie actualité: 
Image actualité AMP: 

Raspberry Pi 5 : le tunning SDRAM fait gagner 20 % de performances

Jeff Geerling a publié un post particulièrement intéressant sur le tuning de la SDRAM sur la Pi 2. Le résultat est sans appel : jusqu'à 20 % de performances en plus à fréquence processeur identique ! Jeff a tenté l'expérence en overclokant le SoC. Résultat : +32 % sur sa configuration. 

Par défaut, ces optimisations ne sont pas activées. Jeff explique que ces gains se font en faisant du tuning de la mémoire SDRAM. Bref, ces réglages sont prévus par design. La Pi 5 possède une SDRAM plus rapide que la Pi 4 et elle possède un meilleur accès aux composants via un bus interne plus rapide. Merci le NUMA.

Pour améliorer le rendement de le SDRAM, il faut :

1 installer le dernier firmware

2 éditer le bootloader config

3 ajouter l'option SDRAM_BANKLOW=1 

4 Redémarrer

Jeff précise que le noyau de Raspberry Pi OS possède désormais les patchs nécessaires pour l'émulation NUMA. 

Pour l'overclock du SoC, c'est simple. On ouvre le config.txt et on ajoute : 

over_voltage_delta=72000
arm_freq=3200
gpu_freq=1000

Attention : il faut impérativement un système de refroidissement sur la Pi pour éviter une surchauffe. Forcez l'utilisation du ventilateur.

Pour Jeff, ce tuning de la rémoire pourrait être activé par défaut dans les prochains mois. 

Post source : https://www.jeffgeerling.com/blog/2024/raspberry-pi-boosts-pi-5-performance-sdram-tuning

Framboise314 a publié une traduction complète du post : https://www.framboise314.fr/boostez-votre-raspberry-pi-4-ou-5-en-affinant-lacces-a-la-sram/

Catégorie actualité: 
Image actualité AMP: 

GenIA : tabnine veut trouver les licences d'utilisation des codes générés

Retour vers le passé : un des objectifs des scanneurs de code était de découvrir l'origine des codes utilisés pour déterminer les licences d'utilisation et éventuellement les conflits inter-licences et les risques légaux de ces codes pour les entreprises. L'éditeur tabnine veut aider les développeurs et les entreprises à déterminer les licences des codes générés par la GenIA. N'oublions pas que la GenIA ne génère pas du code par pur magie. Derrière, nous avons des LLM ou SLM qui eux-mêmes s'appuient sur des données pour entraîner les modèles et donc pouvoir répondre à nos prompts.

Problème 1 : les codes utilisés pour l'inférence peuvent être mis sous une licence précise, par exemple licence GPL, MIT, Apache, etc. 

Problème 2 : les licences ne sont pas identiques et peuvent rentrer en conflit quand des codes / librairies d'un projet sont sous différentes licences

Problème 3 : comment les répérer dans du code fourni par la GenIA ?

"(...)ces modèles sont entraînés sur de vastes quantités de données collectées sur internet, y compris du code soumis à des restrictions d'utilisation, ce qui introduit un risque d'infraction à la propriété intellectuelle. Étant donné que la législation sur l'utilisation du contenu généré par l'IA reste incertaine, les équipes d'ingénierie des entreprises cherchent à trouver un équilibre : profiter des gains de performance offerts par ces modèles tout en minimisant le risque d'intégrer du code sous licence copyleft dans leur base de code." précise Tabnine

"Pour répondre à ces objectifs, Tabnine est ravi d'annoncer Provenance et Attribution, une nouvelle fonctionnalité qui réduit le risque d'infraction à la propriété intellectuelle lors de l'utilisation de modèles tels que Claude d'Anthropic, GPT-4o d'OpenAI(...) Tabnine vérifie désormais le code généré dans notre chat IA par rapport au code publiquement visible sur GitHub, signale toute correspondance trouvée et référence le dépôt source ainsi que le type de licence associé. Ces informations essentielles facilitent la révision des suggestions de code et permettent de décider si elles répondent à vos exigences et politiques spécifiques." poursuit l'annonce de l'éditeur.

Bref : n'oubliez jamais de vérifier l'origine des codes snippets ou des libs que vous utilisez. Les conflits inter-licences sont réels et sont parfois très complexes à gérer. 

Post source : https://www.tabnine.com/blog/introducing-provenance-and-attribution-minimize-ip-liability-for-genai-output/

Catégorie actualité: 
Image actualité AMP: 

FOSDEM 2025 : l'événement européen du monde Open Source

C'est LE rendez-vous incontournable du monde Open Source depuis 25 ans. Plus de 7 000 développeurs sont attendus pour l'édition 2025. Plus de 930 sessions et ateliers sont planifiés sur 74 thèmes. L'événement se déroule dans plus de 40 salles de l'université libre de Bruxelles !

Les Developer rooms sont thématiques. Impossible de tout lister, voici quelques tracks à suivre : Android Open Source Project, APIS, Confidential Computing, Containers, Declarative and Minimalistic Computing, Free Java, GCC, Go, HPC, LLVM, Kernel, WebAssembly, Quantique, RISC-V, sécurité, embarqué & automobile.

Quand : les 1er et 2 février 2025 à Bruxelles

Site officiel : https://fosdem.org/2025/

Catégorie actualité: 
Image actualité AMP: 

Gemini Code Assist : Google veut aider les développeurs

C'est un peu la promesse de tous les assistants de codage et de la GenIA : nous aider au quotidien et générer du code pertinent. Google Code Assist peut être utilisé dans les principaux IDE du marché (Visual Studio Code, IntelliJ, PyCharm, etc.). Il supporte plus de 20 langages. Comme les autres solutions, tout passe par le prompt / chat en langage naturel. 

Code Assist utilise les dernières générations de LLM : Gemini 2.0 Flash. Il affiche beaucoup de promesses :

- un flux constat disponible dans son IDE

- un toolkit pour étendre les possibilités

- apporter une qualité de réponse et minimiser la latence

- personnalisation du fonctionnement avec nos propres données

- prise en compte du contexte et du code utilisé

Deux versions sont disponibles :

- Code Assist Standard : complétion du code, génération de code, support des données locales, Firebase, Colab Enterprise, à partir de 22,80 $ / mois ou 19 $ en annuel

- Code Assist Enterprise : pour les entreprises et les équipes, plus de technologies Google supportées, à partir de 54 $

Les tarifs sont globalement plus élevés que ceux de GitHub Copilot. L'outil n'a pas le droit à l'erreur. 

Présentation complète : https://cloud.google.com/products/gemini/code-assist

Catégorie actualité: 
Image actualité AMP: 

ANSSI met en open source son système d'échange de fichiers par diode

L'ANSSI met en open source sa solution de transfert d'information entre 2 réseaux distincts avec des niveaux de sécurité différents via... une diode physique. Ce système a pour nom Eurydice (émetteur unidirectionnel redondant de yottabit pour le dialogue intergiciel avec correction d'erreur). 

A quoi sert Eurydice ? "Pour les utilisateurs, Eurydice propose une interface web intuitive et ergonomique (fonctionnalités d’upload drag-n-drop, visualisation rapide des fichiers, etc.) ainsi qu’une API pour scripter les actions, avec la possibilité d’ajouter des métadonnées supplémentaires aux fichiers transférés. Ce guichet de diodes élaboré par l’ANSSI facilite également la prise en mains des administrateurs en mettant à disposition des fonctionnalités multiples (gestion des comptes utilisateurs, authentification par Kerberos, endpoint de métrics, etc.)." explique la page officielle.

Les deux réseaux fonctionnent chacun de leur côté, le transfert se fait donc physiquement par une diode. Pour assurer ce transfert et ce lien physique, Euridyce utilise Lidi. Lidi permet de copier des flux et des fichiers en TCP ou via Unix sur un lien unidirectionnel. La diode n'est pas obligatoire. Le réseau unidirectionnel par diode a été développé dès les années 1980. Attention, il faut que chaque réseau puisse communiquer, il faut installer un module réseau identique (ou compatible). 

Opswat présente ainsi cette approche : "Une passerelle de sécurité unidirectionnelle est une solution matérielle de cybersécurité qui assure un transfert d'informations unidirectionnel entre deux réseaux. S'appuyant traditionnellement sur une connexion par fibre optique pour assurer des transferts de données unidirectionnels, les diodes de données peuvent rencontrer des problèmes de fiabilité de transmission et de dépassement de données, alors que les passerelles de sécurité unidirectionnelles modernes incluent des mécanismes de livraison assurée pour surmonter ces défis. Les passerelles unidirectionnelles et les diodes de données sont courantes depuis des décennies dans les environnements de haute sécurité, tels que les installations des agences de défense et de renseignement."

Qui dit unidirectionnel, dit une circulation des informations que dans un sens. Il n'est pas possible de faire des transferts dans les 2 sens. Cette approche permet par exemple de transférer des données d'un système critique et sécurité vers un système plus ouvert. On peut assimiler la diode de données comme une valve que l'on ouvre et que l'on ferme. 

Ce principe de direction unique est le fonctionnement de la diode. Une diode est un composant qui fonctionne que dans un unique sens. Il existe de multiples de solutions sur le marché. 

Eurydice est disponible sur GitHub : https://github.com/ANSSI-FR/eurydice. Une API facilite la mise en place de ce réseau et pour réaliser les transferts. 

Catégorie actualité: 
Image actualité AMP: 

Puppet : vers un fork pour contourner les limitations à venir ?

Depuis que l'outil open source Puppet est passé sous le giron de l'éditeur Perforce, la communauté observait. La modification de licence est sans doute l'affront de trop. En effet, les versions modifiées directement par les équipes Perforce ne sont plus intégrées à la version open source. L'accès à ces codes "privés" se fera par un accord spécifique... et ce, même si Perforce maintient la licence Apache 2.

Depuis quelques jours, la communauté s'agite et un fork est de plus en plus évoqué. Pour Antoine Beaupré, Perforce arrête de rendre publique les packages et le code Puppet modifié par Perforce n'est plus disponible publiquement. Selon Beaupré, Perforce encourage une version totalement open source. Source : https://devops.com/perforce-forks-puppet-community-considers-muppet/

La question n'est pas de savoir si un fork de Puppet sera fait mais quand et sous quel nom. Le nom de Muppet pourrait être une des appelations... Le projet OpenPuppetProject a été créé même si aucun code n'est disponible... pour le moment. 

A suivre

Catégorie actualité: 
Image actualité AMP: 

Apache Struts 7 : Jakarta EE, Java 17, sécurité, modernité

Struts est un framework bien connu des développeurs (web) Java. Le framework est disponible en version 7. Cette version est une évolution majeure .

Les évolutions les plus marquantes :

- transition vers Jakarta EE : performances, sécurité, plus moderne que Java EE, namespace jakarta

- Java 17 est la version par défaut de Structs 7

- focus sur la sécurité : les paramètres par défaut se veulent mieux sécurisés, invocation méthode dynamique désactivée par défaut, meilleure protection CSRF (cross-site request forgery)

- meilleure gestion des erreurs des exceptions

- dépréciation des fonctionnalités trop anciennes (voir la release note), retrait de 9 plugins (attention à vérifier leur présence et gérer leur retrait)

Note de version : https://cwiki.apache.org/confluence/display/WW/Version+Notes+7.0.0#VersionNotes7.0.0-Bug

Catégorie actualité: 
Image actualité AMP: 

Installer un SSD NVMe sur sa Raspberry Pi 5

La Raspberry Pi 5 permet d'installer facilement un stockage externe de type SSD NVMe au format M.2 via une HAT dédiée et le port PCIe disponible sur la Pi 5. Sur la Pi 4, il fallait passer par le port USB autorisant le boot car la ligne PCIe nétait pas accessible via un connecteur. 

Matériel nécessaire

- Raspberry Pi 5 avec une carte SD avec Raspberry Pi OS

- HAT PCIe M.2 avec son ruban pour connecter la HAT à la Pi 5

- SSD NVMe format M.2 128 Go (ou plus) 

Coût du matériel (hors Pi 5, écran, clavier, souris) : env. 30 €

Etape 1 : on monte la HAT M.2, on connecte le ruban et on installe la barrette NVMe

Etape 2 : mise à jour 

Dans le Terminal du Pi OS, on met à jour l'OS et le firmware : 

sudo apt update && sudo apt upgrade -y

sudo rpi-eeprom-update puis sudo rpi-eeprom-update -a

La dernière commande permet de mettre à jour le firmware de la carte.

Etape 3 : Raspi-config

Ouvrez rapsi-config (depuis le menu). On va vérifier dans Advanced Option -> Bootload version -> Latest : use the latest version boot ROM software. On valide et on redémarrage pour mettre à jour le firmware et valider la configuration

Etape 4 : NVMe es-tu là ?

La commande ls /dev/nvme permet de vérifier la présence du SSD et qu'il soit bien reconnu par le système. Si ce n'est pas le cas, vérifiez l'installation matérielle et refaite les étapes 2 et 3

Etape 5 : Raspberry Pi Imager

Ouvrez l'outil Pi Imager. Sélectionnez dans l'odre : 

Choose device : Pi 5

Choose OS : Raspberry Pi OS 64 bits

Choose storage : SSD NVMe 128 Go

Cliquez sur NEXT. Pour effacer le contenu du SSD, vous devez confirmer avec votre mot de passe admin / root. L'installation prend environ 15 minutes, selon la rapidité de votre connexion réseau

Avec la dernière version de l'OS, nous n'avons pas besoin de configurer le boot order mais si vous garder une SD sur la Pi, vous devrez le configurer. 

Quand tout est prêt, l'installateur vous invite à retirer la carte SD. Redémarrez.

Etape 6 : configuration de l'OS

La Pi 5 va redémarrer plusieurs fois avant d'afficher la configuration système : nom de la Pi, mot de passe, wifi, etc. Il va automatiquement mettre à jour l'OS et le firmware. Après un dernier redémarrage, votre Pi 5 avec SSD NVMe est prête à être utilisée. 

Quelques éléments de performances

Attention, cette solution ne rivalise pas avec les NVMe USB C / Thunderbolt mais c'est une solution plus pratique que la carte SD et bien plus performante. 

Boot à froid : 22,8s sur la SD, 16,36s sur le SSD NVme

Lecture / écriture aléatoire sur la SD (IOPS) : 4066 / 647

Lecture / écriture aléatoire sur le NVMe (IOPS) : 105 703 / 95 672

Lecture / écriture séquentielle sur la SD (IOPS) : 91 851 / 10 574

Lecture / écriture séquentielle sur le NVMe (IOPS) : 431 157 / 388 361

Le SSD NVMe est incontestablement un avantage et les performances sont largement supérieures. Plusieurs tests montrent des performances multipliées par 3 ou 4 en mo/s.

Si vous faites de l'inférence LLM sur votre Pi, il est vivement conseillé d'utiliser cette configuration ou même en moder serveur.

Catégorie actualité: 
Image actualité AMP: 

Go Survey 2024 H2 : 93 % des dévs sont contents du langage

Que retenir de la dernière étude du monde Go menée en septembre dernier ? 4 points clés sont à retenir :

- 93 % des répondants se disent très contents du langage et de la manière de travailler avec Go

- 70 % utilisent de la GenIA pour créer des assets Go

- le déploiement des API et SDK est simple et rapide

- la maintenance du code existant est LE défi technique (à nuancer)

Deux OS sont les plus utilisés pour coder en Go : Linux et macOS. Windows et WSL arrivent loin derrière. Les IDE de référence sont sans surprises : Visual Studio Code et JetBrains GoLand. Il est intéressant de constanter que 96 % disent déployer les environnements Go sur Linux en cloud ou dans des conteneurs. L'architecture de référence reste x86 (92 %). L'architecture ARM est tout de même présente pour la moitié des répondants. Dans le cas d'un déploiement en Web Assembly, JS est le langage de référence. 

Parmi les autres IDE utilisés : nous trouvons Vim. Les autres éditeurs sont ultra minoritaires. Par contre, l'IDE préfére n'est pas tranché : VS Code est légèrement devant GoLand. 

Les autres outils :

- analyse de codes : gopls, golandcilint

- AWS est le cloud le plus utilisé 

- AWS EKS / EC2 sont les plus utilisés pour les conteneurs

- les LLM / GenIA sont souvent utilisés pour générer du code Go : code complétion, écrire des tests, générer du code depuis une description. ChatGPT, Copilot sont les modèles les plus utilisés

Quels sont les usages de Go ? 75 % disent créer des API et des services RPC, 62 % évoquent créer des CLI, 45 % l'utilisent pour des sites web ou pour créer des frameworks / librairies.

La maintenance du code est le plus grand défi pour les développeurs Go pour 23 % mais 35 % disent que cela n'est pas un défi. Il est à noté que 33 % des répondants au survey ont -2 ans d'expérience en Go. Ce ne sont pas pour autant des débutants en développement. Seuls 11 % sont nouveaux (-2 ans). Ils sont surtout dans des ESN et des entreprises. 19 % travaillent aux USA, 10 % en Allemagne. Seulement 4 % sont en France. 

Catégorie actualité: 
Image actualité AMP: 

Programmez hors série 17 spécial IA est disponible

Pour terminer en beauté 2024, notre hors série IA est disponible dès maintenant. Dans ce numéro, nous vous proposons un panorama très complet de l'IA et de la GenIA :

- éthique et sécurité

- les brevets dans l'IA : une question sensible

- Retour d'expérience 

- Comment la GenIA peut nous aider au quotidien ?

- Utiliser et découvrir LangChain4j

- Apple Intelligence : côté usage et plomberie

- Découvrir le tout nouveau GitLab Duo

- Coder Fibonacci avec ChatGPT !

- Créer une GenIA avec OLLAMA et Go sur une Rapsberry Pi !

- Utiliser la Pi Camera AI

Ce numéro est disponible en kiosque, sur abonnement, en version papier et en PDF : https://www.programmez.com/magazine.php

Catégorie actualité: 
Image actualité AMP: 

MongoDB profite de son événement annuel en France pour présenter sa vision de l'IA

par Joffray Anduze, DG France de MongoDB.

Le succès grandissant de MongoDB dans le secteur de l'IA s'est confirmé lors de son événement MongoDB.local Paris, qui a attiré plus de 1 000 développeurs et experts IT. Très riches en annonces, l'événement a également permis au public de découvrir les dernières innovations technologiques de MongoDB et leur potentiel de transformation. Le public a pu bénéficier des retours d’expérience d’utilisateurs ayant exploité toute la richesse de MongoDB provenant de plus d’une quinzaine de clients de premier plan évoluant sur des secteurs variés (Adeo, Amadeus, Auchan Retail international, Axa, Boulanger, Carrefour, Crédit Agricole Technologies & services, Décathlon, KONE, L’Oreal, Michelin, Monoprix, TotalEnergies). 

Parmi ces témoignages, on peut notamment citer celui du Crédit Agricole Technologies & Services, qui a partagé son expérience de modernisation du SI de Crédit Agricole pour le transformer en un SI modulaire, avec un fort découplage produit. L’équipe a présenté la manière dont elle avait utilisé une base de données MongoDB pour développer un moteur de pilotage unifié, garantissant une cohérence de parcours quel que soit le canal utilisé et facilitant les évolutions de demain.

Démocratiser l'accès à l'intelligence artificielle

Face au constat que la plupart des entreprises peinent encore à concrétiser leurs ambitions en matière d'IA, MongoDB leur propose une stratégie globale d'accompagnement. Elle a identifié les principaux obstacles freinant la mise en œuvre des projets d’IA : la complexité croissante du paysage technologique, le manque de compétences internes et les préoccupations liées à la sécurité et aux performances.

Pour répondre à ces défis, MongoDB a lancé le MongoDB AI Applications Program (MAAP), qui sera disponible en accès anticipé dès juillet. Ce programme apporte aux organisations les architectures de référence nécessaires pour développer leurs applications IA, tout en garantissant l'intégration avec des partenaires de premier plan tels qu’Anthropic, Cohere et Fireworks AI. 

Services professionnels et innovations techniques

L'entreprise renforce son offre avec deux nouveaux services professionnels stratégiques. Le premier aide les clients à identifier leurs opportunités prioritaires en matière d'IA, tandis que le second, l'AI Accelerator, accompagne le développement des projets de l'idée à la production.

« L’accueil plus que positif du public à l'annonce de l’intégration d'Atlas Vector Search et d’Atlas Edge Server dans MongoDB Community Edition, témoignent de l'enthousiasme des développeurs », commenteJoffray Anduze, DG France de MongoDB« Cela témoigne de l'appréciation des développeurs pour notre engagement continu à enrichir notre plateforme, pour leur permettre de développer des applications modernes plus rapidement et efficacement, en exploitant pleinement les capacités de l'IA. »

Une plateforme unifiée pour l'ère de l'IA 

Proposant une architecture unique pour l'ensemble de la stack IA, MongoDB s'impose comme la référence pour le RAG (Retrieval Augmented Generation) et les systèmes d'agents. La plateforme permet en effet d'unifier les différents types de données - sources, embeddings vectoriels, métadonnées et données générées - au sein d'un même environnement. 

De plus, d'importantes évolutions techniques sont annoncées pour la fin d'année, notamment l'intégration de la recherche plein texte et vectorielle au sein de MongoDB Community Edition. Ces fonctionnalités faciliteront l'expérimentation et le développement d'applications IA, y compris pour les déploiements edge et on-premise. 

Optimisation des performances et des coûts 

Pour répondre aux enjeux d'optimisation, MongoDB étend ses nœuds dédiés Atlas Search aux trois principaux fournisseurs cloud. Cette fonctionnalité, initialement disponible sur AWS, permet d'isoler les charges de travail des recherches vectorielles sans isoler les données, offrant une gestion plus efficace des ressources via l'Atlas CLI ou l'Infrastructure-as-Code.

Au-delà de l'IA : traitement temps réel et analyse prédictive 

Si l'IA était au cœur de l'événement, MongoDB renforce également ses capacités dans d'autres domaines essentiels. La disponibilité générale d'Atlas Stream Processing, la preview d'Atlas Edge Server et les améliorations de performance pour les séries temporelles dans MongoDB 8.0 permettent de répondre à des besoins variés, de la détection de fraude à la maintenance prédictive.

Vision stratégique et écosystème MongoDB positionne sa plateforme, son réseau de partenaires et ses solutions sectorielles comme des atouts majeurs dans un marché en pleine mutation. Cette approche vise tant les organisations qui débutent dans l'IA générative que celles déjà engagées dans cette transformation.

En simplifiant constamment le travail avec les données, MongoDB poursuit sa mission d'accompagnement des développeurs, de l'expérimentation à l'impact concret. L'entreprise démontre ainsi sa capacité à transformer "le bruit de l'IA" en solutions tangibles pour ses clients.

Catégorie actualité: 
Image actualité AMP: 

PyCharm : 11 (bonnes) raisons d'utiliser dbt Core

L'équipe PyCharm veut nous aider à mieux coder en Python et à optimiser nos codes et couches techniques. Un post mérite une lecture attentive : les bonnes raisons pour utiliser dbt Core dans PyCharm. dbt Core est un frameworks de transformation des données. Il ne fonctionne pas comme un ETL classique, il se concentre uniquement sur le T (T pour transformation). Le E correspond à extraire et le L à chargement. Le framework permet de se connecter à son data warehouse (ou tout autre source de données) et nous aide à préparer les données pour être ensuite transformer pour traitement et analyse. 

Les arguments pour son utilisation dans les projets PyCharm (version Professional) sont :

- modularité et réutilisation du code

- versioning des projets dbt dans Git / GitHub

- tests

- documentation : dbt génère la documentation pour les modèls de données

- l'IDE permet une intégration fluide de dbt

- espace de travail unifié pour les bases de données et le framework

- intégration depuis l'IDE entre Git et dbt

- autocomplétion des fichers yml et SQL

- historique des modifications

- assistance IA

- explorateur de projet dbt complet

Le post et les démos : https://blog.jetbrains.com/pycharm/2024/12/dbt/

Catégorie actualité: 
Image actualité AMP: 
❌