Transformers documentation
ExecuTorch
ExecuTorch
ExecuTorch é uma solução de ponta a ponta para habilitar a capacidade de inferência em dispositivos móveis e de borda, incluindo wearables, dispositivos embarcados e microcontroladores. Faz parte do ecossistema do PyTorch e suporta o deploy de modelos do PyTorch, com foco em portabilidade, produtividade e desempenho.
O ExecuTorch introduz pontos de entrada bem definidos para realizar otimizações específicas de modelo, dispositivo e/ou caso de uso, como delegação de backend, transformações de compilador definidas pelo usuário, planejamento de memória e muito mais. O primeiro passo para preparar um modelo do PyTorch para execução em um dispositivo de borda usando o ExecuTorch é exportar o modelo. Isso é feito por meio do uso de uma API do PyTorch chamada torch.export.
Integração com o ExecuTorch
Um ponto de integração está sendo desenvolvido para garantir que o 🤗 Transformers possa ser exportado usando torch.export. O objetivo dessa integração não é apenas habilitar a exportação, mas também garantir que o artefato exportado possa ser posteriormente reduzido e otimizado para executar de forma eficiente no ExecuTorch, especialmente para casos de uso em dispositivos móveis e na borda.
classe transformers.TorchExportableModuleWithStaticCache
< source >( model: PreTrainedModelbatch_size: int | None = Nonemax_cache_len: int | None = Nonedevice: typing.Optional[torch.device] = None )
Um módulo de receita projetado para tornar um PreTrainedModel exportável com torch.export,
especificamente para LM apenas de decodificador para StaticCache. Este módulo garante que o
modelo exportado seja compatível com o rebaixamento e a execução adicionais no ExecuTorch.
Nota:
Esta classe foi projetada especificamente para suportar o processo de exportação usando torch.export de forma a garantir que o modelo possa ser reduzido e executado com eficiência no ExecuTorch.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_position: typing.Optional[torch.Tensor] = None ) → torch.Tensor
Parâmetros
- input_ids (
torch.Tensor) — Tensor que representa o id do token de entrada atual para o módulo. - inputs_embeds (
torch.Tensor) — Tensor que representa os embeddings de entrada atuais para o módulo. - cache_position (
torch.Tensor) — Tensor que representa a posição atual da entrada no cache.
Retorna
torch.Tensor
Saída de logits do modelo.
Passada adiante do módulo, compatível com o runtime ExecuTorch.
Este adaptador de encaminhamento tem dois propósitos principais:
Tornando o modelo compatível com
torch.export: O adaptador oculta objetos não suportados, como oCache, das entradas e saídas do grafo, permitindo que o modelo seja exportado usandotorch.exportsem encontrar problemas.Garantindo compatibilidade com o runtime
ExecuTorch: O adaptador corresponde à assinatura do forward do modelo àquela emexecutorch/extension/llm/runner, garantindo que o modelo exportado possa ser executado noExecuTorchsem necessidade de configuração adicional.
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)
Parâmetros
- model (
PreTrainedModel) — O modelo pré-treinado a ser exportado. - example_input_ids (
Optional[torch.Tensor]) — ID de token de entrada de exemplo usado pelotorch.export. - example_cache_position (
Optional[torch.Tensor]) — Posição atual de cache de exemplo usada pelotorch.export. - dynamic_shapes(
Optional[dict]) — Formas dinâmicas usadas pelotorch.export. - strict(
Optional[bool]) — Sinalizador para instruir otorch.exporta usar odynamo.
Retorna
Programa exportado (torch.export.ExportedProgram)
O programa exportado gerado via torch.export.
Converta um PreTrainedModel em um módulo exportável e exporte-o usando torch.export,
garantindo que o modelo exportado seja compatível com ExecuTorch.