Transformers documentation

ExecuTorch

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ExecuTorch

ExecuTorch é um runtime leve para inferência de modelos em dispositivos de borda. Ele exporta um modelo do PyTorch para um formato portátil e de compilação antecipada (ahead-of-time). Um pequeno runtime em C++ planeja a memória e despacha operações para backends específicos de hardware. O comportamento de execução e de memória é conhecido antes de o modelo ser executado no dispositivo, o que mantém a sobrecarga de inferência baixa.

Exporte um modelo do Transformers com a biblioteca optimum-executorch.

CLI
Python
optimum-cli export executorch \
    --model "HuggingFaceTB/SmolLM2-135M-Instruct" \
    --task "text-generation" \
    --recipe "xnnpack" \
    --output_dir="./smollm2_exported"

Integração com Transformers

O processo de exportação utiliza vários componentes do Transformers.

  1. from_pretrained() carrega os pesos do modelo no formato safetensors.
  2. O Optimum aplica otimizações de grafo e executa torch.export para criar um arquivo model.pte direcionado ao seu backend de hardware.
  3. AutoTokenizer ou AutoProcessor carrega os arquivos do tokenizer ou do processor e é executado durante a inferência.
  4. Em tempo de execução, uma classe executadora em C++ executa o arquivo .pte no runtime do ExecuTorch.
#include <executorch/extension/llm/runner/text_llm_runner.h>

using namespace executorch::extension::llm;

int main() {
  // Load tokenizer and create runner
  auto tokenizer = load_tokenizer("path/to/tokenizer.json", nullptr, std::nullopt, 0, 0);
  auto runner = create_text_llm_runner("path/to/model.pte", std::move(tokenizer));

  // Load the model
  runner->load();

  // Configure generation
  GenerationConfig config;
  config.max_new_tokens = 100;
  config.temperature = 0.8f;

  // Generate text with streaming output
  runner->generate("The capital of France is", config,
    [](const std::string& token) { std::cout << token << std::flush; },
    nullptr);

  return 0;
}

Recursos

Update on GitHub