Transformers documentation

Fitur generasi

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

and get access to the augmented documentation experience

to get started

Fitur generasi

API generate() mendukung beberapa fitur untuk membangun aplikasi di atasnya.

Panduan ini akan menunjukkan cara menggunakan fitur-fitur tersebut.

Streaming

Streaming mulai mengembalikan teks segera setelah dihasilkan, sehingga Anda tidak perlu menunggu untuk melihat seluruh respons yang dihasilkan sekaligus. Hal ini penting dalam aplikasi yang berhadapan langsung dengan pengguna karena mengurangi latensi yang dirasakan dan memungkinkan pengguna melihat progres generasi.

Pelajari lebih lanjut tentang streaming di dokumen Text Generation Inference.

Buat instance TextStreamer dengan tokenizer. Teruskan TextStreamer ke parameter streamer di generate() untuk mengalirkan output satu kata per kata.

from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2")
model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt")
streamer = TextStreamer(tokenizer)

_ = model.generate(**inputs, streamer=streamer, max_new_tokens=20)

Parameter streamer kompatibel dengan kelas apa pun yang memiliki metode put() dan end(). put() mendorong token baru dan end() menandai akhir dari generasi. Anda dapat membuat kelas streamer Anda sendiri selama kelas tersebut mencakup dua metode ini, atau Anda dapat menggunakan kelas streamer dasar dari Transformers.

Watermarking

Watermarking berguna untuk mendeteksi apakah teks dihasilkan oleh model. strategi watermarking di Transformers secara acak “mewarnai” sebagian token dengan warna hijau. Ketika token hijau dihasilkan, bias kecil ditambahkan ke logits-nya, sehingga probabilitasnya untuk dihasilkan menjadi lebih tinggi. Anda dapat mendeteksi teks yang dihasilkan dengan membandingkan proporsi token hijau terhadap jumlah token hijau yang biasanya ditemukan dalam teks yang dibuat oleh manusia.

Watermarking didukung untuk model generatif apa pun di Transformers dan tidak memerlukan model klasifikasi tambahan untuk mendeteksi teks yang diberi watermark.

Buat WatermarkingConfig dengan nilai bias yang akan ditambahkan ke logits dan algoritma watermarking. Contoh di bawah menggunakan algoritma "selfhash", di mana pemilihan token hijau hanya bergantung pada token saat ini. Teruskan WatermarkingConfig ke generate().

Kelas WatermarkDetector mendeteksi proporsi token hijau dalam teks yang dihasilkan, itulah mengapa disarankan untuk menghapus teks prompt jika panjangnya jauh melebihi teks yang dihasilkan. Padding juga dapat memengaruhi WatermarkDetector.

from transformers import AutoTokenizer, AutoModelForCausalLM, WatermarkDetector, WatermarkingConfig

model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
tokenizer = AutoTokenizer.from_pretrained("openai-community/gpt2")
tokenizer.pad_token_id = tokenizer.eos_token_id
tokenizer.padding_side = "left"

inputs = tokenizer(["This is the beginning of a long story", "Alice and Bob are"], padding=True, return_tensors="pt")
input_len = inputs["input_ids"].shape[-1]

watermarking_config = WatermarkingConfig(bias=2.5, seeding_scheme="selfhash")
out = model.generate(**inputs, watermarking_config=watermarking_config, do_sample=False, max_length=20)

Buat instance dari WatermarkDetector dan lewati output model ke dalamnya untuk mendeteksi apakah teks tersebut dihasilkan oleh mesin. WatermarkDetector harus memiliki WatermarkingConfig yang sama dengan yang digunakan selama proses generasi.

detector = WatermarkDetector(model_config=model.config, device="cpu", watermarking_config=watermarking_config)
detection_out = detector(out, return_dict=True)
detection_out.prediction
array([True, True])
Update on GitHub