# Sürekli toplu işleme

Bu sayfa, sürekli toplu işleme çıkarımının arkasındaki sınıfları belgelemektedir: isteklerin gönderilmesi, zamanlama ve bellek sınırlarının yapılandırılması ve sonuçların alınması.

Kullanım örnekleri için [Continuous batching](../continuous_batching) kılavuzuna, zamanlama ve belleğin nasıl etkileşime girdiğine dair bilgi için [Continuous batching architecture](../continuous_batching_architecture) belgesine bakın.

## ContinuousMixin.generate_batch[[transformers.ContinuousMixin.generate_batch]]

#### transformers.ContinuousMixin.generate_batch[[transformers.ContinuousMixin.generate_batch]]

```python
transformers.ContinuousMixin.generate_batch(inputs: list, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, continuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = None, record_timestamps: bool = False, progress_bar: bool = False, persistent_manager: bool = False, warmup: bool = True, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1368)

**Parametreler:**

inputs : Girdi token dizilerinin listesi (istemler)

generation_config : İsteğe bağlı üretim yapılandırması

continuous_batching_config : İsteğe bağlı sürekli toplu işleme (continuous batching) yapılandırması

record_timestamps : true olarak ayarlanırsa, istekler üretilen her token için bir zaman damgası içerecektir

progress_bar : true olarak ayarlanırsa, bir ilerleme çubuğu görüntülenir

persistent_manager : üretim tamamlandıktan sonra yöneticinin kalıcı olarak saklanıp saklanmayacağı. Varsayılan değer False'tur.

warmup : istekleri işlemeden önce CUDA grafiklerini önceden yakalamak için. Varsayılan değer True'dur.

**Dönüş:** `dict[str, GenerationOutput]`

istek kimliklerinden GenerationOutput nesnelerine bir sözlük

Sürekli toplama (continuous batching) kullanarak bir istek (prompt) grubu için diziler (sequences) oluşturun.

## ContinuousBatchingManager[[transformers.ContinuousBatchingManager]]

#### transformers.ContinuousBatchingManager[[transformers.ContinuousBatchingManager]]

```python
transformers.ContinuousBatchingManager(model: ProtoPretrainedModel, generation_config: GenerationConfig, continuous_batching_config: ContinuousBatchingConfig, workload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L658)

Üretim isteklerinin sürekli toplu işlenmesini (continuous batching) yöneten yönetici. Üretim isteklerini göndermek, sonuçları almak ve arka plandaki üretim iş parçacığını (thread) yönetmek için bir kullanıcı arayüzü sağlar. Bu sınıf doğrudan oluşturulmamalı, bunun yerine aşağıdaki giriş noktalarından (giriş noktaları) biri üzerinden oluşturulmalıdır (`ContinuousMixin` karışımının tüm yöntemleri):
- `init_continuous_batching`
- `continuous_batching_context_manager`
- `generate_batch`

#### add_request[[transformers.ContinuousBatchingManager.add_request]]

```python
add_request(input_ids: list, request_id: str | None = None, max_new_tokens: int | None = None, streaming: bool = False, record_timestamps: bool = False, eos_token_id: int | list[int] | None = None, **logit_processor_kwargs: Any)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L914)

**Parametreler:**

input_ids : İstem olarak kullanılacak girdi belirteç kimlikleri

request_id : İsteğe bağlı özel istek kimliği (None ise otomatik oluşturulur)

max_new_tokens : Üretilmesi gereken yeni token'ların maksimum sayısı

streaming : Tokenler üretildikçe akış olarak gönderilsin mi

record_timestamps : Her üretilen token için zaman damgalarının kaydedilip kaydedilmeyeceği

eos_token_id : Sıra sonu belirteç kimliği (ID)

logit_processor_kwargs : logits işleyicisi için anahtar kelime argümanları.

**Dönüş:** `str | None`

Süreç bir TP sürücüsü ise istek kimliği, aksi halde None.

Kuyruğa yeni bir üretim isteği ekler. Süreç bir TP sürücüsü değilse bu işlem bir işe yaramaz (no-op).

#### add_requests[[transformers.ContinuousBatchingManager.add_requests]]

```python
add_requests(inputs: list, max_new_tokens: int | None = None, streaming: bool = False, record_timestamps: bool = False, **logit_processor_kwargs: Any)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L972)

