Transformers documentation
Generasi
Generasi
Setiap framework memiliki metode generate untuk generasi teks yang diimplementasikan di kelas GenerationMixin masing-masing:
- PyTorch generate() diimplementasikan di GenerationMixin.
Anda dapat memparametrisasi metode generate dengan instance kelas GenerationConfig. Silakan merujuk ke kelas ini untuk daftar lengkap parameter generasi, yang mengontrol perilaku metode generasi.
Untuk mempelajari cara memeriksa konfigurasi generasi model, apa saja nilai defaultnya, cara mengubah parameter secara ad hoc, dan cara membuat serta menyimpan konfigurasi generasi yang dikustomisasi, silakan lihat panduan strategi generasi teks. Panduan ini juga menjelaskan cara menggunakan fitur terkait, seperti streaming token.
GenerationConfig
kelas transformers.GenerationConfig
< source >( **kwargs )
Parameter yang mengontrol panjang output
- max_length (
int, opsional) —max_new_tokensdirekomendasikan untuk mengontrol berapa banyak token yang dihasilkan model.max_lengthtetap ada untuk kompatibilitas mundur. - max_new_tokens (
int, opsional) — Jumlah maksimum token yang akan dihasilkan, mengabaikan jumlah token dalam prompt. - min_length (
int, opsional) — Panjang minimum dari urutan yang akan dihasilkan. Bersesuaian dengan panjang prompt input +min_new_tokens. Efeknya ditimpa olehmin_new_tokens, jika juga disetel. - min_new_tokens (
int, opsional) — Jumlah minimum token yang akan dihasilkan, mengabaikan jumlah token dalam prompt. - early_stopping (
boolataustr, opsional) — Mengontrol kondisi penghentian untuk metode berbasis beam, seperti beam-search. Menerima nilai-nilai berikut:True, di mana generasi berhenti begitu adanum_beamskandidat lengkap;False, di mana heuristik diterapkan dan generasi berhenti ketika sangat tidak mungkin menemukan kandidat yang lebih baik;"never", di mana prosedur beam search hanya berhenti ketika tidak mungkin lagi ada kandidat yang lebih baik (algoritma beam search kanonik). - max_time (
float, opsional) — Jumlah waktu maksimum yang Anda izinkan untuk komputasi berjalan, dalam satuan detik. generation akan tetap menyelesaikan pass saat ini setelah waktu yang dialokasikan telah terlewati. - stop_strings (
strataulist[str], opsional) — String atau daftar string yang harus mengakhiri generasi jika model mengoutputkannya.
Parameter yang mengontrol strategi generasi yang digunakan
- do_sample (
bool) — Apakah akan menggunakan sampling; jika tidak, gunakan greedy decoding. - num_beams (
int, opsional) — Jumlah beam untuk beam search. 1 berarti tidak ada beam search. - use_mtp — (
bool): Apakah akan menggunakan Multi-Token Prediction (MTP) jika model mendukungnya.
Parameter yang mengontrol cache
- use_cache (
bool) — Apakah model harus menggunakan perhatian kunci/nilai terakhir yang lalu (jika berlaku untuk model) untuk mempercepat decoding. - cache_implementation (
str, opsional) — Nama kelas cache yang akan diinstansiasi digenerate, untuk decoding yang lebih cepat. Nilai yang mungkin adalah:"dynamic": DynamicCache"static": StaticCache"offloaded":DynamicCache(offloaded=True)"offloaded_static":StaticCache(offloaded=True)"quantized": QuantizedCache
Jika tidak ada yang ditentukan, kami akan menggunakan cache default untuk model (yang sering kali adalah DynamicCache). Lihat dokumentasi cache kami untuk informasi lebih lanjut.
- cache_config (
dict, opsional, defaultNone) — Argumen yang digunakan dalam kelas cache key-value dapat diteruskan melaluicache_config. - max_cache_len (
int, opsional) — Hanya digunakan dengan cache statis (cache_implementationdiatur ke"static"atau"offloaded_static"). Menetapkan ukuran awal cache ke panjang ini alih-alihmax_lengthdari panggilan saat ini. Atur sekali ke panggilan terbesar yang Anda perkirakan agar panggilangenerate()berulang dengan prompt yang lebih panjang ataumax_new_tokensyang lebih besar (hingga batas ini) dapat menggunakan ulang cache yang sama alih-alih memicu alokasi ulang dan kompilasi ulangtorch.compile.
Parameter untuk memanipulasi logits output model
- temperature (
float, opsional) — Nilai yang digunakan untuk memodulasi probabilitas token berikutnya. Nilai ini diatur dalam filegeneration_config.jsonmodel. Jika tidak diatur, nilai defaultnya adalah 1.0 - top_k (
int, opsional) — Jumlah token kosakata dengan probabilitas tertinggi yang dipertahankan untuk penyaringan top-k. Nilai ini diatur dalam filegeneration_config.jsonmodel. Jika tidak diatur, nilai defaultnya adalah 50. - top_p (
float, opsional) — Jika diatur ke float < 1, hanya kumpulan token paling probabel terkecil dengan probabilitas yang berjumlahtop_patau lebih tinggi yang dipertahankan untuk generasi. Nilai ini diatur dalam filegeneration_config.jsonmodel. Jika tidak diatur, nilai default adalah 1.0 - min_p (
float, opsional) — Probabilitas minimum token, yang akan diskalakan oleh probabilitas token yang paling mungkin. Nilainya harus berada di antara 0 dan 1. Nilai tipikal berada dalam rentang 0,01-0,2, dengan selektivitas yang sebanding dengan pengaturantop_pdalam rentang 0,99-0,8 (gunakan kebalikan dari nilaitop_pnormal). - top_h (
float, opsional) — Faktor penskalaan anggaran entropi, yang mengontrol seberapa besar entropi distribusi yang dipertahankan saat pengambilan sampel. Harus berupa nilai antara 0 dan 1. Pada setiap langkah, token diurutkan berdasarkan probabilitas, dan prefiks token terkecil yang dipertahankan adalah yang entropi ternormalisasi ulang-nya kurang dari atau sama dengantop_hkali entropi dari distribusi penuh. Nilai yang lebih kecil (misalnya, 0,2–0,5) menghasilkan output yang lebih fokus dan deterministik, sedangkan nilai yang mendekati 1,0 memungkinkan lebih banyak keacakan dan keberagaman. Nilai tipikal berada dalam rentang 0,3–0,6. - typical_p (
float, opsional) — Ukuran tipikalitas lokal mengukur seberapa mirip probabilitas kondisional untuk memprediksi token target berikutnya dengan probabilitas kondisional yang diharapkan untuk memprediksi token acak berikutnya, mengingat teks parsial yang sudah dihasilkan. Jika diatur ke float < 1, himpunan terkecil dari token-token yang paling tipikal secara lokal dengan probabilitas yang berjumlahtypical_patau lebih tinggi akan dipertahankan untuk generasi. Lihat makalah ini untuk detail lebih lanjut. - epsilon_cutoff (
float, opsional) — Jika diatur ke float yang benar-benar berada di antara 0 dan 1, hanya token dengan probabilitas kondisional yang lebih besar dariepsilon_cutoffyang akan diambil sampelnya. Dalam makalah, nilai yang disarankan berkisar dari 3e-4 hingga 9e-4, tergantung pada ukuran model. Lihat Truncation Sampling as Language Model Desmoothing untuk detail lebih lanjut. - eta_cutoff (
float, opsional) — Sampling eta adalah hibrida dari sampling tipikal lokal dan sampling epsilon. Jika diatur ke float yang benar-benar berada di antara 0 dan 1, sebuah token hanya dipertimbangkan jika nilainya lebih besar darieta_cutoffatausqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits))). Istilah terakhir secara intuitif adalah probabilitas token berikutnya yang diharapkan, yang diskalakan dengansqrt(eta_cutoff). Dalam makalahnya, nilai yang disarankan berkisar dari 3e-4 hingga 2e-3, tergantung pada ukuran model. Lihat Truncation Sampling as Language Model Desmoothing untuk detail lebih lanjut. - repetition_penalty (
float, opsional) — Parameter untuk penalti pengulangan. 1.0 berarti tidak ada penalti. Lihat makalah ini untuk detail lebih lanjut. - encoder_repetition_penalty (
float, opsional) — Parameter untuk encoder_repetition_penalty. Denda eksponensial untuk urutan yang tidak ada di input asli. 1.0 berarti tidak ada denda. - length_penalty (
float, opsional) — Hukuman eksponensial terhadap panjang yang digunakan dengan generasi berbasis beam. Hukuman ini diterapkan sebagai eksponen terhadap panjang urutan, yang kemudian digunakan untuk membagi skor urutan. Karena skor adalah kemungkinan log dari urutan (yaitu negatif),length_penalty> 0.0 mendorong urutan yang lebih panjang, sedangkanlength_penalty< 0.0 mendorong urutan yang lebih pendek. - no_repeat_ngram_size (
int, opsional) — Jika diatur ke int > 0, semua ngram dengan ukuran tersebut hanya dapat muncul sekali. - bad_words_ids (
list[list[int]], opsional) — Daftar dari daftar id token yang tidak diizinkan untuk dihasilkan. Periksa NoBadWordsLogitsProcessor untuk dokumentasi dan contoh lebih lanjut. - renormalize_logits (
bool) — Apakah logits akan dinormalisasi ulang setelah semua logits processors diterapkan (termasuk yang kustom). Sangat disarankan untuk mengatur flag ini keTruekarena algoritma pencarian mengasumsikan bahwa skor logits telah dinormalisasi, tetapi beberapa logit processors dapat merusak normalisasi tersebut. - forced_bos_token_id (
int, opsional, defaultnyamodel.config.forced_bos_token_id) — ID token yang dipaksa sebagai token pertama yang dihasilkan setelahdecoder_start_token_id. Berguna untuk model multibahasa seperti mBART di mana token pertama yang dihasilkan harus berupa token bahasa target. - 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) — Apakah akan menghapus kemungkinan output nan dan inf dari model untuk mencegah metode generasi mengalami crash. Perhatikan bahwa penggunaanremove_invalid_valuesdapat memperlambat generasi. - exponential_decay_length_penalty (
tuple(int, float), opsional) — Tuple ini menambahkan penalti panjang yang meningkat secara eksponensial, setelah sejumlah token tertentu telah dihasilkan. Tuple tersebut harus terdiri dari:(start_index, decay_factor)di manastart_indexmenunjukkan di mana penalti dimulai dandecay_factormewakili faktor peluruhan eksponensial - suppress_tokens (
list[int], opsional) — Daftar token yang akan ditekan saat generasi. Logit processorSuppressTokensakan mengatur log prob mereka menjadi-infsehingga tidak diambil sampel. - begin_suppress_tokens (
list[int], opsional) — Daftar token yang akan ditekan di awal generasi. Prosesor logitSuppressBeginTokensakan mengatur probabilitas log mereka menjadi-infsehingga tidak diambil sampel. - sequence_bias (
dict[tuple[int], float], opsional)) — Kamus yang memetakan urutan token ke istilah bias-nya. Bias positif meningkatkan peluang urutan tersebut dipilih, sedangkan bias negatif melakukan kebalikannya. Periksa SequenceBiasLogitsProcessor untuk dokumentasi dan contoh lebih lanjut. - token_healing (
bool) — Memperbaiki token ekor pada prompt dengan menggantinya dengan ekstensi yang sesuai. Hal ini meningkatkan kualitas penyelesaian untuk prompt yang terpengaruh oleh bias tokenisasi serakah. - guidance_scale (
float, opsional) — Skala panduan untuk classifier free guidance (CFG). CFG diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong model untuk menghasilkan sampel yang lebih erat kaitannya dengan prompt input, biasanya dengan mengorbankan kualitas yang lebih buruk. - watermarking_config (
BaseWatermarkingConfigataudict, opsional) — Argumen yang digunakan untuk memberi watermark pada keluaran model dengan menambahkan bias kecil pada himpunan token “green” yang dipilih secara acak. Lihat dokumentasi SynthIDTextWatermarkingConfig dan WatermarkingConfig untuk detail lebih lanjut. Jika diteruskan sebagaiDict, akan dikonversi menjadiWatermarkingConfigsecara internal.
Parameter yang mendefinisikan variabel keluaran dari generate
- num_return_sequences (
int, opsional) — Jumlah urutan yang dikembalikan dan dihitung secara independen untuk setiap elemen dalam batch. - output_attentions (
bool) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihatattentionsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_hidden_states (
bool) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihathidden_statesdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_scores (
bool) — Apakah skor prediksi akan dikembalikan atau tidak. Lihatscoresdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - output_logits (
bool) — Apakah akan mengembalikan skor logit prediksi yang belum diproses. Lihatlogitsdi bawah tensor yang dikembalikan untuk detail lebih lanjut. - return_dict_in_generate (
bool) — Apakah akan mengembalikan ModelOutput, alih-alih hanya mengembalikan urutan yang dihasilkan. Flag ini harus disetel keTrueuntuk mengembalikan cache generasi (ketikause_cacheadalahTrue) atau output opsional (lihat flag yang diawali denganoutput_)
Token khusus yang dapat digunakan saat proses generasi
- pad_token_id (
int, opsional) — ID dari token padding. - bos_token_id (
int, opsional) — ID dari token awal-sekuens. - eos_token_id (
Union[int, list[int]], opsional) — ID dari token end-of-sequence. Secara opsional, gunakan daftar untuk mengatur beberapa token end-of-sequence.
Parameter generasi yang hanya ada pada model encoder-decoder
- encoder_no_repeat_ngram_size (
int, opsional) — Jika diatur ke int > 0, semua ngram dengan ukuran tersebut yang muncul diencoder_input_idstidak dapat muncul didecoder_input_ids. - decoder_start_token_id (
intataulist[int], opsional) — Jika model encoder-decoder memulai decoding dengan token yang berbeda dari bos, id token tersebut atau daftar dengan panjangbatch_size. Menunjukkan daftar memungkinkan id awal yang berbeda untuk setiap elemen dalam batch (contohnya model multibahasa dengan bahasa target yang berbeda dalam satu batch)
Parameter generasi yang khusus untuk generasi asisten
- is_assistant (
bool) — Apakah model tersebut adalah model asisten (draft). - num_assistant_tokens (
int, opsional) — Menentukan jumlah token spekulatif yang akan dihasilkan oleh model asisten sebelum diperiksa oleh model target pada setiap iterasi. Nilainum_assistant_tokensyang lebih tinggi membuat generasi menjadi lebih spekulatif : Jika model asisten memiliki performa yang baik, percepatan yang lebih besar dapat dicapai; jika model asisten memerlukan banyak koreksi, percepatan yang lebih rendah akan dicapai. - num_assistant_tokens_schedule (
str, opsional) — Menentukan jadwal perubahan token asisten maksimum selama inferensi."heuristic": Ketika semua token spekulatif benar, tingkatkannum_assistant_tokenssebesar 2, selain itu kurangi sebesar 1. Nilainum_assistant_tokensbersifat persisten di antara beberapa panggilan generasi dengan model asisten yang sama."heuristic_transient": Sama seperti"heuristic"tetapinum_assistant_tokensdireset ke nilai awalnya setelah setiap panggilan generasi."constant":num_assistant_tokenstetap tidak berubah selama proses generasi
- assistant_confidence_threshold (
float, opsional) — Ambang batas kepercayaan untuk model asisten. Jika tingkat kepercayaan model asisten terhadap prediksinya untuk token saat ini lebih rendah dari ambang batas ini, model asisten akan menghentikan iterasi generasi token saat ini, bahkan jika jumlah token spekulatif (didefinisikan olehnum_assistant_tokens) belum tercapai. Ambang batas kepercayaan asisten disesuaikan sepanjang iterasi spekulatif untuk mengurangi jumlah forward pass draft dan target yang tidak perlu, dengan bias untuk menghindari false negative. Nilaiassistant_confidence_thresholdbersifat persisten di antara beberapa panggilan generasi dengan model asisten yang sama. Ini adalah versi tanpa supervisi dari dynamic speculation lookahead dari Dynamic Speculation Lookahead Accelerates Speculative Decoding of Large Language Models https://huggingface.co/papers/2405.04304. - prompt_lookup_num_tokens (
int, opsional) — Jumlah token yang akan dioutput sebagai token kandidat. - max_matching_ngram_size (
int, opsional) — Ukuran ngram maksimum yang dipertimbangkan untuk pencocokan dalam prompt. Bawaan adalah 2 jika tidak diberikan. - assistant_early_exit(
int, optional) — Jika diset ke bilangan bulat positif, early exit dari model akan digunakan sebagai asisten. Hanya dapat digunakan dengan model yang mendukung early exit (yaitu model di mana logits dari lapisan antara dapat diinterpretasikan oleh LM head). - assistant_lookbehind(
int, optional) — Jika diset ke bilangan bulat positif, proses re-encoding akan mempertimbangkanassistant_lookbehindtoken asisten terakhir untuk menyelaraskan token dengan benar. Hanya dapat digunakan dengan tokenizer yang berbeda dalam speculative decoding. Lihat blog ini untuk detail lebih lanjut. - target_lookbehind(
int, opsional) — Jika diset ke bilangan bulat positif, proses re-encoding akan mempertimbangkantarget_lookbehindtoken target terakhir untuk menyelaraskan token dengan benar. Hanya dapat digunakan dengan tokenizer yang berbeda dalam speculative decoding. Lihat blog ini untuk detail lebih lanjut. - assistant_ensemble_weight (
float, opsional) — Mengaktifkan verifikasi ensemble statis dalam speculative decoding. Jika diatur ke nilai dalam(0.0, 1.0), verifier menerima token terhadap campuranw * p_target + (1 - w) * q_draftalih-alihp_target, menukar bias distribusi yang terkendali untuk tingkat penerimaan yang lebih tinggi. Default adalahNone, yang menjaga decoding tetap lossless. Memerlukan model asisten untuk mengembalikan logits, sehingga tidak kompatibel dengan prompt lookup decoding. - speculation_type (
str, opsional) — Jenis spekulasi yang diminta. Nilai yang diterima adalahdflash.
Parameter terkait performa dan kompilasi
- compile_config (CompileConfig, opsional) —
Jika menggunakan cache yang dapat dikompilasi, ini mengontrol bagaimana
generateakancompilejalur maju (forward pass) untuk inferensi yang lebih cepat. - disable_compile (
bool) — Apakah akan menonaktifkan kompilasi otomatis dari forward pass. Kompilasi otomatis terjadi ketika kriteria tertentu terpenuhi, termasuk penggunaan cache yang dapat dikompilasi. Silakan buka issue jika Anda menemukan kebutuhan untuk menggunakan flag ini.
Kelas yang menyimpan konfigurasi untuk tugas generasi. Panggilan generate mendukung metode generasi berikut
untuk model text-decoder, text-to-text, speech-to-text, dan vision-to-text:
- greedy decoding jika
num_beams=1dando_sample=False - multinomial sampling jika
num_beams=1dando_sample=True - dekoding beam-search jika
num_beams>1dando_sample=False - beam-search multinomial sampling jika
num_beams>1dando_sample=True - assisted decoding jika
assistant_modelatauprompt_lookup_num_tokensditeruskan ke.generate()
Untuk mempelajari lebih lanjut tentang strategi decoding, lihat panduan strategi generasi teks.
Sejumlah besar flag ini mengontrol logits atau kriteria penghentian dari generasi. Pastikan Anda memeriksa kelas terkait generate untuk deskripsi lengkap tentang manipulasi yang mungkin, serta contoh penggunaannya.
Catatan: field konfigurasi yang masih None akan ditimpa oleh GenerationConfig._get_default_generation_params() selama loop generasi. Jika Anda ingin menggunakan nilai yang berbeda untuk field-field ini, pastikan untuk menyetelnya secara eksplisit dalam konfigurasi generasi.
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
Parameter
- pretrained_model_name (
stratauos.PathLike) — Ini bisa berupa:- sebuah string, model id dari konfigurasi model pretrained yang dihosting di dalam repo model di huggingface.co.
- path ke direktori yang berisi file konfigurasi yang disimpan menggunakan metode
save_pretrained(), misalnya
./my_model_directory/.
- config_file_name (
stratauos.PathLike, opsional, defaultnya"generation_config.json") — Nama file konfigurasi generasi JSON yang akan dimuat daripretrained_model_name. - cache_dir (
stratauos.PathLike, opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh harus di-cache jika cache standar tidak digunakan. - force_download (
bool, opsional, defaultFalse) — Apakah akan memaksa (mengunduh ulang) file konfigurasi dan menimpa versi yang di-cache jika sudah ada. - proxies (
dict[str, str], opsional) — Kamus server proxy untuk digunakan berdasarkan protokol atau endpoint, misalnya{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.Proxy digunakan pada setiap permintaan. - token (
strataubool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, atau tidak ditentukan, akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - revision (
str, opsional, default ke"main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, atau commit id, karena kami menggunakan sistem berbasis git untuk menyimpan model dan artefak lainnya di huggingface.co, jadirevisionbisa berupa identifikasi apa pun yang diizinkan oleh git.Untuk menguji pull request yang Anda buat di Hub, Anda dapat meneruskan
revision="refs/pr/<pr_number>". - return_unused_kwargs (
bool, opsional, defaultnyaFalse) — JikaFalse, maka fungsi ini hanya mengembalikan objek konfigurasi akhir.Jika
True, maka fungsi ini mengembalikanTuple(config, unused_kwargs)di mana unused_kwargs adalah kamus yang terdiri dari pasangan kunci/nilai yang kuncinya bukan atribut konfigurasi: yaitu, bagian darikwargsyang tidak digunakan untuk memperbaruiconfigdan diabaikan. - subfolder (
str, opsional, defaultnya"") — Jika file yang relevan berada di dalam subfolder dari repo model di huggingface.co, Anda dapat menentukan nama folder di sini. - kwargs (
dict[str, Any], opsional) — Nilai dalam kwargs untuk kunci mana pun yang merupakan atribut konfigurasi akan digunakan untuk menimpa nilai yang dimuat. Perilaku terkait pasangan kunci/nilai yang kuncinya bukan atribut konfigurasi dikendalikan oleh parameter kata kuncireturn_unused_kwargs.
Mengembalikan
Objek konfigurasi yang diinstansiasi dari model pretrained ini.
Instansiasi GenerationConfig dari file konfigurasi generasi.
Contoh:
>>> 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
Membuat instans GenerationConfig dari PreTrainedConfig. Fungsi ini berguna untuk mengonversi objek PreTrainedConfig lama, yang mungkin berisi parameter generasi, menjadi GenerationConfig yang berdiri sendiri.
save_pretrained
< source >( save_directory: str | os.PathLikeconfig_file_name: str | os.PathLike | None = Nonepush_to_hub: bool = False**kwargs )
Parameter
- save_directory (
stratauos.PathLike) — Direktori tempat file konfigurasi JSON akan disimpan (akan dibuat jika belum ada). - config_file_name (
stratauos.PathLike, opsional, default"generation_config.json") — Nama file JSON konfigurasi generasi yang akan disimpan disave_directory. - push_to_hub (
bool, opsional, defaultFalse) — Apakah model Anda akan didorong ke Hugging Face model hub setelah disimpan. Anda dapat menentukan repository yang ingin Anda tuju denganrepo_id(defaultnya adalah namasave_directorydi namespace Anda). - kwargs (
dict[str, Any], opsional) — Argumen kata kunci tambahan yang diteruskan ke metode push_to_hub().
Simpan objek konfigurasi generasi ke direktori save_directory agar dapat dimuat ulang menggunakan metode kelas from_pretrained().
perbarui
< source >( defaults_only = Falseallow_custom_entries = False**kwargs ) → dict[str, Any]
Parameter
- defaults_only (
bool, opsional, defaultnyaFalse) — Apakah akan memperbarui semua kunci dalam config dengankwargsatau hanya yang diset keNone(yaitu nilai default). - allow_custom_entries (
bool, opsional, defaultnyaFalse) — Apakah mengizinkan pembaruan entri kustom ke dalam konfigurasi dengankwargsjika tidak ada di konfigurasi saat ini. - kwargs (
dict[str, Any]) — Kamus atribut untuk memperbarui kelas ini secara sementara.
Mengembalikan
dict[str, Any]
Dictionary yang berisi semua pasangan kunci-nilai yang tidak digunakan untuk memperbarui instance.
Memperbarui atribut dari instance kelas ini dengan atribut dari kwargs jika cocok dengan atribut yang sudah ada,
dan mengembalikan semua kwargs yang tidak terpakai.
validate
< source >( strict = Falseuser_set_attributes: set[str] | None = None )
Parameter
- strict (bool) — Jika True, lempar pengecualian untuk setiap masalah yang ditemukan. Jika False, hanya catat masalah.
- user_set_attributes (set[str], opsional) — Nama-nama atribut yang secara eksplisit disediakan oleh pemanggil. Ketika
disediakan, peringatan “masalah kecil” tentang kombinasi bendera yang saling bertentangan (misalnya bendera khusus sampling disetel
sedangkan
do_sample=False) hanya muncul jika bendera yang bertentangan tersebut ada dalam set ini — menghindari peringatan yang berisik ketika nilainya diwarisi darigeneration_config.jsonbawaan model. KetikaNone, semua atribut yang disetel dianggap disetel oleh pengguna (perilaku yang kompatibel mundur untuk panggilanvalidate()langsung).
Memvalidasi nilai atribut dari instans GenerationConfig. Membuang pengecualian jika terdapat parameterisasi yang dapat dideteksi sebagai salah hanya dari instans konfigurasi.
Perhatikan bahwa beberapa parameter yang tidak divalidasi di sini sebaiknya divalidasi pada saat runtime generate, karena parameter tersebut mungkin bergantung pada input lain dan/atau model, seperti parameter yang berkaitan dengan panjang generasi.
get_generation_mode
< source >( assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None ) → GenerationMode
Mengembalikan mode generasi yang dipicu oleh instans GenerationConfig.
GenerationMixin
Kelas yang berisi semua fungsi untuk generasi teks auto-regresif, digunakan sebagai mixin dalam kelas model.
Mengwarisi dari kelas ini menyebabkan model memiliki perilaku khusus terkait generasi, seperti memuat GenerationConfig pada waktu inisialisasi atau memastikan pengujian terkait generate dijalankan di CI transformers.
Kelas model harus mewarisi dari GenerationMixin untuk memungkinkan pemanggilan metode seperti generate, atau ketika telah mendefinisikan metode generate kustom yang bergantung pada GenerationMixin, baik secara langsung maupun tidak langsung, yang secara umum berbagi antarmuka yang sama untuk metode publik seperti generate. Tiga contoh:
LlamaForCausalLMharus mewarisi dariGenerationMixinuntuk memungkinkan pemanggilangeneratedan metode publik lainnya dalam mixin;BlipForQuestionAnsweringmemiliki metodegeneratekhusus yang secara aproximatif berbagi antarmuka yang sama denganGenerationMixin.generate(memiliki beberapa argumen tambahan, dan output yang sama). Fungsi tersebut juga memanggilGenerationMixin.generatesecara tidak langsung, melalui model internal. Dengan demikian,BlipForQuestionAnsweringseharusnya mewarisi dariGenerationMixinuntuk mendapatkan manfaat dari semua otomasi terkait generasi di basis kode kami;BarkModelmemiliki metodegeneratekhusus dan salah satu model internalnya memanggilGenerationMixin.generate. Namun,generatemiliknya tidak berbagi antarmuka yang sama denganGenerationMixin.generate. Dalam kasus ini,BarkModelTIDAK seharusnya mewarisi dariGenerationMixin, karena hal itu merusak antarmukagenerate.
Kelas ini mengekspos generate(), yang dapat digunakan untuk:
- greedy decoding jika
num_beams=1dando_sample=False - multinomial sampling jika
num_beams=1dando_sample=True - dekoding beam-search jika
num_beams>1dando_sample=False - beam-search multinomial sampling jika
num_beams>1dando_sample=True - assisted decoding jika
assistant_modelatauprompt_lookup_num_tokensditeruskan ke.generate()
Untuk mempelajari lebih lanjut tentang strategi decoding, lihat panduan strategi generasi teks.
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
Parameter
- inputs (
torch.Tensordengan bentuk yang bervariasi tergantung pada modalitas, opsional) — Urutan yang digunakan sebagai prompt untuk generasi atau sebagai input model ke encoder. JikaNone, metode ini menginisialisasinya denganbos_token_iddan ukuran batch 1. Untuk model decoder-only,inputsharus dalam formatinput_ids. Untuk model encoder-decoder, inputs dapat mewakili salah satu dariinput_ids,input_values,input_features, ataupixel_values. - generation_config (GenerationConfig, opsional) —
Konfigurasi generasi yang akan digunakan sebagai parametrisasi dasar untuk panggilan generasi.
**kwargsyang diteruskan ke generate dan cocok dengan atribut darigeneration_configakan menimpanya. Jikageneration_configtidak disediakan, nilai default akan digunakan, yang memiliki prioritas pemuatan sebagai berikut: 1) dari file modelgeneration_config.json, jika ada; 2) dari konfigurasi model. Perhatikan bahwa parameter yang tidak ditentukan akan mewarisi nilai default dari GenerationConfig, yang dokumentasinya harus diperiksa untuk memparametrisasi generasi. - logits_processor (
LogitsProcessorList, opsional) — Prosesor logits kustom yang melengkapi prosesornya logits default yang dibangun dari argumen dan konfigurasi generasi. Jika prosesornya logits yang sudah dibuat dengan argumen atau konfigurasi generasi dilewatkan, sebuah error akan dilempar. Fitur ini ditujukan untuk pengguna tingkat lanjut. - stopping_criteria (
StoppingCriteriaList, opsional) — Kriteria penghentian kustom yang melengkapi kriteria penghentian default yang dibangun dari argumen dan konfigurasi generasi. Jika kriteria penghentian yang di-pass sudah dibuat dengan argumen atau konfigurasi generasi, sebuah error akan dilempar. Jika kriteria penghentian Anda bergantung pada inputscores, pastikan Anda meng-passreturn_dict_in_generate=True, output_scores=Truekegenerate. Fitur ini ditujukan untuk pengguna tingkat lanjut. - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], opsional) — Jika disediakan, fungsi ini membatasi pencarian beam hanya pada token yang diizinkan di setiap langkah. Jika tidak disediakan, tidak ada batasan yang diterapkan. Fungsi ini mengambil 2 argumen: ID batchbatch_iddaninput_ids. Fungsi ini harus mengembalikan daftar token yang diizinkan untuk langkah generasi berikutnya yang dikondisikan pada ID batchbatch_iddan token yang sebelumnya dihasilkaninputs_ids. Argumen ini berguna untuk generasi yang dibatasi berdasarkan prefiks, seperti yang dijelaskan dalam Autoregressive Entity Retrieval. - synced_gpus (
bool, opsional) — Apakah akan terus menjalankan loop while hingga max_length. Kecuali di-override, flag ini akan diset keTruejika menggunakanFullyShardedDataParallelatau DeepSpeed ZeRO Stage 3 dengan beberapa GPU untuk menghindari deadlock jika satu GPU selesai menghasilkan sebelum GPU lainnya. Jika tidak, defaultnya adalahFalse. - assistant_model (
PreTrainedModel, opsional) — Model asisten yang dapat digunakan untuk mempercepat generasi. Model asisten harus memiliki tokenizer yang persis sama. Percepatan tercapai ketika memprediksi token kandidat dengan model asisten jauh lebih cepat daripada menjalankan generasi dengan model yang Anda panggil generate dari. Oleh karena itu, model asisten harus jauh lebih kecil. - streamer (
BaseStreamer, opsional) — Objek yang akan digunakan untuk streaming urutan yang dihasilkan. Token yang dihasilkan diteruskan melaluistreamer.put(token_ids)dan objek tersebut bertanggung jawab untuk pemrosesan lebih lanjut. - negative_prompt_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Prompt negatif yang diperlukan oleh beberapa prosesor seperti CFG. Ukuran batch harus sesuai dengan ukuran batch input. Ini adalah fitur eksperimental, yang dapat mengalami perubahan API yang merusak (breaking changes) pada versi mendatang. - negative_prompt_attention_mask (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Attention_mask untuknegative_prompt_ids. - custom_generate (
stratauCallable, opsional) — Salah satu dari berikut ini:str(nama repositori Hugging Face Hub): menjalankan fungsigeneratekustom yang didefinisikan dicustom_generate/generate.pypada repositori tersebut, bukan metodegeneratestandar. Repositori ini sepenuhnya menggantikan logika generasi, dan tipe pengembaliannya dapat berbeda.str(jalur repositori lokal): sama seperti di atas tetapi dari jalur lokal. Direktori lokal juga memerlukantrust_remote_code=Truekarenacustom_generate/generate.pylokal dieksekusi.Callable:generateakan melakukan langkah-langkah persiapan input yang biasa, lalu memanggil callable yang diberikan untuk menjalankan loop decoding. Untuk informasi lebih lanjut, lihat dokumentasinya.
- kwargs (
dict[str, Any], opsional) — Parametrisasi ad hoc untukgeneration_configdan/atau kwargs spesifik model tambahan yang akan diteruskan ke fungsiforwarddari model. Jika model tersebut adalah model encoder-decoder, kwargs spesifik encoder tidak boleh diberi awalan dan kwargs spesifik decoder harus diberi awalan decoder_.
Mengembalikan
ModelOutput atau torch.LongTensor
Sebuah ModelOutput (jika return_dict_in_generate=True
atau ketika config.return_dict_in_generate=True) atau sebuah torch.LongTensor.
Jika model bukan model encoder-decoder (model.config.is_encoder_decoder=False), tipe
ModelOutput yang mungkin adalah:
Jika model adalah model encoder-decoder (model.config.is_encoder_decoder=True), tipe
ModelOutput yang mungkin adalah:
Membuat rangkaian id token untuk model dengan kepala pemodelan bahasa.
Sebagian besar parameter pengendali generasi diatur di
generation_configyang, jika tidak diteruskan, akan disetel ke konfigurasi generasi default model. Anda dapat menimpageneration_configmana pun dengan meneruskan parameter yang sesuai ke generate(), misalnya.generate(inputs, num_beams=4, do_sample=True).Untuk ringkasan strategi generasi dan contoh kode, lihat panduan berikut.
compute_transition_scores
< source >( sequences: Tensorscores: tuplebeam_indices: typing.Optional[torch.Tensor] = Nonenormalize_logits: bool = False ) → torch.Tensor
Parameter
- sequences (
torch.LongTensor) — Urutan yang dihasilkan. Dimensi kedua (sequence_length) sama denganmax_lengthatau lebih pendek jika semua batch selesai lebih awal karenaeos_token_id. - scores (
tuple(torch.Tensor)) — Skor transisi untuk setiap token kosakata pada setiap langkah generasi. Skor transisi beam yang terdiri dari log probabilitas token yang dikondisikan pada log softmax dari token yang sebelumnya dihasilkan dalam beam ini. Tuple daritorch.Tensordengan hinggamax_new_tokenselemen (satu elemen untuk setiap token yang dihasilkan), dengan setiap tensor berbentuk(batch_size*num_beams, config.vocab_size). - beam_indices (
torch.LongTensor, opsional) — Indeks beam dari id token yang dihasilkan pada setiap langkah generasi.torch.LongTensordengan bentuk(batch_size*num_return_sequences, sequence_length). Hanya diperlukan jikanum_beams>1pada saat generate. - normalize_logits (
bool, opsional, defaultFalse) — Apakah logits akan dinormalisasi (yang, karena alasan legacy, mungkin belum dinormalisasi).
Mengembalikan
torch.Tensor
torch.Tensor dengan bentuk (batch_size*num_return_sequences, sequence_length) yang berisi skor transisi (logits)
Menghitung skor transisi dari sekuens yang diberikan berdasarkan skor generasi (dan indeks beam, jika beam search digunakan). Ini adalah metode yang praktis untuk dengan cepat memperoleh skor dari token yang dipilih pada saat generasi.
Contoh:
>>> 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
Kelas Mixin untuk model guna menambahkan kemampuan continuous batching. Continuous batching memiliki tiga titik masuk:
init_continuous_batching, yang merupakan titik masuk sebenarnya untuk continuous batchingcontinuous_batching_context_manager, yang sendiri merupakan pembungkus di sekitarinit_continuous_batchinggenerate_batch, yang sebenarnya adalah pembungkus di sekitarcontinuous_batching_context_manager
Mereka didefinisikan dalam urutan ini. Setiap perubahan yang dilakukan pada salah satu dari tiga titik masuk tersebut harus tercermin pada dua titik masuk lainnya.
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 )
Manajer konteks untuk menggunakan manajer continuous batching dengan aman. Argumennya mirip dengan argumen init_continuous_batching, kecuali untuk:
- block: apakah akan memblokir thread saat menghentikan manager. Default adalah True.
- timeout: waktu maksimum untuk menunggu thread berhenti. Default adalah None (tanpa timeout).
- warmup: apakah akan pre-capture CUDA graphs pada ukuran terbesar sebelum menjalankan. Default adalah True.
Hancurkan manajer continuous batching yang di-cache dan bebaskan sumber daya GPU.
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]
Parameter
- inputs — Daftar urutan token input (prompt)
- generation_config — Konfigurasi generasi opsional
- continuous_batching_config — Konfigurasi continuous batching opsional
- record_timestamps — Jika diatur ke true, permintaan akan memiliki timestamp untuk setiap token yang dihasilkan
- progress_bar — Jika diatur ke true, bilah kemajuan akan ditampilkan
- persistent_manager — apakah manager akan dipertahankan setelah generasi selesai. Default adalah False.
- warmup — apakah akan pre-capture CUDA graphs sebelum memproses permintaan. Default adalah True.
Mengembalikan
dict[str, GenerationOutput]
kamus dari id permintaan ke objek GenerationOutput
Generate sequences untuk batch prompt menggunakan continuous batching.
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
Parameter
- generation_config — Konfigurasi generasi opsional, yang dapat berisi objek CompileConfig
- continuous_batching_config — Konfigurasi continuous batching opsional
- workload_hints — WorkloadHints opsional untuk membantu continuous batching manager membuat keputusan yang lebih baik untuk nilai default
Mengembalikan
ContinuousBatchingManager
Instans manager untuk menambahkan permintaan dan mengambil hasil.
Inisialisasi manajer untuk inferensi pengelompokan berkelanjutan.
ContinuousBatchingManager
kelas transformers.ContinuousBatchingManager
< source >( model: ProtoPretrainedModelgeneration_config: GenerationConfigcontinuous_batching_config: ContinuousBatchingConfigworkload_hints: transformers.generation.continuous_batching.utils.WorkloadHints | None = None )
Manajer untuk menangani pengelompokan berkelanjutan (continuous batching) permintaan generasi. Kelas ini menyediakan antarmuka pengguna untuk mengirimkan permintaan generasi, mengambil hasil, dan mengelola thread generasi latar belakang. Kelas ini tidak boleh dibuat secara langsung, melainkan melalui salah satu titik masuk berikut (semua merupakan metode dari mixin ContinuousMixin):
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
Parameter
- input_ids — ID token input yang digunakan sebagai prompt
- request_id — ID permintaan kustom opsional (dibuat secara otomatis jika None)
- max_new_tokens — Jumlah maksimum token baru yang akan dihasilkan
- streaming — Whether to stream tokens as they’re generated
- record_timestamps — Apakah akan merekam timestamp untuk setiap token yang dihasilkan
- eos_token_id — ID token akhir-sekuens
- logit_processor_kwargs — Argumen kata kunci untuk logits processor.
Mengembalikan
str | None
ID permintaan jika proses adalah driver TP, None selain itu.
Tambahkan permintaan generasi baru ke antrean. Jika proses tersebut bukan driver TP, ini tidak melakukan apa-apa.
add_requests
< source >( inputs: listmax_new_tokens: int | None = Nonestreaming: bool = Falserecord_timestamps: bool = False**logit_processor_kwargs: Any )
Fungsi utilitas untuk mem-batch add_request dan mengembalikan ID-nya. Periksa dokumentasinya untuk detail lebih lanjut.
Batalkan permintaan berdasarkan ID-nya. Jika ini dipanggil dari proses yang bukan driver TP, ini tidak melakukan apa-apa: hanya proses driver TP yang berinteraksi dengan manajer.
Akhiri manager dan lepaskan sumber daya terdistribusi. Aman untuk dipanggil beberapa kali. Setelah memanggil ini, manager tidak dapat dimulai ulang.
Ambil satu hasil dari antrean keluaran. Jika ID diberikan, mengembalikan permintaan yang cocok pertama. Jika timeout diberikan, mengembalikan None setelah timeout (dalam detik).
Mengembalikan True jika thread generasi latar belakang telah dimulai dan masih aktif.
Tunggu hingga thread latar belakang selesai. Wait dapat dibatasi menggunakan argumen timeout (dalam detik).
Manajer konteks yang menjeda loop generasi, sehingga thread pemanggil dapat menggunakan model, biasanya untuk memperbaruinya di tempat. Thread hanya masuk ke konteks ini setelah loop dijeda, dan loop dilanjutkan saat keluar, dengan mempertahankan cache dan permintaan yang sedang diproses: tidak ada yang dikuras dan tidak ada permintaan yang hilang. Beberapa thread dapat menahan jeda secara bersamaan, dan loop dilanjutkan setelah yang terakhir keluar. Jika TP aktif, semua rank harus masuk ke konteks ini, jika tidak rank lain akan menggantung selamanya.
register_result_handler
< source >( request_id: strcallback: Callable )
Daftarkan callback untuk pengiriman hasil (streaming atau non-streaming).
Callback dipanggil pada event loop melalui call_soon_threadsafe setiap kali hasil dihasilkan untuk permintaan ini. Untuk permintaan streaming, hal ini terjadi pada setiap token; untuk non-streaming, hanya pada saat selesai. Handler dibersihkan secara otomatis ketika permintaan selesai.
Iterasi hasil yang cocok dengan id permintaan tertentu (blocking).
Menggunakan antrean output bersama dengan requeue. Untuk penyajian dengan konkurensi tinggi, gunakan register_result_handler sebagai gantinya.
Mulai thread generasi latar belakang.
berhenti
< source >( block: bool = Truetimeout: float | None = Nonekeep_for_next_session: bool = Falsehard_stop: bool = False )
Hentikan thread generasi latar belakang. Jika flag block diset ke True, maka metode ini menunggu thread berhenti selama waktu maksimum timeout detik (None berarti tanpa batas waktu). Jika flag keep_for_next_session diset ke True, maka manager di-cache pada model untuk penggunaan di masa depan. Jika flag hard_stop diset, thread generasi latar belakang akan dihentikan segera dan permintaan yang tertunda akan gagal.
switch_to_cb_friendly_attn
< source >( model: ProtoPretrainedModelauto_switch_to_flash: bool = True )
Ganti implementasi attn menjadi yang kompatibel dengan CB. Jika auto_switch_to_flash bernilai True, dan implementasi attn adalah SDPA atau eager, juga beralih ke flash jika didukung dan tersedia.
Graf CUDA pra-capture untuk jalur varlen dan decode dengan menjalankan batch dummy. Menginisialisasi pemroses batch jika belum dilakukan.
Penjadwal
kelas transformers.generation.Scheduler
< source >( cache: PagedAttentionCachesafety_margin: floatmax_requests_per_batch: int )
Kelas basis abstrak untuk menjadwalkan permintaan dalam pemroses batch kontinu. Penjadwal mengelola siklus hidup permintaan dari saat ditambahkan ke antrean tunggu hingga dijadwalkan untuk diproses. Penjadwal yang berbeda menerapkan strategi yang berbeda untuk memprioritaskan dan membundel permintaan.
Menambahkan permintaan ke daftar tunggu.
Hapus semua permintaan yang dibatalkan dari antrean aktif dan menunggu.
Menyelesaikan pemrosesan permintaan dan membebaskan blok cache yang dialokasikannya. Metode ini dipanggil ketika permintaan telah selesai menghasilkan atau mengalami kesalahan.
Mendapatkan token yang dihasilkan untuk permintaan yang aktif.
Memeriksa apakah ada permintaan yang siap diproses.
Memeriksa apakah permintaan telah dibatalkan atau dihapus.
Reset status scheduler untuk loop generasi baru.
Merencanakan permintaan untuk batch berikutnya berdasarkan anggaran token dan cache yang tersedia. Metode ini memilih permintaan mana yang harus diproses dalam batch saat ini, dengan mempertimbangkan anggaran dan aturan prioritas penjadwal. token_budget adalah jumlah maksimum token yang dapat diproses dalam satu batch, dan cache_budget adalah jumlah maksimum entri cache KV yang dapat dibaca dalam satu batch. Mengembalikan daftar permintaan terjadwal dalam bentuk “FutureRequestState”, nilai boolean yang menunjukkan apakah jalur cepat decode dapat digunakan, jumlah total token query, dan jumlah maksimum token kv yang dibaca.
Menandai permintaan pembatalan.
FIFOScheduler
kelas transformers.generation.FIFOScheduler
< source >( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )
Penjadwal ini memproses permintaan sesuai urutan kedatangannya, yang berarti permintaan decoding memiliki prioritas lebih tinggi daripada permintaan prefilling.
PrefillFirstScheduler
kelas transformers.generation.PrefillFirstScheduler
< source >( cache: PagedAttentionCachesafety_margin: float | Nonemax_requests_per_batch: int )
Scheduler yang memprioritaskan permintaan prefill terpecah di atas permintaan decoding. Scheduler ini memastikan bahwa permintaan prefill terpecah (yang merupakan kelanjutan dari prompt yang diproses sebagian) diselesaikan sebelum memproses permintaan decoding baru.