Transformers documentation

Sürekli toplu işleme

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

and get access to the augmented documentation experience

to get started

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 kılavuzuna, zamanlama ve belleğin nasıl etkileşime girdiğine dair bilgi için Continuous batching architecture belgesine bakın.

ContinuousMixin.generate_batch

transformers.ContinuousMixin.generate_batch

< >

( inputs: listgeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Nonerecord_timestamps: bool = Falseprogress_bar: bool = Falsepersistent_manager: bool = Falsewarmup: bool = True**kwargs ) → dict[str, GenerationOutput]

Parametreler

  • inputs — Girdi token dizilerinin (istemlerin) listesi
  • generation_config — İsteğe bağlı üretim yapılandırması
  • continuous_batching_config — İsteğe bağlı sürekli toplama yapılandırması
  • record_timestamps — true olarak ayarlanırsa, istekler için üretilen her token için bir zaman damgası eklenir
  • 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 grafiklerinin önceden yakalanıp yakalanmayacağı. Varsayılan değer True'dur.

Dönüş değeri

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

sınıf transformers.ContinuousBatchingManager

< >

( model: ProtoPretrainedModelgeneration_config: GenerationConfigcontinuous_batching_config: ContinuousBatchingConfigworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None )

Ü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ı 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 biri (tümü ContinuousMixin karışımının yöntemleri) üzerinden oluşturulmalıdır:

  • init_continuous_batching
  • continuous_batching_context_manager
  • generate_batch

add_request

< >

( input_ids: listrequest_id: str | None = Nonemax_new_tokens: int | None = Nonestreaming: bool = Falserecord_timestamps: bool = Falseeos_token_id: int | list[int] | None = None**logit_processor_kwargs: Any ) → str | None

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 — Üretilecek yeni tokenların maksimum sayısı
  • streaming — Üretilen token'ların akış olarak iletilip iletilmeyeceği
  • record_timestamps — Üretilen her 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üş değeri

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

< >

( inputs: listmax_new_tokens: int | None = Nonestreaming: bool = Falserecord_timestamps: bool = False**logit_processor_kwargs: Any )

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

< >

( request_id: str )

Bir isteği kimliğiyle iptal edin. Bu, bir TP sürücüsü olmayan bir süreçten çağrılırsa hiçbir şey yapmaz: yalnızca TP sürücü süreçleri yöneticiyle etkileşime girer.

destroy

< >

( )

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

< >

( request_id: str | None = Nonetimeout: float | None = None )

Çı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

< >

( )

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

birleştir

< >

( stop_trigger_time: floattimeout: float | None = None )

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

duraklat

< >

( )

Üretim döngüsünü duraklatan bir bağlam yöneticisi; çağıran iş parçacığının modeli kullanmasına, tipik olarak onu yerinde güncellemesine olanak tanır. İş parçacığı, döngü duraklatıldığında yalnızca 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ığı çıktığında yeniden başlar. TP açıksa, tüm sıraların bu bağlama girmesi gerekir; aksi takdirde diğer sıralar sonsuza kadar bekler.

register_result_handler

< >

( request_id: strcallback: Callable )

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.

Geri çağrı, 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 jeton için; akış dışı isteklerde yalnızca tamamlanma anında gerçekleşir. İşleyici, istek bittiğinde otomatik olarak temizlenir.

request_id_iter

< >

( request_id: str )

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

Yeniden kuyruğa alma 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

< >

( )

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

durdur

< >

( block: bool = Truetimeout: float | None = Nonekeep_for_next_session: bool = Falsehard_stop: bool = False )

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

switch_to_cb_friendly_attn

< >

( model: ProtoPretrainedModelauto_switch_to_flash: bool = True )

attn uygulamasını CB ile uyumlu olan bir uygulamaya değiştirin. auto_switch_to_flash True ise ve attn uygulaması SDPA veya eager ise, destekleniyorsa ve kullanılabilirse flash'a da geçin.

ısınma

< >

( )

Dummy batch'ler çalıştırılarak varlen ve decode yolları için CUDA grafiklerini önceden yakalayın. Batch işleyicisi henüz başlatılmadıysa başlatır.

Sürekli toplu işleme yapılandırması

sınıf transformers.ContinuousBatchingConfig

< >