`add_request` işlemlerini toplu olarak yürütmek ve kimliklerini döndürmek için yardımcı işlev. Daha fazla ayrıntı için belgelerini kontrol edin.

#### cancel_request[[transformers.ContinuousBatchingManager.cancel_request]]

```python
cancel_request(request_id: str)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1007)

İstek, kimliği kullanılarak iptal edilir. Bu işlem, bir TP sürücüsü olmayan bir süreçten çağrılırsa hiçbir şey yapmaz: yöneticiyle yalnızca TP sürücüsü süreçleri etkileşime girer.

#### destroy[[transformers.ContinuousBatchingManager.destroy]]

```python
destroy()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L887)

Yöneticiyi sonlandırın ve dağıtık kaynakları serbest bırakın. Birden fazla kez çağrılması güvenlidir. Bu çağrının ardından yönetici yeniden başlatılamaz.

#### get_result[[transformers.ContinuousBatchingManager.get_result]]

```python
get_result(request_id: str | None = None, timeout: float | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1016)

Çıktı kuyruğundan bir sonuç alınır. Bir kimlik (ID) sağlanırsa, eşleşen ilk istek döndürülür. Bir zaman aşımı (timeout) sağlanırsa, zaman aşımı (saniye cinsinden) sonrasında None döndürülür.

#### is_running[[transformers.ContinuousBatchingManager.is_running]]

```python
is_running()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L801)

Arka plan üretim iş parçacığı başlatılmışsa ve hâlâ aktifse True döndürür.

#### katıl[[transformers.ContinuousBatchingManager.join]]

```python
join(stop_trigger_time: float, timeout: float | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L872)

Arka plan iş parçacığının bitmesini bekleyin. Wait, timeout (saniye cinsinden) argümanı kullanılarak sınırlandırılabilir.

#### duraklat[[transformers.ContinuousBatchingManager.pause]]

```python
pause()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L894)

Üretim döngüsünü duraklatan bir bağlam yöneticisidir; bu sayede çağıran iş parçacığı modeli kullanabilir, genellikle onu yerinde güncellemek için. İş parçacığı yalnızca döngü duraklatıldığında bu bağlama girer ve çıkışta döngü, önbelleğini ve işlenmekte olan isteklerini koruyarak yeniden başlar: hiçbir şey boşaltılmaz ve hiçbir istek kaybolmaz. Birden fazla iş parçacığı aynı anda duraklatmayı tutabilir ve döngü, son iş parçacığı çıkana kadar yeniden başlatılmaz. TP etkinse, tüm sıraların bu bağlama girmesi gerekir; aksi halde diğer sıralar sonsuza kadar bekler.

#### register_result_handler[[transformers.ContinuousBatchingManager.register_result_handler]]

```python
register_result_handler(request_id: str, callback: Callable)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1053)

**Parametreler:**

request_id (*str*) : Çıktıları almak için istek kimliği.

callback (*callable*) : Her sonuç için bir `GenerationOutput` ile çağrılır.

Sonuç teslimi (akışkan veya akışkan olmayan) için bir geri bildirim kaydedin.

Callback, bu istek için her sonuç üretildiğinde `call_soon_threadsafe` aracılığıyla olay döngüsünde (event loop) çağrılır. Akış (streaming) isteklerinde bu her token için; akış dışı isteklerde ise yalnızca tamamlanma anında gerçekleşir. İşleyici (handler), istek bittiğinde otomatik olarak temizlenir.

#### request_id_iter[[transformers.ContinuousBatchingManager.request_id_iter]]

```python
request_id_iter(request_id: str)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L1040)

