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.23.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ExecuTorch

ExecuTorch adalah runtime ringan untuk inferensi model pada perangkat edge. Ekspor model PyTorch ke format portabel, ahead-of-time. Runtime C++ yang kecil merencanakan memori dan mendistribusikan operasi ke backend yang spesifik perangkat keras. Perilaku eksekusi dan memori diketahui sebelum model berjalan di perangkat, sehingga overhead inferensi rendah.

Ekspor model Transformers dengan pustaka optimum-executorch.

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

Integrasi Transformers

Proses ekspor menggunakan beberapa komponen Transformers.

  1. from_pretrained() memuat bobot model dalam format safetensors.
  2. Optimum menerapkan optimasi graf dan menjalankan torch.export untuk membuat file model.pte yang menargetkan backend perangkat keras Anda.
  3. AutoTokenizer atau AutoProcessor memuat file tokenizer atau processor dan dijalankan selama inferensi.
  4. Saat runtime, kelas runner C++ menjalankan file .pte pada runtime 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;
}

Sumber daya

Update on GitHub