Transformers documentation

Üretim özellikleri

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

and get access to the augmented documentation experience

to get started

Üretim özellikleri

generate() API, üzerine uygulama geliştirme için birkaç özellik destekler.

Bu kılavuz, bu özellikleri nasıl kullanacağınızı gösterecektir.

Akış

Streaming, metin oluşturulur oluşturulmaz döndürmeye başlar; böylece tüm oluşturulan yanıtı tek seferde görmek için beklemeniz gerekmez. Kullanıcıya yönelik uygulamalarda önemlidir, çünkü algılanan gecikmeyi azaltır ve kullanıcılara üretim ilerlemesini görmelerini sağlar.

Text Generation Inference belgelerinde akış hakkında daha fazla bilgi edinin.

Tokenizer ile TextStreamer örneği oluşturun. Çıktıyı kelime kelime akışa almak için TextStreamer'i generate() içindeki streamer parametresine iletin.

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)

streamer parametresi, put() ve end() yöntemlerine sahip herhangi bir sınıfla uyumludur. put() yeni jetonları iter ve end() üretimin sonunu işaretler. Bu iki yöntemi içerdiği sürece kendi streamer sınıfınızı oluşturabilir veya Transformers’ın temel streamer sınıflarını kullanabilirsiniz.

Filigran

Watermarking, metnin üretilip üretilmediğini tespit etmek için kullanışlıdır. Transformers'taki watermarking stratejisi, token'ların bir alt kümesini rastgele “yeşil” olarak renklendirir. Yeşil token'lar üretildiğinde, logit'lerine küçük bir önyargı eklenir ve üretilme olasılıkları artar. Üretilen metni, yeşil token'ların oranını insan tarafından üretilen metinde genellikle bulunan yeşil token miktarıyla karşılaştırarak tespit edebilirsiniz.

Watermarking, Transformers'taki herhangi bir üretken model için desteklenir ve filigranlı metni algılamak için ek bir sınıflandırma modeli gerektirmez.

Logitlere eklenecek sapma değerini ve filigranlama algoritmasını içeren bir WatermarkingConfig oluşturun. Aşağıdaki örnek, yeşil token seçiminin yalnızca mevcut tokene bağlı olduğu "selfhash" algoritmasını kullanır. WatermarkingConfig nesnesini generate() fonksiyonuna iletin.

WatermarkDetector sınıfı, üretilen metindeki yeşil jetonların oranını algılar; bu nedenle, üretilen metinden çok daha uzunsa, istem metninin kaldırılması önerilir. Dolgu (padding) da WatermarkDetector üzerinde etkili olabilir.

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)

WatermarkDetector örneği oluşturun ve metnin makine tarafından üretildiğini tespit etmek için model çıktısını ona iletin. WatermarkDetector, üretim sırasında kullanılan aynı WatermarkingConfig ile oluşturulmalıdır.

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