Comparer
Safetensors ou ONNX : poids ou graphes de modèle
Safetensors stocke des tenseurs nommés. ONNX représente un modèle avec graphe de calcul, entrées, sorties et versions d’opérateurs.
Quel format choisir ?
Envisagez Safetensors pour charger des poids dans un modèle compatible, ou ONNX pour transmettre un graphe à un moteur compatible.
Adapté pour Safetensors
Stocker et distribuer des poids tensoriels d’apprentissage automatique · Charger des poids entre frameworks compatibles
- Échanger des tenseurs et métadonnées de base plutôt que des objets Python arbitraires
- Flux qui inspectent et chargent des tenseurs sélectionnés
Adapté pour ONNX
Échanger graphes de calcul et poids ML avec des runtimes compatibles · Transférer des modèles entre frameworks d’entraînement et environnements d’inférence
- Inférence sur un runtime compatible avec les opérateurs et l’opset du modèle
- Échange d’un graphe incluant entrées sorties et types
Informations générales
| Élément | Safetensors | ONNX |
|---|---|---|
| Extension | .safetensors | .onnx |
| Type MIME | application/octet-stream | application/octet-stream |
| Usages courants | Stocker et distribuer des poids tensoriels d’apprentissage automatique · Charger des poids entre frameworks compatibles | Échanger graphes de calcul et poids ML avec des runtimes compatibles · Transférer des modèles entre frameworks d’entraînement et environnements d’inférence |
| Comment ouvrir | Utilisez une bibliothèque ou un outil de modèles compatible avec Safetensors. Les outils compatibles peuvent afficher noms, types et formes avant de charger tous les poids sur un appareil. Un en-tête JSON ne signifie pas que le fichier entier est un document texte JSON. | Chargez-le avec ONNX checker ou un runtime d’inférence compatible. Avant déploiement, vérifiez versions IR/opset, opérateurs, types et formes d’entrée/sortie et support du runtime ; comparez les sorties au modèle source sur des entrées représentatives. |
| Exporter ou convertir | Enregistrez les poids avec une API prise en charge par le framework. La conversion d’une entrée basée sur pickle peut désérialiser cette entrée ; ne chargez pas sans précaution un fichier non fiable. Après conversion, comparez noms, formes, types, nombre d’éléments et sorties du modèle. | Exportez avec l’exporteur ONNX du framework source puis validez la structure avec ONNX checker. Une conversion réussie ne garantit ni équivalence numérique ni exécution sur l’appareil cible. Avec des données externes, conservez le modèle et tous les fichiers référencés dans le même lot de distribution. |
Choisir selon l’usage
Échanger des tenseurs et métadonnées de base plutôt que des objets Python arbitraires
Stocker et distribuer des poids tensoriels d’apprentissage automatique · Charger des poids entre frameworks compatibles
SafetensorsFlux qui inspectent et chargent des tenseurs sélectionnés
Stocker et distribuer des poids tensoriels d’apprentissage automatique · Charger des poids entre frameworks compatibles
SafetensorsInférence sur un runtime compatible avec les opérateurs et l’opset du modèle
Échanger graphes de calcul et poids ML avec des runtimes compatibles · Transférer des modèles entre frameworks d’entraînement et environnements d’inférence
ONNXÉchange d’un graphe incluant entrées sorties et types
Échanger graphes de calcul et poids ML avec des runtimes compatibles · Transférer des modèles entre frameworks d’entraînement et environnements d’inférence
ONNXPoint clé 1
Safetensors seul ne définit ni l’architecture du modèle ni le code d’inférence.
En savoir plus sur les différencesPoint clé 2
ONNX peut contenir des tenseurs d’initialisation et référencer des données externes.
En savoir plus sur les différencesEn savoir plus sur les différences
Ces formats ne sont pas directement interchangeables. Créer un ONNX à partir de poids exige la définition du modèle et un export pris en charge. Renommer l’extension ne crée pas de graphe.
- L’en-tête Safetensors décrit noms, dtype, shape et plages de données. Vérifiez séparément les index de fragments, paramètres, tokeniseurs et autres dépendances.
- Vérifiez IR/opset, opérateurs et types ONNX avec le moteur et conservez les références aux poids externes. Comparez les sorties avec le même prétraitement et des entrées représentatives ; les contrôles structurels ne garantissent ni précision ni vitesse.
Questions fréquentes
Safetensors est-il fiable quelle que soit sa source ?
Non. Il évite la reconstruction d’objets arbitraires par pickle, mais ne garantit pas la sûreté de la source, du chargeur, des dépendances ou du modèle.