Belirli bir istek kimliğiyle eşleşen sonuçların üzerinden yinele (engelleyici).

Yeniden kuyruğa alma (requeue) ile paylaşılan çıktı kuyruğunu kullanır. Yüksek eşzamanlılıkta sunum için bunun yerine `register_result_handler` kullanın.

#### başlat[[transformers.ContinuousBatchingManager.start]]

```python
start()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L805)

Arka plan üretim iş parçacığını başlatın.

#### stop[[transformers.ContinuousBatchingManager.stop]]

```python
stop(block: bool = True, timeout: float | None = None, keep_for_next_session: bool = False, hard_stop: bool = False)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L814)

Arka plan üretim iş parçacığını durdurur. `block` bayrağı True olarak ayarlanmışsa, bu yöntem iş parçacığının durması için en fazla `timeout` saniye (None, zaman aşımının olmadığını belirtir) bekler. `keep_for_next_session` bayrağı True olarak ayarlanmışsa, yönetici gelecekteki kullanım için modelde önbelleğe alınır. `hard_stop` bayrağı ayarlanmışsa, arka plan üretim iş parçacığı derhal durdurulur ve bekleyen istekler başarısız sayılır.

#### switch_to_cb_friendly_attn[[transformers.ContinuousBatchingManager.switch_to_cb_friendly_attn]]

```python
switch_to_cb_friendly_attn(model: ProtoPretrainedModel, auto_switch_to_flash: bool = True)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L745)

attn uygulamasını CB ile uyumlu olacak şekilde değiştirin. auto_switch_to_flash True ise ve attn uygulaması SDPA veya eager ise, flash destekleniyor ve kullanılabilirse ona da geçin.

#### warmup[[transformers.ContinuousBatchingManager.warmup]]

```python
warmup()
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/continuous_batching/continuous_api.py#L791)

Dummy batch'ler çalıştırılarak varlen ve decode yolları için CUDA grafiklerini önceden yakalar. Henüz yapılmadıysa batch işleyicisini başlatır.

## Sürekli toplu işleme yapılandırması[[transformers.ContinuousBatchingConfig]]

#### transformers.ContinuousBatchingConfig[[transformers.ContinuousBatchingConfig]]

