Connexion Abonnez-vous

On a testé OpenZL, le modèle de compression de Meta : résultats et limitations

Allez, on se tasse !

On a testé OpenZL, le modèle de compression de Meta : résultats et limitations

Il y a trois semaines, Meta annonçait un nouveau modèle de compression en open source. Nous l’avons installé sur une de nos machines afin de tester ses possibilités sur différents types de fichiers, au-delà des tests de Meta. Nous avons découvert quelques limitations au passage.

Le 28 octobre à 11h04

Pour nos tests, nous utilisons une machine virtuelle avec Ubuntu Server 24.02 LTS (SSD dédié, 24 cœurs CPU et 56 Go de mémoire) sur notre serveur Dell PowerEdgeT630 avec Proxmox.

Installation d’OpenZL et premiers tours de piste

L’installation n’est vraiment pas compliquée et ne nécessite que trois lignes de code.

git clone https://github.com/facebook/openzl.git
cd openzl
make

La première ligne va créer un répertoire openzl et y copier le contenu du dépôt GitHub d’OpenZL de Meta (Facebook). La deuxième ligne nous permet d’aller dans ce répertoire, la troisième de lancer la compilation d’OpenZL. C’est tout !

Le programme s’appelle « zli » et on peut l’appeler, dans notre cas, via cette commande : « /home/gathor/openzl-repo/cachedObjs/*/zli ». Par exemple, pour connaitre la version de l’algorithme : « /home/gathor/openzl-repo/cachedObjs/*/zli --version ». Pour simplifier, nous garderons simplement la commande zli pour la suite de cet article.

Le fonctionnement classique de zli est le suivant : « zli <command> [options] < args> ». Les commandes possibles sont compress, decompress, train, benchmark, etc. On peut aussi préciser un nom de fichier de sortie avec -o, un profil avec -p, etc. On peut utiliser « zli --help » pour avoir tous les détails.

Sur sao, OpenZL explose bien la concurrence

Premier test : vérifier les allégations de Meta sur le niveau de compression des données sao. Il faut d’abord récupérer le corpus silesia et ensuite extraire le fichier sao. Deux lignes de commandes plus tard, c’est fait.

Nous lançons dans la foulée trois tests de compression avec zli (profil sao), xz avec le niveau 9 de compression et zstd avec le niveau 3 (time permet de récupérer le temps nécessaire au traitement de la commande) pour répéter les tests de Meta.

curl -L -o silesia.zip http://sun.aei.polsl.pl/~sdeor/corpus/silesia.zip
python3 -c "import zipfile; zipfile.ZipFile('silesia.zip').extract('sao', '')"
time zli compress sao -o sao.ozl -p sao -f
time xz - 9 -k sao -f
time zstd - 3 -k sao -o sao.zst -f

Nous arrivons bien à un ratio de 2,06, exactement ce qu’annonce Meta. Même chose pour xz avec 1,64x et zstd avec 1,31x. xz est déjà à son niveau maximum de compression, mais pas zstd qui peut monter bien plus haut. Avec un niveau de 22, cela donne un ratio de compression de 1,45x (mais avec un temps de traitement beaucoup plus long), comme on peut le voir dans le graphique ci-dessous.

Passons maintenant aux tests maison !

Il reste 77% de l'article à découvrir.

Déjà abonné ? Se connecter

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (7)

votre avatar
Du coup, le seul véritable intérêt serait plutôt au niveau de la rapidité de l'algorithme, plus que dans ses taux de compression.

Mais cela vient aussi en contre partie que, potentiellement, la compression peut échouer. Un algo de compression qui peut échouer ainsi, cela n'inspire pas vraiment confiance pour l'automatisation (et je pense qu'Amazon ne viendra pas me contredire :mrgreen:)

@SébastienGavois as-tu regardé aussi le temps de décompression ? Et est-ce que le fichier décompressé est bien identique bit à bit au fichier qui a été compressé ? (je pense notamment aux CSV ^^).
votre avatar
La décompression donne bien les mêmes fichiers, oui. J’ai par contre pas gardé les temps de décompression, mais je peux relancer la batterie de tests si besoin.
Edit : mais j’aurais certainement besoin de passer par un stockage en ram pour plus de précision et ne pas être SSD limited pour être certain des perfs.
votre avatar
+1 pour la question
votre avatar
Je ne connaissais pas SAO, donc je suis allé sur wikipédia :
- SAO est un catalogue d'étoiles réalisé par le Smithsonian Astrophysical Observatory en 1966
- Ce jeu de données est un des jeux utilisés par Silesia Corpus. C'est un corpus créé pour tester les algorithmes de compression sans perte. Les autres jeux sont par exemple l'exécutable de Mozilla 1.0, le code source de Samba 2.2.3, etc.
en.wikipedia.org Wikipedia
votre avatar
Y-a-t-il dans ces jeu de tests un fichier de données aléatoires (comme une clé ssh) qui permet de comparer la performance brute d'un outil de compression (sans perte) sans qu'il puisse appliquer un profil (type texte, image, etc) ?
votre avatar
Arf, j'avais pas lu les commentaires... idem du coup, j'ai ajouté les sources que j'ai trouvées à partir du contenu de l'article.
votre avatar
sao = SAO format from the Silesia corpus
Faut pas mal avancer dans l'article pour enfin voir ce que signifie ce "sao" et/ou tenter la bonne recherche sur gogole dans "le bon contexte" et avoir l'explication.
Silesia compression corpus qui mène à SAO Star Catalog

On a testé OpenZL, le modèle de compression de Meta : résultats et limitations

  • Installation d’OpenZL et premiers tours de piste

  • Sur sao, OpenZL explose bien la concurrence

  • Un algorithme, une dizaine de profils de compression

  • 10 jeux de données et 8 algorithmes

  • OpenZL est tatillon : 500 Mo maximum et des CSV « propres »

  • OpenZL vs les autres algorithmes de compression

  • Graphiques et données brutes

  • Quid du profil personnalisé ?

Fermer