Transformers documentation
ExecuTorch
ExecuTorch
ExecuTorch — это комплексное решение для обеспечения возможностей инференса на устройстве на мобильных и периферийных устройствах, включая носимые устройства, встраиваемые системы и микроконтроллеры. Оно входит в экосистему PyTorch и поддерживает развертывание моделей PyTorch с акцентом на переносимость, продуктивность и производительность.
ExecuTorch предлагает чётко определённые точки входа для выполнения оптимизаций, специфичных для модели, устройства и/или сценария использования, таких как делегирование бэкенду, пользовательские преобразования компилятора, планирование памяти и другие. Первый шаг в подготовке модели PyTorch к выполнению на периферийном устройстве с помощью ExecuTorch — экспорт модели. Это достигается с помощью API PyTorch torch.export.
Интеграция с ExecuTorch
В настоящее время разрабатывается точка интеграции, чтобы обеспечить возможность экспорта 🤗 Transformers с помощью torch.export. Цель этой интеграции состоит не только в обеспечении экспорта, но и в том, чтобы гарантировать, что экспортированный артефакт может быть дополнительно понижен и оптимизирован для эффективного выполнения в ExecuTorch, особенно в сценариях использования на мобильных устройствах и на периферии.
класс transformers.TorchExportableModuleWithStaticCache
< source >( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )
Модуль рецепта, предназначенный для того, чтобы сделать PreTrainedModel экспортируемым с помощью torch.export,
в частности, для decoder-only LM в StaticCache. Этот модуль обеспечивает
совместимость экспортированной модели с дальнейшим понижением и выполнением в ExecuTorch.
Note:
Этот класс специально разработан для поддержки процесса экспорта с использованием torch.export таким образом, чтобы гарантировать дальнейшее понижение модели и её эффективное выполнение в ExecuTorch.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Параметры
- input_ids (
torch.Tensor) — тензор, представляющий идентификатор текущего входного токена для модуля. - inputs_embeds (
torch.Tensor) — тензор, представляющий текущие входные эмбеддинги для модуля. - cache_position (
torch.Tensor) — тензор, представляющий текущую позицию входа в кэше.
Возвращает
torch.Tensor
Вывод logits из модели.
Прямой проход модуля, совместимый с рантаймом ExecuTorch.
Этот адаптер прямого прохода служит двум основным целям:
Совместимость модели с
torch.export: Адаптер скрывает неподдерживаемые объекты, такие какCache, от входных и выходных данных графа, что позволяет экспортировать модель с помощьюtorch.exportбез возникновения проблем.Обеспечение совместимости с рантаймом
ExecuTorch: Адаптер сопоставляет сигнатуру forward модели с сигнатурой вexecutorch/extension/llm/runner, что гарантирует возможность запуска экспортированной модели вExecuTorchбез дополнительной настройки.
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)
Параметры
- model (
PreTrainedModel) — Предобученная модель, подлежащая экспорту. - example_input_ids (
Optional[torch.Tensor]) — Пример входного идентификатора токена, используемогоtorch.export. - example_cache_position (
Optional[torch.Tensor]) — Пример текущего положения кэша, используемогоtorch.export. - dynamic_shapes(
Optional[dict]) — Динамические формы, используемые вtorch.export. - strict(
Optional[bool]) — Флаг, указывающийtorch.exportиспользоватьdynamo.
Возвращает
Экспортированная программа (torch.export.ExportedProgram)
Экспортированная программа, сгенерированная с помощью torch.export.
Преобразуйте PreTrainedModel в экспортируемый модуль и экспортируйте его с помощью torch.export,
убедившись, что экспортированная модель совместима с ExecuTorch.