Je viens de découvrir que les documents PyTorch exposent quelque chose qui s'appelle Torch Scripts . Cependant, je ne sais pas:
Torch Script est l'un des deux modes d'utilisation de PyTorch juste à temps compilateur , l'autre étant traçage . Les avantages sont expliqués dans la documentation liée:
Torch Script est un moyen de créer des modèles sérialisables et optimisables à partir du code PyTorch. Tout code écrit dans Torch Script peut être enregistré à partir de votre processus Python et chargé dans un processus où il n'y a pas de dépendance Python.
La citation ci-dessus est en fait vraie à la fois pour le script et le traçage. Alors
En ce qui concerne spécifiquement Torch Script, par rapport au traçage, il s'agit d'un sous-ensemble de Python, spécifié en détail ici , qui, une fois respecté, peut être compilé par PyTorch. Il est plus laborieux d'écrire des modules Torch Script au lieu de suivre les sous-classes nn.Module
Normales, mais cela permet certaines fonctionnalités supplémentaires par rapport au suivi, notamment le contrôle de flux comme les instructions if
ou for
boucles. Le suivi traite ce contrôle de flux comme "constant" - en d'autres termes, si vous avez une clause if model.training
Dans votre module et que vous la tracez avec training=True
, Il se comportera toujours de cette façon, même si vous changez la variable training
à False
plus tard.
Pour répondre à votre première question, vous avez besoin d'utiliser jit
si vous souhaitez déployer vos modèles en dehors de Python et sinon vous devrait utiliser jit
si vous souhaitez obtenir des performances d'exécution au prix d'efforts de développement supplémentaires (car tous les modèles ne peuvent pas être créés simplement) compatible avec jit
). En particulier, vous devez utiliser Torch Script si votre code ne peut pas être jit
ed avec le traçage seul car il repose sur certaines fonctionnalités telles que les instructions if
. Pour une ergonomie maximale, vous voudrez probablement mélanger les deux au cas par cas.
Enfin, pour comment ils doivent être utilisés, veuillez vous référer à tous les liens de documentation et de tutoriel.