```python
transformers.ContinuousBatchingConfig(page_size: int = 256, num_blocks: int | None = None, max_batch_tokens: int | None = None, max_memory_percent: float | None = None, max_requests_per_batch: int | None = None, max_blocks_per_request: int | None = None, allow_block_sharing: bool = True, use_async_batching: bool | None = None, use_cuda_graph: bool | tuple[bool, bool] | None = None, q_padding_interval_size: int = 0, kv_padding_interval_size: int = 0, varlen_compile_config: transformers.generation.configuration_utils.CompileConfig | None = None, decode_compile_config: transformers.generation.configuration_utils.CompileConfig | None = None, default_compile_level: int = 0, scheduler_type: str = 'fifo', safety_margin: float | None = None, return_logprobs: bool = False, seed: int | None = None, auto_switch_to_flash: bool = True, cpu_offload_space: float | None = 0.0, cpu_offload_space_safety_threshold: float = 0.8, max_queue_size: int = 0, per_request_processors: bool = False, drop_unsupported_processors: bool = True, disable_nccl_graph_mixing: bool = True, cpu_group_timeout: float | None = 300.0, use_default_compile_configs: bool | None = None, max_cached_graphs: int | None = None, block_size: int | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py#L1685)

**Parametreler:**

page_size (`int`, *isteğe bağlı*, varsayılan 256) : (tam dikkat) bir sayfa içinde her katman için saklanan token sayısı. N katmanın önbelleğini saklayan bir blok, N sayfa içerir (katman başına bir sayfa) ve her sayfa, bir katman için `page_size` token'ın önbelleğini tutar. Varsayılan değer 256'dır.

num_blocks (`int`, *isteğe bağlı*) : KV önbelleğindeki blok sayısı. `None` olduğunda GPU belleğinden otomatik olarak çıkarılır.

max_batch_tokens (`int`, *isteğe bağlı*) : Bir batch'teki maksimum token sayısı. `None` olduğunda GPU belleğinden otomatik olarak çıkarılır.

max_memory_percent (`float`, *isteğe bağlı*) : Model yüklendikten sonra KV önbelleği için kullanılacak serbest GPU belleğinin maksimum yüzdesi. `None` olduğunda, kelime dağarcığı boyutundaki geçici tensörler için pay bırakmak amacıyla, logit işleme yoksa çalışma zamanında 0.9, varsa 0.8 olarak çözümlenir.

max_requests_per_batch (`int`, *opsiyonel*) : Parti başına maksimum istek sayısı. `None` olduğunda iş yükü ipuçlarından otomatik olarak çıkarılır, aksi halde 1024 değerine geri düşülür.

max_blocks_per_request (`int`, *isteğe bağlı*) : İstek başına maksimum blok sayısı, blok tablosunu boyutlandırmak için `flash_attn_with_kvcache` hızlı çözümleme yolunda kullanılır. Bu değeri 0 olarak ayarlamak hızlı çözümleme yolunu devre dışı bırakır. Varsayılan değer None'dir (otomatik çıkarılır).

allow_block_sharing (`bool`, *isteğe bağlı*, varsayılan `True`) : Önek önbellekleme için blok paylaşımına izin verilip verilmeyeceğini belirtir. Bazı modeller bunu desteklemediğinden, blok paylaşımı yalnızca izin verilebilir, asla zorlanamaz. Kısa ama uzun üretim uzunluklarına sahip az sayıda istemciniz varsa devre dışı bırakın.

use_async_batching (`bool`, *isteğe bağlı*) : Sürekli toplu işleme döngüsünden CPU yükünü kaldırarak, bunun karşılığında VRAM kullanımını ikiye katlayan asenkron çift tamponlamayı etkinleştirip etkinleştirmeyeceğini belirtir. `None` olduğunda otomatik olarak algılanır.

use_cuda_graph (`bool` veya `tuple[bool, bool]`, *isteğe bağlı*) : CUDA grafiklerinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu değer, boole bir demet (varlen yolu için biri ve decode hızlı yolu için biri), her iki yola da uygulanacak bir boole değeri veya None (otomatik olarak çıkarılır) olabilir. `decide_use_cuda_graphs` çağrıldıktan sonra, bu öznitelik boole bir demet olur. Varsayılan değer None'dır (otomatik olarak çıkarılır).

q_padding_interval_size (`int`, *isteğe bağlı*, varsayılan 0) : CUDA grafikleri için token cinsinden sorgu dolgusu granülaritesi. 0 olarak ayarlandığında `continuous_api.py` içindeki bir ön ayarı kullanır.

kv_padding_interval_size (`int`, *isteğe bağlı*, varsayılan 0) : CUDA grafikleri için token cinsinden KV padding granülaritesi. 0 olarak ayarlandığında `continuous_api.py` içindeki bir ön ayarı kullanır.

varlen_compile_config (`CompileConfig`, *isteğe bağlı*) : varlen (prefill) yolu için CompileConfig. Varsayılan değeri None'dir (generation_config yedeği kullanılır). Varlen yolu, değişken sorgu ve KV uzunluklarına sahip partileri işler ve genellikle dynamic=True'den faydalanır.

decode_compile_config (`CompileConfig`, *isteğe bağlı*) : decode (hızlı) yolu için CompileConfig. Varsayılan değeri None'dir (generation_config yedeği kullanılır). Decode yolu, toplu işlemleri (batches) işler ve dinamik KV uzunluğu içermez; bu nedenle statik şekiller daha uygundur.

default_compile_level (`int`, *opsiyonel*, varsayılan 0) : Bu değer >0 ise ve varlen veya decode yolu için bir derleme yapılandırması sağlanmamışsa, varsayılan bir derleme yapılandırması sağlanır. Seviye 3'e kadar çıkabilir; daha yüksek seviye daha iyi performans ama daha uzun ısınma süresi anlamına gelir.

scheduler_type (`str`, *isteğe bağlı*, varsayılan `"fifo"`) : Kullanılacak zamanlayıcı türü.

safety_margin (`float`, *isteğe bağlı*) : Offloading miktarını sınırlamak için kullanılan güvenlik payı. Varsayılan değeri None'dir (sınıf varsayılanını kullanır).

return_logprobs (`bool`, *isteğe bağlı*, varsayılan `False`) : Üretilen token'larla birlikte log olasılıkların da döndürülüp döndürülmeyeceğini belirtir.

seed (`int | None`, *isteğe bağlı*) : Üretim için isteğe bağlı bir tohum. Belirtilmezse, dahili tohum rastgele bir değere ayarlanır.

auto_switch_to_flash (`bool`, *isteğe bağlı*, varsayılan `True`) : Uygulama SDPA veya eager olduğunda, flash attention'a (müsaitse) otomatik olarak geçilip geçilmeyeceğini belirtir. Varsayılan değer True'dur, çünkü flash, sürekli toplu işleme (continuous batching) için çok daha iyidir.

cpu_offload_space (`float`, *opsiyonel*, varsayılan 0.0) : KV önbelleği dışa aktarma için GiB cinsinden CPU takas alanı. Başlatma sırasında bu boyutta önceden ayrılmış sabitlenmiş bir CPU tamponu oluşturulur. GPU önbelleği dolduğunda, atılan isteklerin KV önbellekleri burada saklanır, atılmaz. 0, dışa aktarmayı devre dışı bırakır (varsayılan).

cpu_offload_space_safety_threshold (`float`, *opsiyonel*, varsayılan 0.8) : `cpu_offload_space`, toplam sistem RAM'inin bu oranını aşıyorsa, host OOM'unu önlemek için sınırlanır. Güvenlik sınırını devre dışı bırakmak için 1.0 olarak ayarlayın. psutil kullanılamadığında yok sayılır.

max_queue_size (`int`, *opsiyonel*, varsayılan 0) : Sunum için maksimum istek kuyruğu boyutu. 0 sınırsız anlamına gelir.

per_request_processors (`bool`, *isteğe bağlı*, varsayılan `False`) : İstek başına logits işlemci parametrelerini etkinleştirir. Varsayılan değer False'tur.

drop_unsupported_processors (`bool`, *isteğe bağlı*, varsayılan `True`) : Desteklenmeyen logits işleyicilerini hata vermeden kaldırır. Varsayılan True'dur.

disable_nccl_graph_mixing (`bool`, *isteğe bağlı*, varsayılan `True`) : NCCL'in paralel grafik yakalanan iletişim işlemleri için güvenlik ağını devre dışı bırakır. CB'de asla gerçekleşmez ve TP'ye performans artışı sağlar.

cpu_group_timeout (`float`, *opsiyonel*, varsayılan 300.0) : Bir CPU iletişiminin zaman aşımına uğrayıp sürecin çökmesine neden olacağı süre (saniye cinsinden). Zaman aşımının olmaması için None bırakın. Varsayılan değer 300 saniyedir.

use_default_compile_configs (`bool | None`, *isteğe bağlı*) : 5.11'de kullanımdan kaldırıldı: lütfen bunun yerine default_compile_level kullanın.

max_cached_graphs (`int`, *isteğe bağlı*) : 5.13'te kullanımdan kaldırıldı: grafik sayısı artık bir sorun değil.

block_size (`int | None`, *isteğe bağlı*) : 5.17 sürümünde kullanımdan kaldırıldı: artık bunun yerine page_size kullanılır.

Sürekli toplama (continuous batching) kullanıldığında, `generate_batch` yöntemi veya `continuous_batching_context_manager` bağlam yöneticisi üzerinden sürekli toplama yapıldığında, sürekli toplama ile ilgili argümanları tutan sınıf.