( page_size: int = 256num_blocks: int | None = Nonemax_batch_tokens: int | None = Nonemax_memory_percent: float | None = Nonemax_requests_per_batch: int | None = Nonemax_blocks_per_request: int | None = Noneallow_block_sharing: bool = Trueuse_async_batching: bool | None = Noneuse_cuda_graph: bool | tuple[bool, bool] | None = Noneq_padding_interval_size: int = 0kv_padding_interval_size: int = 0varlen_compile_config: transformers.generation.configuration_utils.CompileConfig | None = Nonedecode_compile_config: transformers.generation.configuration_utils.CompileConfig | None = Nonedefault_compile_level: int = 0scheduler_type: str = 'fifo'safety_margin: float | None = Nonereturn_logprobs: bool = Falseseed: int | None = Noneauto_switch_to_flash: bool = Truecpu_offload_space: float | None = 0.0cpu_offload_space_safety_threshold: float = 0.8max_queue_size: int = 0per_request_processors: bool = Falsedrop_unsupported_processors: bool = Truedisable_nccl_graph_mixing: bool = Truecpu_group_timeout: float | None = 300.0use_default_compile_configs: bool | None = Nonemax_cached_graphs: int | None = Noneblock_size: int | None = None )

Parametreler

  • page_size (int, isteğe bağlı, varsayılan 256) — Tam dikkat (full-attention) sayfası 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 boş GPU belleğinin maksimum yüzdesi. None ise, logit işleme yoksa 0.9, varsa 0.8 olarak çalışma zamanında çözümlenir; böylece sözlük boyutundaki geçici tensörler için pay bırakılır.
  • max_requests_per_batch (int, isteğe bağlı) — Batch 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ı) — flash_attn_with_kvcache hızlı çözümleme yolunda blok tablosunu boyutlandırmak için kullanılan istek başına maksimum blok sayısı. Bu değeri 0 olarak ayarlamak hızlı çözümleme yolunu devre dışı bırakır. Varsayılan değer None'dır (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ği. 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ı) — Çift tamponlamayı (double-buffering) asenkron olarak etkinleştirip etkinleştirmeyeceğini belirtir. Bu, sürekli toplu işleme (continuous batching) döngüsünden CPU yükünü kaldırır ancak VRAM kullanımını ikiye katlar. None olduğunda otomatik olarak algılanır.
  • use_cuda_graph (bool or tuple[bool, bool], isteğe bağlı) — CUDA grafiklerinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Bu, bir booleans tuple'ı (varlen yolu için biri ve decode fast path için biri), her iki yola da uygulanacak bir boolean veya None (otomatik olarak çıkarılır) olabilir. decide_use_cuda_graphs çağrıldıktan sonra, bu öznitelik bir booleans tuple'ı olacaktır. 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 dolgu granülerliği. 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ülerliği. 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'dır (generation_config yedeği kullanılır) varlen yolu, değişken sorgu ve KV uzunluklarına sahip toplu işlemleri ele alır 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ğer None'dir (generation_config yedeği kullanılır) Decode yolu, dinamik KV uzunluğu olmayan toplu işleri (batch) işler, bu nedenle statik şekiller daha uygundur.
  • default_compile_level (int, isteğe bağlı, 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 gidebilir ve daha yüksek seviye daha fazla 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ı) — Offload miktarını sınırlamak için kullanılan güvenlik payı. Varsayılan olarak None'dir (sınıf varsayılanını kullan).
  • return_logprobs (bool, isteğe bağlı, varsayılan False) — Üretilen token'larla birlikte log olasılıkların 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 (mevcutsa) otomatik olarak kullanılacak mı? Varsayılan True'dur, çünkü flash, sürekli toplu işleme (continuous batching) için çok daha iyidir.
  • cpu_offload_space (float, isteğe bağlı, varsayılan 0.0) — KV önbelleği boşaltma için GiB cinsinden CPU takas alanı. Bu boyutta önceden ayrılmış sabitlenmiş bir CPU tamponu, başlatma sırasında oluşturulur. GPU önbelleği dolduğunda, atılan isteklerin KV önbellekleri burada saklanır, atılmaz. 0, boşaltmayı devre dışı bırakır (varsayılan).
  • cpu_offload_space_safety_threshold (float, isteğe bağlı, 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, isteğe bağlı, 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 değer True'dur.
  • disable_nccl_graph_mixing (bool, isteğe bağlı, varsayılan True) — Paralel grafik yakalanan commlar için NCCL'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, isteğe bağlı, 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 300 saniyedir.
  • use_default_compile_configs (bool | None, isteğe bağlı) — 5.11 sürümünde 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.

Update on GitHub