Qu’est que SafeTensors ?


Qu’est-ce qu’un « tenseur » ?

Un « tenseur » est essentiellement une manière mathématique de représenter des données sous forme de tableaux ou de matrices à plusieurs dimensions. On peut penser à un tenseur comme une matrice (boîte) qui peut contenir en plusieurs dimensions des nombres, ou d’autre type de données. Cependant, ces données sont organisées de manière particulière pour que certains programmes puissent les comprendre et effectuer des calculs. Les tenseurs sont un élément clé dans les calculs mathématiques qui se produisent dans les ordinateurs lors de l’apprentissage automatique et d’autres tâches scientifiques.

Qu’est-ce que la sérialisation de tenseur

« Sérialiser » signifie simplement transformer quelque chose (comme un tenseur) en une forme spéciale que l’on peut facilement enregistrer sur un disque dur ou envoyer sur Internet. C’est un peu comme prendre une photo de quelque chose pour la garder en mémoire. En Python, cela signifie généralement convertir des données en un format qui peut être stocké dans un fichier ou transmis entre différents programmes. De cette façon, nous pouvons sauvegarder des modèles d’apprentissage automatique, qui sont essentiellement de gros ensembles de tenseurs, pour pouvoir les utiliser plus tard ou les partager avec d’autres personnes.

Qu’apporte SafeTensors

SafeTensors est un format de données sérialisées pour le stockage sur notre disque dur conçu pour répondre aux besoins de sécurité, de gestion de la mémoire et de flexibilité dans le domaine de l’apprentissage automatique et de l’apprentissage profond. Ce format a été créé pour offrir une alternative aux formats de stockage de données couramment utilisées comme « pickle » de PyTorch, HDF5 de Tensorflow, et d’autres. L’objectif principal de SafeTensors est de garantir la sécurité des données en empêchant l’exécution de code arbitraire à partir de fichiers téléchargés aléatoirement.

En plus de sa sécurité renforcée, SafeTensors offre une gestion efficace de la mémoire grâce à la prise en charge du « zero-copy », ce qui signifie que la lecture du fichier ne nécessite pas une utilisation excessive de la mémoire par rapport au fichier d’origine. De plus, il prend en charge le « lazy loading », permettant aux utilisateurs d’inspecter le contenu du fichier sans tout charger en mémoire, ce qui est particulièrement précieux dans les environnements de calcul distribué.

SafeTensors offre également un contrôle de la disposition des données, garantissant un accès rapide aux ténors individuels, ce qui peut améliorer les performances des applications d’apprentissage automatique. De plus, il prend en charge nativement le format bfloat16, répondant ainsi aux besoins croissants de l’industrie de l’apprentissage automatique.

Bien que SafeTensors puisse stocker plus que des ténors purs, il ne permet pas le stockage de code personnalisé dans le format. Cependant, il offre une alternative prometteuse aux formats existants pour ceux qui recherchent une solution sécurisée, efficace en termes de mémoire et adaptée à la gestion de grands volumes de données dans le domaine de l’apprentissage automatique.