# ExecuTorch

[`ExecuTorch`](https://github.com/pytorch/executorch), giyilebilir cihazlar, gömülü cihazlar ve mikrodenetleyiciler dahil olmak üzere mobil ve kenar cihazlarında cihaz üzerinde çıkarım yeteneklerini mümkün kılan uçtan uca bir çözümdür. PyTorch ekosisteminin bir parçasıdır ve taşınabilirlik, verimlilik ve performans odaklı olarak PyTorch modellerinin dağıtımını destekler.

ExecuTorch, backend devri, kullanıcı tanımlı derleyici dönüşümleri ve bellek planlaması gibi model, cihaz ve/veya kullanım senaryosuna özgü optimizasyonları gerçekleştirmek için iyi tanımlanmış giriş noktaları sunar. ExecuTorch kullanarak bir PyTorch modelini kenar cihazda çalıştırılmaya hazırlamanın ilk adımı, modeli dışa aktarmaktır. Bu, [`torch.export`](https://pytorch.org/docs/stable/export.html) adlı PyTorch API’sinin kullanılmasıyla sağlanır.

## ExecuTorch Entegrasyonu[[transformers.TorchExportableModuleWithStaticCache]]

🤗 Transformers'ın `torch.export` kullanılarak dışa aktarılabilmesini sağlamak için bir entegrasyon noktası geliştirilmektedir. Bu entegrasyonun amacı yalnızca dışa aktarmayı mümkün kılmak değil, aynı zamanda dışa aktarılan ürünün `ExecuTorch` içinde verimli bir şekilde çalışmak üzere daha da indirgenip optimize edilebilmesini, özellikle mobil ve kenar (edge) kullanım senaryoları için, garanti altına almaktır.

#### transformers.TorchExportableModuleWithStaticCache[[transformers.TorchExportableModuleWithStaticCache]]

```python
transformers.TorchExportableModuleWithStaticCache(model: PreTrainedModel, batch_size: int | None = None, max_cache_len: int | None = None, device: typing.Optional[torch.device] = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/executorch.py#L445)

`PreTrainedModel`'in `torch.export` ile dışa aktarılabilir hale getirilmesini sağlamak üzere tasarlanmış bir tarife modülü; özellikle yalnızca çözücü (decoder-only) LM'ler için `StaticCache`'e yönelik. Bu modül, dışa aktarılan modelin `ExecuTorch` içindeki ileri düzey indirgeme (lowering) ve çalıştırma ile uyumlu olmasını sağlar.

Not: Bu sınıf, modelin `ExecuTorch` içinde daha da indirgenip verimli bir şekilde çalıştırılmasını sağlayacak şekilde, `torch.export` kullanılarak dışa aktarma sürecini desteklemek için özellikle tasarlanmıştır.

#### forward[[transformers.TorchExportableModuleWithStaticCache.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, cache_position: typing.Optional[torch.Tensor] = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/executorch.py#L540)

**Parametreler:**

input_ids (`torch.Tensor`) : Modüle giren mevcut girdi token kimliğini temsil eden Tensor.

inputs_embeds (`torch.Tensor`) : Modüle giren mevcut giriş gömme değerlerini temsil eden Tensor.

cache_position (`torch.Tensor`) : Önbellekteki mevcut giriş konumunu temsil eden Tensor.

**Dönüş:** `torch.Tensor`

Modelden gelen Logits çıktısı.

ExecuTorch çalışma zamanı ile uyumlu olan modülün ileri geçişi.

Bu ileri yönlü adaptörün iki temel amacı vardır:

1. **Modelin `torch.export` ile Uyumlu Hale Getirilmesi**: Adaptör, `Cache` gibi desteklenmeyen nesneleri grafik girdilerinden ve çıktılarından gizleyerek, modelin `torch.export` kullanılarak sorunsuz bir şekilde dışa aktarılmasını sağlar.

2. **`ExecuTorch` çalışma zamanıyla uyumluluğu sağlama**: Adaptör, modelin ileri (forward) imzasını `executorch/extension/llm/runner` içindeki imza ile eşleştirir; böylece dışa aktarılan modelin `ExecuTorch` içinde hazır halde çalıştırılabildiğinden emin olunur.

#### transformers.convert_and_export_with_cache[[transformers.convert_and_export_with_cache]]

```python
transformers.convert_and_export_with_cache(model: PreTrainedModel, example_input_ids: typing.Optional[torch.Tensor] = None, example_cache_position: typing.Optional[torch.Tensor] = None, dynamic_shapes: dict | None = None, strict: bool | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/executorch.py#L757)

**Parametreler:**

model (`PreTrainedModel`) : Dışa aktarılacak önceden eğitilmiş model.

example_input_ids (`Optional[torch.Tensor]`) : `torch.export` tarafından kullanılan örnek giriş token kimliği.

example_cache_position (`Optional[torch.Tensor]`) : `torch.export` tarafından kullanılan örnek mevcut önbellek konumu.

dynamic_shapes(`Optional[dict]`) : `torch.export` tarafından kullanılan dinamik şekiller.

strict(`Optional[bool]`) : `torch.export`'un `dynamo` kullanmasını sağlayacak bayrak.

**Dönüş:** Dışa aktarılan program (`torch.export.ExportedProgram`)

`torch.export` aracılığıyla oluşturulan dışa aktarılan program.

Bir `PreTrainedModel`'i dışa aktarılabilir bir modüle dönüştürün ve `torch.export` kullanarak dışa aktarın; dışa aktarılan modelin `ExecuTorch` ile uyumlu olduğundan emin olun.

