Transformers documentation
Sürekli toplu işleme
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
< source >( 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
< source >( 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_batchingcontinuous_batching_context_managergenerate_batch
add_request
< source >( 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
< source >( 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.
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.
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.
Çı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.
Arka plan üretim iş parçacığı başlatılmışsa ve hâlâ aktifse True döndürür.
Arka plan iş parçacığının bitmesini bekleyin. Wait, timeout (saniye cinsinden) argümanı kullanılarak sınırlandırılabilir.
Ü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
< source >( request_id: strcallback: Callable )
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.
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.
Arka plan üretim iş parçacığını başlatın.
durdur
< source >( 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
< source >( 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.
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
< source >( 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çinpage_sizetoken'ın önbelleğini tutar. Varsayılan değer 256'dır. - num_blocks (
int, isteğe bağlı) — KV önbelleğindeki blok sayısı.Noneolduğunda GPU belleğinden otomatik olarak çıkarılır. - max_batch_tokens (
int, isteğe bağlı) — Bir batch'teki maksimum token sayısı.Noneolduğ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.Noneise, 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ı.Noneolduğ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_kvcachehı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ılanTrue) — Ö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.Noneolduğunda otomatik olarak algılanır. - use_cuda_graph (
boolortuple[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ığındacontinuous_api.pyiç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ığındacontinuous_api.pyiç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ılanFalse) — Ü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ılanTrue) — 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ılanFalse) — İstek başına logits işlemci parametrelerini etkinleştirir. Varsayılan değer False'tur. - drop_unsupported_processors (
bool, isteğe bağlı, varsayılanTrue) — 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ılanTrue) — 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.