Transformers documentation
ExecuTorch
ExecuTorch
ExecuTorch est une solution de bout en bout permettant d’activer les capacités d’inférence sur appareil sur les dispositifs mobiles et de bord, y compris les objets connectés, les dispositifs embarqués et les microcontrôleurs. Il fait partie de l’écosystème PyTorch et prend en charge le déploiement de modèles PyTorch, avec un accent mis sur la portabilité, la productivité et les performances.
ExecuTorch introduit des points d’entrée bien définis pour effectuer des optimisations spécifiques au modèle, à l’appareil et/ou au cas d’usage, telles que la délégation au backend, les transformations de compilateur définies par l’utilisateur, la planification de la mémoire, et bien d’autres. La première étape pour préparer un modèle PyTorch à l’exécution sur un appareil edge à l’aide d’ExecuTorch consiste à exporter le modèle. Cela se fait à l’aide d’une API PyTorch nommée torch.export.
Intégration d'ExecuTorch
Un point d’intégration est en cours de développement afin de garantir que 🤗 Transformers peut être exporté à l’aide de torch.export. L’objectif de cette intégration est non seulement de permettre l’export, mais aussi de s’assurer que l’artefact exporté peut être ultérieurement abaissé et optimisé pour s’exécuter efficacement dans ExecuTorch, en particulier pour les cas d’usage mobiles et sur le bord (edge).
classe transformers.TorchExportableModuleWithStaticCache
< source >( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )
Un module de recette conçu pour rendre un PreTrainedModel exportable avec torch.export,
spécifiquement pour les LM uniquement décodeurs vers StaticCache. Ce module garantit que le
modèle exporté est compatible avec une réduction et une exécution ultérieures dans ExecuTorch.
Note :
Cette classe est spécifiquement conçue pour prendre en charge le processus d'exportation à l'aide de torch.export de manière à garantir que le modèle peut être ultérieurement abaissé et exécuté efficacement dans ExecuTorch.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Paramètres
- input_ids (
torch.Tensor) — Tenseur représentant l'identifiant du jeton d'entrée actuel pour le module. - inputs_embeds (
torch.Tensor) — Tenseur représentant les embeddings d'entrée actuels du module. - cache_position (
torch.Tensor) — Tenseur représentant la position actuelle de l'entrée dans le cache.
Retourne
torch.Tensor
Sortie des logits du modèle.
Passage avant du module, compatible avec le runtime ExecuTorch.
Cet adaptateur avant remplit deux fonctions principales :
Rendre le modèle compatible avec
torch.export: L'adaptateur masque les objets non pris en charge, tels queCache, des entrées et sorties du graphe, permettant ainsi d'exporter le modèle à l'aide detorch.exportsans rencontrer de problèmes.Garantir la compatibilité avec le runtime
ExecuTorch: L’adaptateur aligne la signature de la méthode forward du modèle sur celle présente dansexecutorch/extension/llm/runner, afin de s’assurer que le modèle exporté peut être exécuté dansExecuTorchsans configuration supplémentaire.
transformers.convert_and_export_with_cache
< source >( model: PreTrainedModelexample_input_ids: typing.Optional[torch.Tensor] = Noneexample_cache_position: typing.Optional[torch.Tensor] = Nonedynamic_shapes: dict | None = Nonestrict: bool | None = None ) → Exported program (torch.export.ExportedProgram)
Paramètres
- model (
PreTrainedModel) — Le modèle pré-entraîné à exporter. - example_input_ids (
Optional[torch.Tensor]) — ID de jeton d’entrée d’exemple utilisé partorch.export. - example_cache_position (
Optional[torch.Tensor]) — Position actuelle du cache utilisée partorch.export. - dynamic_shapes(
Optional[dict]) — Formes dynamiques utilisées partorch.export. - strict(
Optional[bool]) — Indicate àtorch.exportd’utiliserdynamo.
Retourne
Programme exporté (torch.export.ExportedProgram)
Le programme exporté généré via torch.export.
Convertir un PreTrainedModel en module exportable et l’exporter à l’aide de torch.export,
en veillant à ce que le modèle exporté soit compatible avec ExecuTorch.