Transformers documentation
Üretim
Üretim
Her framework, metin üretimi için kendi GenerationMixin sınıfında uygulanan bir generate yöntemine sahiptir:
- PyTorch generate(), GenerationMixin içinde uygulanmıştır.
generate metodunu bir GenerationConfig sınıfı örneğiyle parametreleyebilirsiniz. Üretim metodunun davranışını kontrol eden üretim parametrelerinin tam listesi için lütfen bu sınıfa başvurun.
Bir modelin üretim yapılandırmasını nasıl inceleyeceğinizi, varsayılanların neler olduğunu, parametrelerin ad hoc olarak nasıl değiştirileceğini ve özel bir üretim yapılandırmasının nasıl oluşturulup kaydedileceğini öğrenmek için metin üretim stratejileri kılavuzuna başvurun. Kılavuz, token akışı gibi ilgili özelliklerin nasıl kullanılacağını da açıklar.
GenerationConfig
sınıf transformers.GenerationConfig
< source >( **kwargs )
Çıktı uzunluğunu kontrol eden parametreler
- max_length (
int, isteğe bağlı) — Modelin kaç token üreteceğini kontrol etmek içinmax_new_tokensönerilir.max_lengthgeriye dönük uyumluluk için korunmuştur. - max_new_tokens (
int, isteğe bağlı) — İstekteki token sayısını göz ardı ederek üretilecek maksimum token sayısı. - min_length (
int, isteğe bağlı) — Oluşturulacak dizinin minimum uzunluğu. Girdi istemcisinin uzunluğu +min_new_tokensdeğerine karşılık gelir.min_new_tokensde ayarlanmışsa, etkisimin_new_tokenstarafından geçersiz kılınır. - min_new_tokens (
int, isteğe bağlı) — Komuttaki token sayısını göz ardı ederek üretilecek en az token sayısı. - early_stopping (
boolveyastr, isteğe bağlı) — Beam tabanlı yöntemlerin, örneğin beam-search'in durdurma koşulunu kontrol eder. Aşağıdaki değerleri kabul eder:True, üretimnum_beamstam aday olduğu anda durur;False, bir heuristik uygulanır ve daha iyi adaylar bulma olasılığı çok düşük olduğunda üretim durur;"never", beam search prosedürü daha iyi adaylar olamayana kadar durmaz (kanonik beam search algoritması). - max_time (
float, isteğe bağlı) — Hesaplamaya saniye cinsinden izin verdiğiniz maksimum süre. generation, ayrılan süre geçtikten sonra bile geçerli geçişi tamamlamaya devam eder. - stop_strings (
strveyalist[str], isteğe bağlı) — Model bunları üretirse üretimi sonlandırmak gereken bir dize veya dize listesi.
Kullanılan üretim stratejisini kontrol eden parametreler
- do_sample (
bool) — Örnekleme kullanılıp kullanılmayacağı; aksi takdirde açgözlü çözümleme (greedy decoding) kullanılır. - num_beams (
int, isteğe bağlı) — Beam search için beam sayısı. 1, beam search kullanılmadığı anlamına gelir. - use_mtp — (
bool): Model destekliyorsa Multi-Token Prediction (MTP) kullanılacak mı?
Önbelleği kontrol eden parametreler
- use_cache (
bool) — Modelin, çözümlendirmeyi hızlandırmak için (modele uygulanabilirse) geçmiş son anahtar/değer dikkatlerini kullanıp kullanmayacağı. - cache_implementation (
str, isteğe bağlı) — generate içinde örneklenmesi gereken önbellek sınıfının adı,generate, daha hızlı çözümleme için. Olası değerler şunlardır:"dynamic": DynamicCache"static": Statik Önbellek"offloaded":DynamicCache(offloaded=True)"offloaded_static":StaticCache(offloaded=True)"quantized": QuantizedCache
Hiçbiri belirtilmezse, model için varsayılan önbellek kullanılır (bu genellikle DynamicCache'tir). Daha fazla bilgi için önbellek belgelerimize bakın.
- cache_config (
dict, isteğe bağlı, varsayılanNone) — Anahtar-değer önbellek sınıfında kullanılan argümanlarcache_configüzerinden geçirilebilir. - max_cache_len (
int, isteğe bağlı) — Yalnızca statik önbelleklerle kullanılır (cache_implementationdeğeri"static"veya"offloaded_static"olarak ayarlanmışsa). Önbelleği, mevcut çağrınınmax_lengthdeğeri yerine bu uzunluğa önceden boyutlandırır. Tekrarlanangenerate()çağrılarında daha uzun bir istem veya daha büyük birmax_new_tokens(bu üst sınıra kadar) kullanıldığında yeniden tahsis vetorch.compileyeniden derlemesini tetiklemek yerine aynı önbelleğin yeniden kullanılabilmesi için, beklediğiniz en büyük çağrıya bir kez ayarlayın.
Model çıktı logit'lerinin manipülasyonu için parametreler
- temperature (
float, isteğe bağlı) — Sonraki token olasılıklarını modüle etmek için kullanılan değer. Bu değer, bir modelingeneration_config.jsondosyasında ayarlanır. Ayarlanmamışsa varsayılan değer 1.0'dır. - top_k (
int, isteğe bağlı) — Top-k filtreleme için en yüksek olasılığa sahip kaç sözlük token'ının tutulacağı. Bu değer, modelingeneration_config.jsondosyasında ayarlanır. Ayarlanmamışsa varsayılan değer 50'dir. - top_p (
float, isteğe bağlı) — float < 1 olarak ayarlanırsa, olasılıklarıtop_pveya daha yüksek bir toplamda birleşen en küçük en olası token kümesi üretim için korunur. Bu değer, bir modelingeneration_config.jsondosyasında ayarlanır. Ayarlanmamışsa, varsayılan değer 1.0'dır. - min_p (
float, isteğe bağlı) — En olası token'ın olasılığına göre ölçeklendirilen minimum token olasılığı. 0 ile 1 arasında bir değer olmalıdır. Tipik değerler 0.01-0.2 aralığındadır vetop_p'nin 0.99-0.8 aralığında ayarlanmasına benzer bir seçicilik sağlar (normaltop_pdeğerlerinin tersini kullanın). - top_h (
float, isteğe bağlı) — Örnekleme sırasında dağılımın entropisinin ne kadarının korunduğunu kontrol eden entropi bütçe ölçekleme faktörü. 0 ile 1 arasında bir değer olmalıdır. Her adımda, jetonlar olasılığa göre sıralanır ve tam dağılımın entropisinintop_hkatına eşit veya daha küçük yeniden normalize edilmiş entropiye sahip en küçük jeton öneki korunur. Daha küçük değerler (ör. 0.2–0.5) daha odaklı ve deterministik çıktılara yol açarken, 1.0'a yakın değerler daha fazla rastgelelik ve çeşitlilik sağlar. Tipik değerler 0.3–0.6 aralığındadır. - typical_p (
float, isteğe bağlı) — Yerel tipiklik, kısmi olarak üretilmiş metin verildiğinde, bir sonraki hedef token'ı tahmin etmenin koşullu olasılığının, bir sonraki rastgele token'ı tahmin etmenin beklenen koşullu olasılığına ne kadar benzer olduğunu ölçer. float < 1 olarak ayarlanırsa, olasılıklarıtypical_pveya daha yüksek bir toplamda birleşen en küçük yerel olarak en tipik token kümesi üretim için korunur. Daha fazla ayrıntı için bu makaleye bakın. - epsilon_cutoff (
float, isteğe bağlı) — 0 ile 1 arasında katı bir float değere ayarlanırsa, yalnızca koşullu olasılığıepsilon_cutoffdeğerinden büyük olan token'lar örneklenir. Makalede, modelin boyutuna bağlı olarak önerilen değerler 3e-4 ile 9e-4 arasında değişmektedir. Daha fazla ayrıntı için Truncation Sampling as Language Model Desmoothing başlıklı makaleye bakın. - eta_cutoff (
float, isteğe bağlı) — Eta örneklemesi, yerel tipik örneklemesi ve epsilon örneklemesinin bir hibrididir. 0 ile 1 arasında katı bir float değere ayarlanırsa, bir token yalnızcaeta_cutoffveyasqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits)))değerlerinden birinden büyükse dikkate alınır. İkinci terim sezgisel olarak,sqrt(eta_cutoff)ile ölçeklendirilmiş beklenen sonraki token olasılığıdır. Makalede, modelin boyutuna bağlı olarak önerilen değerler 3e-4 ile 2e-3 arasında değişmektedir. Daha fazla ayrıntı için Truncation Sampling as Language Model Desmoothing başlıklı makaleye bakın. - repetition_penalty (
float, isteğe bağlı) — Tekrar cezası parametresi. 1.0 ceza uygulanmadığı anlamına gelir. Daha fazla ayrıntı için bu makaleye bakın. - encoder_repetition_penalty (
float, isteğe bağlı) — encoder_repetition_penalty parametresi. Orijinal girdide bulunmayan dizilere uygulanan üstel ceza. 1.0 ceza uygulanmadığı anlamına gelir. - length_penalty (
float, isteğe bağlı) — Beam tabanlı üretimde kullanılan uzunluğa uygulanan üstel ceza. Bu ceza, sıra uzunluğuna üstel olarak uygulanır ve ardından sıra puanını bölmek için kullanılır. Puan, sıranın log olasılığı olduğu için (yani negatif),length_penalty> 0.0 daha uzun sıraları teşvik ederken,length_penalty< 0.0 daha kısa sıraları teşvik eder. - no_repeat_ngram_size (
int, isteğe bağlı) — int > 0 olarak ayarlanırsa, bu boyuttaki tüm ngram'lar yalnızca bir kez oluşabilir. - bad_words_ids (
list[list[int]], isteğe bağlı) — Üretilmesine izin verilmeyen token kimliklerinin listesi. Daha fazla belge ve örnek için NoBadWordsLogitsProcessor sınıfına bakın. - renormalize_logits (
bool) — Tüm logits işleyicileri (özel olanlar dahil) uygulandıktan sonra logits’lerin yeniden normalize edilip edilmeyeceğini belirtir. Arama algoritmaları, skor logits’lerinin normalize edildiğini varsaydığından ancak bazı logits işleyicileri normalizasyonu bozduğundan, bu bayrağınTrueolarak ayarlanması şiddetle önerilir. - forced_bos_token_id (
int, isteğe bağlı, varsayılanmodel.config.forced_bos_token_id) —decoder_start_token_idsonrasında ilk üretilen token olarak zorlanacak token'ın kimliği. İlk üretilen token'ın hedef dil token'ı olması gereken mBART gibi çok dilli modeller için faydalıdır. - forced_eos_token_id (
intor list[int], *optional*, defaults tomodel.config.forced_eos_token_id) -- The id of the token to force as the last generated token whenmax_length` is reached. Optionally, use a list to set multiple end-of-sequence tokens. - remove_invalid_values (
bool) — Modelin olası nan ve inf çıktılarını, üretim yönteminin çökmesini önlemek için kaldırıp kaldırmayacağını belirtir.remove_invalid_valueskullanmanın üretimi yavaşlatabileceğini unutmayın. - exponential_decay_length_penalty (
tuple(int, float), isteğe bağlı) — Bu Tuple, belirli bir sayıda token üretildikten sonra üstel olarak artan bir uzunluk cezası ekler. Tuple şu öğelerden oluşmalıdır:(start_index, decay_factor)buradastart_indexcezanın başladığı yeri,decay_factorise üstel azalma katsayısını temsil eder - suppress_tokens (
list[int], isteğe bağlı) — Üretim sırasında bastırılacak tokenların listesi.SuppressTokenslogit işlemcisi, bunların log olasılıklarını-infolarak ayarlayarak örneklenmelerini engeller. - begin_suppress_tokens (
list[int], isteğe bağlı) — Üretilen metnin başlangıcında bastırılacak tokenların listesi.SuppressBeginTokenslogit işlemcisi, bu tokenların log olasılıklarını-infolarak ayarlayarak örneklenmelerini engeller. - sequence_bias (
dict[tuple[int], float], isteğe bağlı) — Bir token dizisini önyargı terimine eşleyen sözlük. Pozitif önyargılar, dizinin seçilme olasılığını artırırken, negatif önyargılar bunun tersini yapar. Daha fazla belge ve örnek için SequenceBiasLogitsProcessor sınıfına bakın. - token_healing (
bool) — İstemlerin kuyruk tokenlarını uygun uzantılarıyla değiştirerek onarın. Bu, açgözlü tokenizasyon yanlılığından etkilenen istemlerde tamamlamaların kalitesini artırır. - guidance_scale (
float, isteğe bağlı) — Sınıflandırıcı serbest yönlendirme (CFG) için yönlendirme ölçeği. CFG,guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, modelin girdi istemine daha sıkı bağlı örnekler üretmesini teşvik eder, genellikle daha düşük kalite pahasına. - watermarking_config (
BaseWatermarkingConfigveyadict, isteğe bağlı) — Model çıktılarını, rastgele seçilen “yeşil” token kümesine küçük bir önyargı ekleyerek filigran eklemek için kullanılan argümanlar. Daha fazla ayrıntı için SynthIDTextWatermarkingConfig ve WatermarkingConfig belgelerine bakın.Dictolarak geçirilirse, içsel olarakWatermarkingConfignesnesine dönüştürülür.
generate'in çıktı değişkenlerini tanımlayan parametreler
- num_return_sequences (
int, isteğe bağlı) — Toplumdaki her öğe için bağımsız olarak hesaplanan ve döndürülen dizilerin sayısı. - output_attentions (
bool) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - output_scores (
bool) — Tahmin skorlarının döndürülüp döndürülmemesi. Daha fazla ayrıntı için döndürülen tensörler altındakiscoresbölümüne bakın. - output_logits (
bool) — İşlenmemiş tahmin logit puanlarının döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakilogitsbölümüne bakın. - return_dict_in_generate (
bool) — Sadece üretilen diziyi döndürmek yerine bir ModelOutput döndürülüp döndürülmediğini belirtir. Üretim önbelleğinin döndürülmesi (use_cacheTrueolduğunda) veya isteğe bağlı çıktıların (bkz.output_ile başlayan bayraklar) döndürülmesi için bu bayrağınTrueolarak ayarlanması gerekir.
Üretim sırasında kullanılabilen özel jetonlar
- pad_token_id (
int, isteğe bağlı) — padding belirtecinin kimliği. - bos_token_id (
int, isteğe bağlı) — dizinin başlangıcı belirtecinin kimliği. - eos_token_id (
Union[int, list[int]], isteğe bağlı) — dizinin sonu belirtecinin kimliği. İsteğe bağlı olarak, birden fazla dizinin sonu belirtecini ayarlamak için bir liste kullanın.
Sadece encoder-decoder modellerine özgü üretim parametreleri
- encoder_no_repeat_ngram_size (
int, isteğe bağlı) — int > 0 olarak ayarlanırsa,encoder_input_idsiçinde görülen bu boyuttaki tüm ngram'lardecoder_input_idsiçinde görülemez. - decoder_start_token_id (
intveyalist[int], isteğe bağlı) — Bir kodlayıcı-çözücü modeli, bos ile farklı bir token ile çözümlemeye başlıyorsa, o token'ın kimliği veyabatch_sizeuzunluğunda bir liste. Bir liste belirtmek, batch'teki her öğe için farklı başlangıç kimliklerini etkinleştirir (ör. bir batch içinde farklı hedef dillere sahip çok dilli modeller)
Yalnızca asistan üretimi için geçerli üretim parametreleri
- is_assistant (
bool) — Modelin bir asistan (taslak) modeli olup olmadığı. - num_assistant_tokens (
int, isteğe bağlı) — Her yinelemede hedef model tarafından kontrol edilmeden önce asistan modelinin üreteceği spekülatif token sayısını tanımlar.num_assistant_tokensiçin daha yüksek değerler, üretimi daha spekülatif hale getirir: Asistan modelinin performansı yüksekse daha büyük hızlanmalar elde edilebilir, asistan modelinin çok fazla düzeltme gerektirmesi durumunda ise daha düşük hızlanmalar elde edilir. - num_assistant_tokens_schedule (
str, isteğe bağlı) — Çıkarım sırasında en fazla asistan jetonunun ne zaman değiştirileceğini tanımlar."heuristic": Tüm spekülatif jetonlar doğruysanum_assistant_tokensdeğerini 2 artırın, aksi halde 1 azaltın.num_assistant_tokensdeğeri, aynı asistan modeliyle yapılan birden çok üretim çağrısı boyunca kalıcıdır."heuristic_transient":"heuristic"ile aynıdır ancaknum_assistant_tokens, her üretim çağrısından sonra başlangıç değerine sıfırlanır."constant":num_assistant_tokensüretim sırasında değiştirilmez
- assistant_confidence_threshold (
float, isteğe bağlı) — Asistan modelinin güven eşiği. Asistan modelinin mevcut token için tahminine olan güveni bu eşiğin altındaysa, asistan modeli spekülatif token sayısına (num_assistant_tokensile tanımlanan) henüz ulaşılmamış olsa bile mevcut token üretim iterasyonunu durdurur. Asistanın güven eşiği, gereksiz taslak ve hedef ileri geçişlerinin sayısını azaltmak amacıyla spekülatif iterasyonlar boyunca, yanlış negatiflerden kaçınmaya yönelik bir eğilimle ayarlanır.assistant_confidence_thresholddeğeri, aynı asistan modeliyle yapılan birden fazla üretim çağrısı boyunca kalıcıdır. Bu, Dynamic Speculation Lookahead Accelerates Speculative Decoding of Large Language Models https://huggingface.co/papers/2405.04304 makalesindeki dinamik spekülasyon ileri bakışının denetimsiz bir versiyonudur. - prompt_lookup_num_tokens (
int, isteğe bağlı) — Aday jeton olarak çıkarılacak jeton sayısı. - max_matching_ngram_size (
int, isteğe bağlı) — İstemde eşleştirme için dikkate alınacak en büyük ngram boyutu. Verilmezse varsayılan olarak 2'dir. - assistant_early_exit(
int, optional) — Pozitif bir tamsayı olarak ayarlanırsa, modelin erken çıkışı (early exit) bir asistan olarak kullanılacaktır. Yalnızca erken çıkışı destekleyen modellerle (yani ara katmanlardan gelen logits'lerin LM head tarafından yorumlanabildiği modeller) kullanılabilir. - assistant_lookbehind(
int, optional) — Pozitif bir tamsayı olarak ayarlanırsa, yeniden kodlama süreci, token'ları doğru şekilde hizalamak için sonassistant_lookbehindasistan token'larını da dikkate alır. Yalnızca spekülatif çözümlendirmede farklı tokenizörler kullanılırken kullanılabilir. Daha fazla ayrıntı için bu blog'a bakın. - target_lookbehind(
int, isteğe bağlı) — Pozitif bir tam sayı olarak ayarlanırsa, yeniden kodlama süreci, token'ları doğru şekilde hizalamak için sontarget_lookbehindhedef token'larını da dikkate alır. Yalnızca spekülatif çözümlendirmede farklı tokenizörler kullanılırken kullanılabilir. Daha fazla ayrıntı için bu blog yazısına bakın. - assistant_ensemble_weight (
float, isteğe bağlı) — Spekülatif çözümlendirmede statik ensemble doğrulamasını etkinleştirir.(0.0, 1.0)aralığında bir değere ayarlanırsa, doğrulayıcı tokenlarıp_targetyerinew * p_target + (1 - w) * q_draftkarışımına karşı kabul eder; böylece kontrollü bir dağılımsal sapma pahasına daha yüksek bir kabul oranı elde edilir. Varsayılan değerNone'dir ve bu, çözümlendirmenin kayıpsız kalmasını sağlar. Asistan modelin logit döndürmesini gerektirdiğinden, prompt lookup çözümlendirmesiyle uyumlu değildir. - speculation_type (
str, isteğe bağlı) — İstenen spekülasyon türü. Kabul edilen değerlerdflash.
Performans ve derleme ile ilgili parametreler
- compile_config (CompileConfig, isteğe bağlı) —
Derlenebilir bir önbellek kullanılıyorsa, bu,
generate'nin daha hızlı çıkarım için ileri geçişi nasılcompileedeceğini kontrol eder. - disable_compile (
bool) — İleri geçişin otomatik derlenmesini devre dışı bırakıp bırakmayacağı. Otomatik derleme, derlenebilir bir önbellek kullanılması dahil olmak üzere belirli kriterler karşılandığında gerçekleşir. Bu bayrağı kullanma ihtiyacı hissederseniz lütfen bir sorun (issue) açın.
Bir üretim görevi için yapılandırmayı tutan sınıf. Bir generate çağrısı, metin-çözücü, metinden-metine, konuşmadan-metine ve görüden-metine modeller için aşağıdaki üretim yöntemlerini destekler:
num_beams=1vedo_sample=Falseise greedy decodingnum_beams=1vedo_sample=Trueise multinomial samplingnum_beams>1vedo_sample=Falseise beam-search decodingnum_beams>1vedo_sample=Trueise beam-search multinomial samplingassistant_modelveyaprompt_lookup_num_tokens.generate()fonksiyonuna geçiriliyorsa assisted decoding
Çözme stratejileri hakkında daha fazla bilgi için metin oluşturma stratejileri kılavuzuna bakın.
Bu bayrakların büyük bir kısmı, üretimin logitlerini veya durdurma kriterlerini kontrol eder. Olası manipülasyonların tam açıklaması ve kullanım örnekleri için generate ile ilgili sınıfları kontrol etmeyi unutmayın.
Not: Hâlâ None olan yapılandırma alanları, üretim döngüsü sırasında GenerationConfig._get_default_generation_params() tarafından geçersiz kılınır. Bu alanlar için farklı değerler kullanmak istiyorsanız, bunları üretim yapılandırmasında açıkça belirlemeye özen gösterin.
from_pretrained
< source >( pretrained_model_name: str | os.PathLikeconfig_file_name: str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs ) → GenerationConfig
Parametreler
- pretrained_model_name (
strveyaos.PathLike) — Bunlardan biri olabilir:- bir dize, huggingface.co'daki bir model deposunda barındırılan önceden eğitilmiş bir model yapılandırmasının model kimliği.
- save_pretrained() yöntemi kullanılarak bir yapılandırma dosyası kaydedilen bir dizinin yolunu, örneğin
./my_model_directory/.
- config_file_name (
strveyaos.PathLike, isteğe bağlı, varsayılan"generation_config.json") —pretrained_model_nameiçinden yüklenecek üretim yapılandırma JSON dosyasının adı. - cache_dir (
strveyaos.PathLike, isteğe bağlı) — Standart önbellek kullanılmayacaksa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alınacağı dizinin yolu. - force_download (
bool, isteğe bağlı, varsayılanFalse) — Yapılandırma dosyalarının (yeniden) indirilmesini zorlayıp mevcut ise önbellekteki sürümlerin üzerine yazılmasını belirtir. - proxies (
dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örn.{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.Vekiller her istekte kullanılır. - token (
strveyabool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise veya belirtilmezse,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı, varsayılan olarak"main") — Kullanılacak belirli model sürümü. huggingface.co üzerinde modelleri ve diğer artefaktları depolamak için git tabanlı bir sistem kullandığımız için bir dal adı, etiket adı veya commit kimliği olabilir, bu nedenlerevisiongit tarafından izin verilen herhangi bir tanımlayıcı olabilir.Hub'da oluşturduğunuz bir çekme isteğini test etmek için
revision="refs/pr/<pr_number>"parametresini iletebilirsiniz. - return_unused_kwargs (
bool, isteğe bağlı, varsayılan olarakFalse) — eğerFalse, ise bu fonksiyon yalnızca son yapılandırma nesnesini döndürür.Trueise, bu fonksiyon unused_kwargs'nın yapılandırma öznitelikleri olmayan anahtar/değer çiftlerinden oluşan bir sözlük olduğuTuple(config, unused_kwargs)döndürür; yanikwargs'nınconfig'yi güncellemek için kullanılmamış ve aksi halde yok sayılan kısmıdır. - subfolder (
str, isteğe bağlı, varsayılan"") — İlgili dosyalar huggingface.co üzerindeki model deposunun bir alt klasöründe konumlanıyorsa, klasör adını burada belirleyebilirsiniz. - kwargs (
dict[str, Any], isteğe bağlı) — kwargs içindeki yapılandırma öznitelikleri olan anahtarların değerleri, yüklenen değerlerin üzerine yazmak için kullanılır. Anahtarı yapılandırma özniteliği olmayan anahtar/değer çiftleriyle ilgili davranış,return_unused_kwargsanahtar parametresi tarafından kontrol edilir.
Dönüş değeri
Bu önceden eğitilmiş modelden örneklenen yapılandırma nesnesi.
Bir üretim yapılandırma dosyasından GenerationConfig örneği oluşturun.
Örnekler:
>>> from transformers import GenerationConfig
>>> # Download configuration from huggingface.co and cache.
>>> generation_config = GenerationConfig.from_pretrained("openai-community/gpt2")
>>> # E.g. config was saved using *save_pretrained('./test/saved_model/')*
>>> generation_config.save_pretrained("./test/saved_model/")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/")
>>> # You can also specify configuration names to your generation configuration file
>>> generation_config.save_pretrained("./test/saved_model/", config_file_name="my_configuration.json")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/", "my_configuration.json")
>>> # If you'd like to try a minor variation to an existing configuration, you can also pass generation
>>> # arguments to `.from_pretrained()`. Be mindful that typos and unused arguments will be ignored
>>> generation_config, unused_kwargs = GenerationConfig.from_pretrained(
... "openai-community/gpt2", top_k=1, foo=False, do_sample=True, return_unused_kwargs=True
... )
>>> generation_config.top_k
1
>>> unused_kwargs
{'foo': False}from_model_config
< source >( model_config: typing.Union[ForwardRef('PreTrainedConfig'), dict] ) → GenerationConfig
Bir PreTrainedConfig nesnesinden bir GenerationConfig örnekler. Bu işlev, üretim parametreleri içerebilen eski PreTrainedConfig nesnelerini bağımsız bir GenerationConfig nesnesine dönüştürmek için kullanışlıdır.
save_pretrained
< source >( save_directory: str | os.PathLikeconfig_file_name: str | os.PathLike | None = Nonepush_to_hub: bool = False**kwargs )
Parametreler
- save_directory (
strveyaos.PathLike) — Yapılandırma JSON dosyasının kaydedileceği dizin (varsa oluşturulur). - config_file_name (
strveyaos.PathLike, isteğe bağlı, varsayılan"generation_config.json") —save_directoryiçinde kaydedilecek üretim yapılandırma JSON dosyasının adı. - push_to_hub (
bool, isteğe bağlı, varsayılanFalse) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyurepo_idile belirtebilirsiniz (varsayılan olarak ad alanınızdakisave_directoryadını kullanır). - kwargs (
dict[str, Any], isteğe bağlı) — push_to_hub() yöntemine iletilen ek anahtar kelime argümanları.
Bir nesil yapılandırma nesnesini, from_pretrained() sınıf yöntemiyle yeniden yüklenebilmesi için save_directory dizinine kaydedin.
güncelle
< source >( defaults_only = Falseallow_custom_entries = False**kwargs ) → dict[str, Any]
Parametreler
- defaults_only (
bool, isteğe bağlı, varsayılanFalse) — Yapılandırmadaki tüm anahtarlarınkwargsile mi yoksa yalnızcaNone(yani varsayılan değer) olarak ayarlananların mı güncelleneceğini belirtir. - allow_custom_entries (
bool, isteğe bağlı, varsayılanFalse) — Mevcut yapılandırmada bulunmuyorsa,kwargsile özel girdilerin yapılandırmaya eklenmesine izin verilip verilmeyeceğini belirtir. - kwargs (
dict[str, Any]) — Bu sınıfı geçici olarak güncellemek için nitelikler sözlüğü.
Dönüş değeri
dict[str, Any]
Örneği güncellemek için kullanılmayan tüm anahtar-değer çiftlerini içeren sözlük.
Bu sınıf örneğinin özniteliklerini, kwargs içindeki öznitelikler mevcut özniteliklerle eşleşiyorsa günceller ve kullanılmayan tüm kwargs'ları döndürür.
doğrula
< source >( strict = Falseuser_set_attributes: set[str] | None = None )
Parametreler
- strict (bool) — True ise, tespit edilen herhangi bir sorun için bir istisna fırlatılır. False ise, sorunlar yalnızca günlüğe kaydedilir.
- user_set_attributes (set[str], isteğe bağlı) — Çağıranın açıkça sağladığı öznitelik adları. Sağlandığında, çakışan bayrak kombinasyonlarına (ör.
do_sample=Falseiken yalnızca örneklemeye ait bayrakların ayarlanması) ilişkin “küçük sorun” uyarıları, yalnızca çakışan bayrak bu kümede yer alıyorsa tetiklenir — bu da değerin modelin varsayılangeneration_config.jsondosyasından devralınması durumunda gürültülü uyarıları önler.Noneolduğunda, ayarlanmış tüm öznitelikler kullanıcı tarafından ayarlanmış olarak kabul edilir (doğrudanvalidate()çağrıları için geriye dönük uyumlu davranış).
GenerationConfig örneğinin öznitelik değerlerini doğrular. Yalnızca yapılandırma örneğinden tespit edilebilecek hatalı parametrelendirmelerin varlığında istisnalar fırlatır.
Burada doğrulanmayan bazı parametrelerin, üretim uzunluğuyla ilgili parametreler gibi diğer girdilere ve/veya modele bağlı olabileceğinden, generate çalışma zamanında doğrulanmasının en iyi sonuçları vereceğini unutmayın.
get_generation_mode
< source >( assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None ) → GenerationMode
GenerationConfig örneğinin tetiklediği üretim modunu döndürür.
GenerationMixin
Model sınıflarında karışım (mixin) olarak kullanılacak, otoregresif metin üretimi için tüm işlevleri içeren bir sınıf.
Bu sınıftan türetme, modelin başlatma sırasında bir GenerationConfig yüklemesi veya transformers CI'de generate-ile ilgili testlerin çalıştırılmasını sağlama gibi üretimle ilgili özel davranışlara sahip olmasına neden olur.
Bir model sınıfı, generate gibi yöntemlerin çağrılmasını etkinleştirmek için veya GenerationMixin'e doğrudan veya dolaylı olarak bağımlı, generate gibi herkese açık yöntemlerle yaklaşık olarak aynı arayüze sahip özel bir generate yöntemi tanımladığında GenerationMixin'den devralmalıdır. Üç örnek:
LlamaForCausalLM, mixin içindekigenerateve diğer genel yöntemlerin çağrılabilmesini sağlamak içinGenerationMixin'den devralmalıdır;BlipForQuestionAnswering,GenerationMixin.generateile yaklaşık olarak aynı arayüze sahip özel birgenerateyöntemine sahiptir (birkaç ek argümanı ve aynı çıktısı vardır). Bu fonksiyon ayrıca, iç bir model aracılığıyla dolaylı olarakGenerationMixin.generateçağrısını yapar. Bu nedenle,BlipForQuestionAnswering, kod tabanımızdaki tüm üretimle ilgili otomasyondan yararlanmak içinGenerationMixinsınıfından devralmalıdır;BarkModelözel birgenerateyöntemine sahiptir ve iç modellerinden biriGenerationMixin.generateçağrısı yapar. Ancak,generateyöntemiGenerationMixin.generateile aynı arayüzü paylaşmaz. Bu durumda,generatearayüzünü bozduğu içinBarkModel,GenerationMixinsınıfından miras almamalıdır.
Sınıf, şunlar için kullanılabilen generate() yöntemini sunar:
num_beams=1vedo_sample=Falseise greedy decodingnum_beams=1vedo_sample=Trueise multinomial samplingnum_beams>1vedo_sample=Falseise beam-search decodingnum_beams>1vedo_sample=Trueise beam-search multinomial samplingassistant_modelveyaprompt_lookup_num_tokens.generate()fonksiyonuna geçiriliyorsa assisted decoding
Çözme stratejileri hakkında daha fazla bilgi için metin oluşturma stratejileri kılavuzuna bakın.
generate
< source >( inputs: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool | None = Noneassistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = Nonestreamer: typing.Optional[ForwardRef('BaseStreamer')] = Nonenegative_prompt_ids: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonecustom_generate: str | collections.abc.Callable | None = None**kwargs ) → ModelOutput or torch.LongTensor
Parametreler
- inputs (
torch.Tensor, modağa göre değişen şekle sahip, isteğe bağlı) — Üretim için istem olarak veya kodlayıcıya model girdisi olarak kullanılan dizi.Noneise yöntem bunubos_token_idve 1 parti boyutu ile başlatır. Sadece çözücü modeller içininputsinput_idsbiçiminde olmalıdır. Kodlayıcı-çözücü modeller için inputs,input_ids,input_values,input_featuresveyapixel_values'den herhangi birini temsil edebilir. - generation_config (GenerationConfig, isteğe bağlı) —
Üretim çağrısı için temel parametrelendirme olarak kullanılacak üretim yapılandırması.
**kwargsgenerate'e aktarılan vegeneration_configöznitelikleriyle eşleşenler bunları geçersiz kılar.generation_configsağlanmazsa, varsayılanı kullanılır; bunun yükleme önceliği şöyledir: 1) varsageneration_config.jsonmodel dosyasından; 2) model yapılandırmasından. Belirtilmeyen parametrelerin GenerationConfig'in varsayılan değerlerini devralacağını ve üretimi parametrelendirmek için bunların belgelerinin kontrol edilmesi gerektiğini lütfen unutmayın. - logits_processor (
LogitsProcessorList, isteğe bağlı) — Argümanlardan ve üretim yapılandırmasından oluşturulan varsayılan logits işleyicilerini tamamlayan özel logits işleyicileri. Argümanlarla veya bir üretim yapılandırmasıyla zaten oluşturulmuş bir logits işleyicisi geçirilirse bir hata fırlatılır. Bu özellik ileri düzey kullanıcılar için tasarlanmıştır. - stopping_criteria (
StoppingCriteriaList, isteğe bağlı) — Argümanlardan ve bir generation config'ten oluşturulan varsayılan durdurma kriterlerini tamamlayan özel durdurma kriterleri. Argümanlarla veya bir generation config ile zaten oluşturulmuş bir durdurma kriteri geçirilirse bir hata fırlatılır. Durdurma kriterinizscoresgirdisine bağlıysa,generatefonksiyonunareturn_dict_in_generate=True, output_scores=Trueparametrelerini geçirdiğinizden emin olun. Bu özellik ileri düzey kullanıcılar için tasarlanmıştır. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], isteğe bağlı) — Sağlanırsa, bu fonksiyon her adımda beam search'i yalnızca izin verilen tokenlara kısıtlar. Sağlanmazsa hiçbir kısıtlama uygulanmaz. Bu fonksiyon 2 argüman alır: batch kimliğibatch_idveinput_ids. Batch kimliğibatch_idve daha önce üretilen tokenlarinputs_idskoşullarına bağlı olarak, bir sonraki üretim adımı için izin verilen tokenların listesini döndürmelidir. Bu argüman, Autoregressive Entity Retrieval makalesinde anlatıldığı gibi, önekle (prefix) koşullu kısıtlı üretim için faydalıdır. - synced_gpus (
bool, isteğe bağlı) — max_length değerine ulaşılana kadar while döngüsünün çalışmaya devam edip etmeyeceğini belirler. Aksi belirtilmedikçe, birden fazla GPU ileFullyShardedDataParallelveya DeepSpeed ZeRO Stage 3 kullanılıyorsa, bir GPU diğer GPU'lar bitirmeden önce üretimi tamamlarsa ölü kilitlenmeyi (deadlock) önlemek için bu bayrakTrueolarak ayarlanır. Aksi halde varsayılan değerFalse'tir. - assistant_model (
PreTrainedModel, isteğe bağlı) — Üretimi hızlandırmak için kullanılabilen bir asistan modeli. Asistan modelin, tam olarak aynı tokenizer'a sahip olması gerekir. Hızlandırma, asistan model ile aday token'ları tahmin etmenin, generate çağrısını yaptığınız modelle üretim çalıştırmaktan çok daha hızlı olması durumunda elde edilir. Bu nedenle asistan modelin çok daha küçük olması gerekir. - streamer (
BaseStreamer, isteğe bağlı) — Üretilen dizilerin akışını sağlamak için kullanılacak Streamer nesnesi. Üretilen jetonlarstreamer.put(token_ids)üzerinden geçirilir ve akışın herhangi bir sonraki işlenmesinden streamer sorumludur. - negative_prompt_ids (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — CFG gibi bazı işlemciler için gereken negatif prompt. Batch boyutu, girdi batch boyutuyla eşleşmelidir. Bu deneysel bir özelliktir ve gelecekteki sürümlerde kırıcı API değişikliklerine tabi olabilir. - negative_prompt_attention_mask (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) —negative_prompt_idsiçin attention_mask. - custom_generate (
strveyaCallable, isteğe bağlı) — Aşağıdakilerden biri:str(Hugging Face Hub deposu adı): standartgenerateyöntemi yerine, o depodakicustom_generate/generate.pydosyasında tanımlanan özelgenerateişlevini çalıştırır. Depo, üretim mantığını tamamen değiştirir ve dönüş tipi farklı olabilir.str(yerel depo yolu): yukarıdakiyle aynı ancak yerel bir yoldan. Yerel dizinler de yerelcustom_generate/generate.pyçalıştırıldığı içintrust_remote_code=Truegerektirir.Callable:generate, standart girdi hazırlama adımlarını gerçekleştirdikten sonra, çözümleme döngüsünü çalıştırmak için sağlanan çağrılabiliri (callable) çağırır. Daha fazla bilgi için belgelere bakın.
- kwargs (
dict[str, Any], isteğe bağlı) —generation_configiçin ad hoc parametrelendirme ve/veya modelinforwardfonksiyonuna iletilecek ek model-özel kwargs'lar. Model bir encoder-decoder modeli ise, encoder'a özgü kwargs'lar öneklenmemeli ve decoder'a özgü kwargs'lar decoder_ önekiyle başlamalıdır.
Dönüş değeri
ModelOutput veya torch.LongTensor
Bir ModelOutput (return_dict_in_generate=True ise veya config.return_dict_in_generate=True olduğunda) ya da bir torch.LongTensor.
Model bir encoder-decoder modeli değilse (model.config.is_encoder_decoder=False), olası
ModelOutput türleri şunlardır:
Model bir kodlayıcı-çözücü modeli (model.config.is_encoder_decoder=True) ise olası
ModelOutput türleri şunlardır:
Dil modelleme başlığına sahip modeller için token kimliği dizileri üretir.
Çoğu üretim kontrol parametresi,
generation_configiçinde ayarlanır; bu parametre geçirilmezse, modelin varsayılan üretim yapılandırması kullanılır.generation_configiçindeki herhangi bir değeri, generate() fonksiyonuna ilgili parametreleri geçirerek geçersiz kılabilirsiniz, örneğin.generate(inputs, num_beams=4, do_sample=True).Üretim stratejileri ve kod örneklerinin genel bakışı için şu kılavuza göz atın.
compute_transition_scores
< source >( sequences: Tensorscores: tuplebeam_indices: typing.Optional[torch.Tensor] = Nonenormalize_logits: bool = False ) → torch.Tensor
Parametreler
- sequences (
torch.LongTensor) — Oluşturulan diziler. İkinci boyut (sequence_length),max_length'a eşittir veya tüm toplamlareos_token_idnedeniyle erken bittiyse daha kısadır. - scores (
tuple(torch.FloatTensor)) — Her üretim adımında sözlükteki her token için geçiş skorları. Bu beam'de daha önce üretilen tokenların log softmax'ine koşullu token log olasılıklarından oluşan beam geçiş skorları. En fazlamax_new_tokensöğe içeren (her üretilen token için bir öğe), her tensörün şekli(batch_size*num_beams, config.vocab_size)olantorch.FloatTensordemeti. - beam_indices (
torch.LongTensor, isteğe bağlı) — Her üretim adımında üretilen token kimliğinin beam indeksleri. Şekli(batch_size*num_return_sequences, sequence_length)olan birtorch.LongTensor. Yalnızca üretim sırasındanum_beams>1ise gereklidir. - normalize_logits (
bool, isteğe bağlı, varsayılanFalse) — Logitlerin normalize edilip edilmeyeceği (eski nedenlerden ötürü normalize edilmemiş olabilir).
Dönüş değeri
torch.Tensor
Geçiş skorlarını (logit'leri) içeren, (batch_size*num_return_sequences, sequence_length) biçiminde bir torch.Tensor
Üretim puanları (ve beam search kullanıldıysa beam indeksleri) verildiğinde dizilerin geçiş puanlarını hesaplar. Bu, üretim sırasında seçilen jetonların puanlarını hızlı bir şekilde elde etmek için kullanışlı bir yöntemdir.
Örnekler:
>>> from transformers import GPT2Tokenizer, AutoModelForCausalLM
>>> import numpy as np
>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
>>> tokenizer.pad_token_id = tokenizer.eos_token_id
>>> inputs = tokenizer(["Today is"], return_tensors="pt")
>>> # Example 1: Print the scores for each token generated with Greedy Search
>>> outputs = model.generate(**inputs, max_new_tokens=5, return_dict_in_generate=True, output_scores=True)
>>> transition_scores = model.compute_transition_scores(
... outputs.sequences, outputs.scores, normalize_logits=True
... )
>>> # input_length is the length of the input prompt for decoder-only models, like the GPT family, and 1 for
>>> # encoder-decoder models, like BART or T5.
>>> input_length = 1 if model.config.is_encoder_decoder else inputs.input_ids.shape[1]
>>> generated_tokens = outputs.sequences[:, input_length:]
>>> for tok, score in zip(generated_tokens[0], transition_scores[0]):
... # | token | token string | log probability | probability
... print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.3f} | {np.exp(score.numpy()):.2%}")
| 262 | the | -1.414 | 24.33%
| 1110 | day | -2.609 | 7.36%
| 618 | when | -2.010 | 13.40%
| 356 | we | -1.859 | 15.58%
| 460 | can | -2.508 | 8.14%
>>> # Example 2: Reconstruct the sequence scores from Beam Search
>>> outputs = model.generate(
... **inputs,
... max_new_tokens=5,
... num_beams=4,
... num_return_sequences=4,
... return_dict_in_generate=True,
... output_scores=True,
... )
>>> transition_scores = model.compute_transition_scores(
... outputs.sequences, outputs.scores, outputs.beam_indices, normalize_logits=False
... )
>>> # If you sum the generated tokens' scores and apply the length penalty, you'll get the sequence scores.
>>> # Tip 1: recomputing the scores is only guaranteed to match with `normalize_logits=False`. Depending on the
>>> # use case, you might want to recompute it with `normalize_logits=True`.
>>> # Tip 2: the output length does NOT include the input length
>>> output_length = np.sum(transition_scores.numpy() < 0, axis=1)
>>> length_penalty = model.generation_config.length_penalty
>>> reconstructed_scores = transition_scores.sum(axis=1) / (output_length**length_penalty)
>>> print(np.allclose(outputs.sequences_scores, reconstructed_scores))
TrueContinuousMixin
Modellerin sürekli toplama (continuous batching) yeteneklerini eklemesi için karışım (mixin) sınıfı. Sürekli toplamanın üç giriş noktası vardır:
- Sürekli toplu işleme (continuous batching) için asıl giriş noktası olan
init_continuous_batching - Kendisi
init_continuous_batchingetrafında bir sarmalayıcı olancontinuous_batching_context_manager - Aslında
continuous_batching_context_manageretrafında bir sarmalayıcı olangenerate_batch
Bunlar bu sırada tanımlanır. Bu üç giriş noktasından herhangi birinde yapılan herhangi bir değişiklik, diğer ikisinde de yansıtılmalıdır.
continuous_batching_context_manager
< source >( generation_config: transformers.generation.configuration_utils.GenerationConfig | None = Noneblock: bool = Truetimeout: float | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Nonepersistent_manager: bool = Falsewarmup: bool = Trueworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None )
Sürekli toplu işleme (continuous batching) yöneticisini güvenli bir şekilde kullanmak için bir bağlam yöneticisi. Argümanlar, init_continuous_batching ile benzerdir, ancak şunlar hariç:
- block: yönetici durdurulurken iş parçacığının (thread) engellenip engellenmeyeceğini belirtir. Varsayılan değer True'dur.
- timeout: iş parçacığının durması için beklenmesi gereken maksimum süre. Varsayılan değer None (zaman aşımı yok).
- warmup: çalıştırılmadan önce en büyük boyutlarda CUDA grafiklerini önceden yakalamak için kullanılıp kullanılmayacağı. Varsayılan değer True'dur.
Önbelleğe alınmış sürekli toplu işleme yöneticisini yok edin ve GPU kaynaklarını serbest bırakın.
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.
init_continuous_batching
< source >( generation_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonecontinuous_batching_config: transformers.generation.configuration_utils.ContinuousBatchingConfig | None = Noneworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None ) → ContinuousBatchingManager
Parametreler
- generation_config — İsteğe bağlı bir üretim yapılandırması, bir CompileConfig nesnesi içerebilir
- continuous_batching_config — İsteğe bağlı sürekli toplama yapılandırması
- workload_hints — Varsayılan değerler için sürekli toplu işleme yöneticisinin daha iyi kararlar vermesine yardımcı olmak için isteğe bağlı WorkloadHints
Dönüş değeri
ContinuousBatchingManager
İstekleri eklemek ve sonuçları almak için yönetici örneği.
Sürekli toplu işleme (continuous batching) çıkarımı için bir yönetici başlatın.
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.
Zamanlayıcı
sınıf transformers.generation.Scheduler
< source >( cache: PagedAttentionCachesafety_margin: floatmax_requests_per_batch: int )
Sürekli toplu işlemci içinde istekleri zamanlamak için soyut temel sınıf. Zamanlayıcılar, isteklerin bekleme kuyruğuna eklendiği andan işleme için zamanlanana kadar olan yaşam döngüsünü yönetir. Farklı zamanlayıcılar, istekleri önceliklendirme ve toplu işleme için farklı stratejiler uygular.
Bekleme listesine bir istek ekler.
İptal edilen tüm istekleri aktif ve bekleme kuyruklarından kaldırın.
Bir isteğin işlenmesini tamamlar ve ona ayrılmış önbellek bloklarını serbest bırakır. Bu yöntem, bir istek üretimi tamamladığında veya bir hata ile karşılaştığında çağrılır.
Aktif bir istek için üretilen tokenları alır.
İşlenecek hazır isteklerin olup olmadığını kontrol eder.
Bir isteğin iptal edilip edilmediğini veya kaldırılıp kaldırılmadığını kontrol eder.
Yeni bir üretim döngüsü için zamanlayıcı durumunu sıfırlayın.
Mevcut token ve önbellek bütçelerine göre sonraki parti için istekleri zamanlar. Bu yöntem, bütçeleri ve zamanlayıcının önceliklendirme kurallarını dikkate alarak mevcut partide işlenecek istekleri seçer. token_budget, bir partide işlenebilecek maksimum token sayısını, cache_budget ise bir partide okunabilecek maksimum KV önbellek girdisi sayısını belirtir. Zamanlanmış istek listesini “FutureRequestState” biçiminde, decode hızlı yolunun kullanılıp kullanılamayacağını gösteren bir boolean, toplam sorgu token sayısı ve okunan maksimum kv token sayısını döndürür.
İptal isteğini işaretler.
FIFOScheduler
sınıf transformers.generation.FIFOScheduler
< source >( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )
Bu zamanlayıcı, istekleri geldikleri sırada işler; bu da çözümleme isteklerinin ön işleme isteklerine göre öncelikli olduğu anlamına gelir.
PrefillFirstScheduler
sınıf transformers.generation.PrefillFirstScheduler
< source >( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )
Bölünmüş prefill isteklerini çözümleme isteklerine göre önceliklendiren zamanlayıcı. Bu zamanlayıcı, yeni çözümleme istekleri işlenmeden önce bölünmüş prefill isteklerinin (kısmen işlenmiş istemlerin devamı olan istekler) tamamlanmasını sağlar.