# Lumina-T2X
![concepts](https://github.com/Alpha-VLLM/Lumina-T2X/assets/54879512/9f52eabb-07dc-4881-8257-6d8a5f2a0a5a)

Alpha-VLLM, OpenGVLab ve Shanghai AI Laboratory'den [Lumina-Next: Next-DiT ile Lumina-T2X'i Daha Güçlü ve Hızlı Hale Getirme](https://huggingface.co/papers/2406.18583).

Makalenin özeti şudur:

*Lumina-T2X, metin talimatlarına koşullu olarak gürültüyü görüntüler ve videolar gibi çeşitli modallara dönüştürmek için birleşik bir çerçeve kuran, Flow tabanlı Büyük Difüzyon Transformer'larının (Flag-DiT) yeni bir ailesidir. Vaat edici yeteneklerine rağmen Lumina-T2X, eğitim instabilitesi, yavaş çıkarım ve ekstrapolasyon artefaktları gibi zorluklarla karşı karşıya kalmaktadır. Bu makalede, Lumina-T2X'in geliştirilmiş bir sürümü olan Lumina-Next'i, artan eğitim ve çıkarım verimliliğiyle daha güçlü üretim performansını sergileyen bir model olarak sunuyoruz. Flag-DiT mimarisinin kapsamlı bir analiziyle başlayarak, bunları Next-DiT mimarisiyle, 3D RoPE ve sandviç normalizasyonları ile ele alarak çözdüğümüz birkaç suboptimal bileşen belirliyoruz. Daha iyi çözünürlük ekstrapolasyonunu mümkün kılmak için, 3D RoPE ile metinden görüntüye üretimde uygulanan farklı bağlam ekstrapolasyon yöntemlerini kapsamlı bir şekilde karşılaştırıyor ve difüzyon transformer'ları için özel olarak tasarlanmış, Frekans ve Zaman Farkındalıklı Ölçekli RoPE'yi öneriyoruz. Ayrıca, Flow ODE'nin çözülmesinde örneklem adımlarını azaltmak için sigmoid zaman ayrıklaştırma zamanlaması ve daha hızlı ağ değerlendirmesi için gereksiz görsel jetonları birleştirmek için Context Drop yöntemini tanıtarak genel örneklem hızını etkili bir şekilde artırıyoruz. Bu iyileştirmeler sayesinde Lumina-Next, yalnızca temel metinden görüntüye üretim kalitesini ve verimliliğini artırmakla kalmayıp, metin kodlayıcı olarak decoder tabanlı LLM'leri kullanan üstün çözünürlük ekstrapolasyon yeteneklerini ve çok dilli üretimi de sıfır atış (zero-shot) bir şekilde sergilemektedir. Lumina-Next'i çok yönlü bir üretici çerçeve olarak daha da doğrulamak için, görsel tanıma, çoklu görünüm, ses, müzik ve nokta bulutu üretimi gibi çeşitli görevlerde somutlaştırarak bu alanlardaki güçlü performansını sergiliyoruz. Tüm kodları ve model ağırlıklarını https://github.com/Alpha-VLLM/Lumina-T2X adresinde yayınlayarak, evrensel modelleme yeteneğine sahip bir sonraki nesil üretici yapay zekanın gelişimini ilerletmeyi hedefliyoruz.*

**Öne çıkanlar**: Lumina-Next, Next-DiT mimarisi, 3D RoPE ve frekans ile zamana duyarlı RoPE gibi iyileştirmelerle metinden görüntüye üretim, çok dilli üretim ve çoklu görev performansını önemli ölçüde artıran yeni nesil bir Diffusion Transformer'dır.

Lumina-Next aşağıdaki bileşenlere sahiptir:
* Daha az ve daha hızlı Adımlarla örneklemeyi iyileştirir.
* Bir sonraki DiT'yi (Next-DiT) Sandwichnorm 3D RoPE ve Grouped-Query Attention ile birlikte transformer omurgası olarak kullanır.
* Bir Frekans ve Zaman Farkındalıklı Ölçekli RoPE kullanır.

---

Alpha-VLLM, OpenGVLab ve Shanghai AI Laboratory'den [Lumina-T2X: Akış Tabanlı Büyük Difüzyon Dönüştürücülerle Metni Herhangi Bir Modaliteye, Çözünürlüğe ve Süreye Dönüştürme](https://huggingface.co/papers/2405.05945).

Makalenin özeti şudur:

*Sora, Diffusion Transformer'ın ölçeklenmesinin, keyfi çözünürlüklerde, en-boy oranlarında ve sürelerde fotogerçekçi görüntü ve video üretme potansiyelini ortaya koysa da hâlâ yeterli uygulama detaylarından yoksundur. Bu teknik raporda, metin talimatlarına koşullu olarak gürültüyü görüntülere, videolara, çoklu görünümlü 3D nesnelere ve ses kliplerine dönüştürmek üzere tasarlanmış birleşik bir çerçeve olarak, sıfır ile başlatılmış dikkate sahip Akış Tabanlı Büyük Diffusion Transformer'lar (Flag-DiT) serisi olan Lumina-T2X ailesini tanıtıyoruz. Gizli uzamsal-zamansal alanı belirteçlere (token) dönüştürerek ve [nextline] ile [nextframe] belirteçleri gibi öğrenilebilir yer tutucuları dahil ederek Lumina-T2X, farklı uzamsal-zamansal çözünürlüklerde farklı modalitelerin temsillerini sorunsuz bir şekilde birleştirir. Bu birleşik yaklaşım, farklı modaliteler için tek bir çerçeve içinde eğitim yapılmasını ve çıkarım sırasında herhangi bir çözünürlükte, en-boy oranında ve uzunlukta çok modlu verinin esnek üretimini mümkün kılar. RoPE, RMSNorm ve akış eşleştirmesi gibi gelişmiş teknikler, Flag-DiT'in kararlılığını, esnekliğini ve ölçeklenebilirliğini artırarak Lumina-T2X modellerinin 7 milyar parametreye kadar ölçeklenmesine ve bağlam penceresinin 128K belirtece uzatılmasına olanak tanır. Bu, Lumina-T2I modelimizle ultra yüksek tanımlı görüntüler ve Lumina-T2V modelimizle uzun 720p videolar oluşturmak için özellikle faydalıdır. Dikkat çekici bir şekilde, 5 milyar parametreli bir Flag-DiT ile güçlendirilen Lumina-T2I, 600 milyon parametreli basit bir DiT'nin eğitim hesaplama maliyetlerinin yalnızca %35'ini gerektirir. Daha kapsamlı analizimiz, Lumina-T2X'in çözünürlük dışa yaklaşımdaki (extrapolation), yüksek çözünürlüklü düzenlemede, tutarlı 3D görünümler üretmede ve sorunsuz geçişlere sahip videolar sentezlemedeki ön yeteneğini vurgulamaktadır. Lumina-T2X'in açık kaynak hale getirilmesinin, üretken yapay zeka topluluğunda yaratıcılığı, şeffaflığı ve çeşitliliği daha da artırmasını bekliyoruz.*

Orijinal kod tabanını [Alpha-VLLM](https://github.com/Alpha-VLLM/Lumina-T2X) adresinde, mevcut tüm kontrol noktalarını ise [Alpha-VLLM Lumina Family](https://huggingface.co/collections/Alpha-VLLM/lumina-family-66423205bedb81171fd0644b) adresinde bulabilirsiniz.

**Öne çıkanlar**: Lumina-T2X, herhangi bir modalite, çözünürlük ve süreyi destekler.

Lumina-T2X aşağıdaki bileşenlere sahiptir:
* Omurga olarak akış tabanlı büyük difüzyon dönüştürücüsü kullanır
* Farklı tüm modaliteleri tek bir omurga ve ilgili kodlayıcı, çözücü ile destekler.

Bu pipeline [PommesPeter](https://github.com/PommesPeter) tarafından katkı sağlanmıştır. Orijinal kod tabanı [burada](https://github.com/Alpha-VLLM/Lumina-T2X) bulunabilir. Orijinal ağırlıklar [hf.co/Alpha-VLLM](https://huggingface.co/Alpha-VLLM) altında bulunabilir.

> [!TIP]
> Scheduler'lar [kılavuzunu](../../using-diffusers/schedulers) inceleyerek scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi öğrenin ve aynı bileşenleri birden fazla pipeline'a nasıl verimli bir şekilde yükleyebileceğinizi öğrenmek için [pipeline'lar arasında bileşenleri yeniden kullanma](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) bölümüne göz atın.

### Inference (Metinden Görsele)

Çıkarım gecikmesini azaltmak için [`torch.compile`](https://huggingface.co/docs/diffusers/main/en/tutorials/fast_diffusion#torchcompile) kullanın.

Önce hattı yükleyin:

```python
from diffusers import LuminaPipeline
import torch

pipeline = LuminaPipeline.from_pretrained(
	"Alpha-VLLM/Lumina-Next-SFT-diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"
```

Ardından, `transformer` ve `vae` bileşenlerinin bellek yerleşimini `torch.channels-last` olarak değiştirin:

```python
pipeline.transformer.to(memory_format=torch.channels_last)
pipeline.vae.to(memory_format=torch.channels_last)
```

Son olarak, bileşenleri derleyin ve çıkarımı çalıştırın:

```python
pipeline.transformer = torch.compile(pipeline.transformer, mode="max-autotune", fullgraph=True)
pipeline.vae.decode = torch.compile(pipeline.vae.decode, mode="max-autotune", fullgraph=True)

image = pipeline(prompt="Upper body of a young woman in a Victorian-era outfit with brass goggles and leather straps. Background shows an industrial revolution cityscape with smoky skies and tall, metal structures").images[0]
```

## Kantizasyon

Kantizasyon, model ağırlıklarını daha düşük hassasiyetli bir veri türünde saklayarak çok büyük modellerin bellek gereksinimlerini azaltmaya yardımcı olur. Ancak kantizasyonun video kalitesi üzerindeki etkisi, video modeline göre değişebilir.

Desteklenen kuantizasyon arka uçları ve kullanım durumunu destekleyen bir kuantizasyon arka ucunu seçme hakkında daha fazla bilgi edinmek için [Quantization](../../quantization/overview) genel bakışına başvurun. Aşağıdaki örnek, bitsandbytes ile çıkarım için kuantize edilmiş bir [LuminaPipeline](/docs/diffusers/main/tr/api/pipelines/lumina#diffusers.LuminaPipeline) yüklemenin nasıl yapılacağını göstermektedir.

```py
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, Transformer2DModel, LuminaPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel

quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = T5EncoderModel.from_pretrained(
    "Alpha-VLLM/Lumina-Next-SFT-diffusers",
    subfolder="text_encoder",
    quantization_config=quant_config,
    dtype=torch.float16,
)

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = Transformer2DModel.from_pretrained(
    "Alpha-VLLM/Lumina-Next-SFT-diffusers",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.float16,
)

pipeline = LuminaPipeline.from_pretrained(
    "Alpha-VLLM/Lumina-Next-SFT-diffusers",
    text_encoder=text_encoder_8bit,
    transformer=transformer_8bit,
    dtype=torch.float16,
    device_map="balanced",
)

prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt).images[0]
image.save("lumina.png")
```

## LuminaPipeline[[diffusers.LuminaPipeline]]

#### diffusers.LuminaPipeline[[diffusers.LuminaPipeline]]

```python
diffusers.LuminaPipeline(transformer: LuminaNextDiT2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKL, text_encoder: GemmaPreTrainedModel, tokenizer: GemmaTokenizer)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/lumina/pipeline_lumina.py#L135)

**Parametreler:**

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Görüntüleri gizil (latent) temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.

text_encoder (`GemmaPreTrainedModel`) : Donmuş Gemma metin kodlayıcısı.

tokenizer (`GemmaTokenizer` veya `GemmaTokenizerFast`) : Gemma tokenizer'ı.

transformer ([Transformer2DModel](/docs/diffusers/main/tr/api/models/transformer2d#diffusers.Transformer2DModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için metin koşullu bir `Transformer2DModel`.

scheduler ([SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için `transformer` ile birlikte kullanılacak bir zamanlayıcı.

Lumina-T2I kullanılarak metinden görüntüye üretim için Pipeline.

Bu model [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) sınıfından devralır. Kütüphanenin tüm pipeline'lar için uyguladığı genel yöntemler (indirme veya kaydetme, belirli bir cihazda çalıştırma vb.) için üst sınıf belgelendirmesine bakın.

#### __call__[[diffusers.LuminaPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, width: int | None = None, height: int | None = None, num_inference_steps: int = 30, guidance_scale: float = 4.0, negative_prompt: str | list[str] = None, sigmas: list = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = True, max_sequence_length: int = 256, scaling_watershed: float | None = 1.0, proportional_attn: bool | None = True, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'])
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/lumina/pipeline_lumina.py#L631)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine `prompt_embeds` geçirilmelidir.

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır.

num_inference_steps (`int`, *isteğe bağlı*, varsayılan 30) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.

sigmas (`list[float]`, *isteğe bağlı*) : `set_timesteps` metodunda `sigmas` argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel sigmalar. Tanımlanmamışsa, `num_inference_steps` geçirildiğinde varsayılan davranış kullanılacaktır.

guidance_scale (`float`, *isteğe bağlı*, varsayılan 4.0) : [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598)'de tanımlandığı gibi yönlendirme ölçeği. `guidance_scale`, [Imagen Paper](https://huggingface.co/papers/2205.11487)'deki 2. denklemindeki `w` olarak tanımlanır. Yönlendirme ölçeği, `guidance_scale > 1` olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, `prompt` ile yakından ilişkili görüntülerin üretilmesini teşvik eder.

num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı.

height (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen görüntünün piksel cinsinden yüksekliği.

width (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen görüntünün piksel cinsinden genişliği.

generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir veya [torch üreteci(leri)](https://pytorch.org/docs/stable/generated/torch.Generator.html) listesi.

latents (`torch.Tensor`, *isteğe bağlı*) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latentler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklem yoluyla bir latent tensörü oluşturulur.

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

prompt_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Metin gömme (embedding) için önceden oluşturulmuş dikkat maskesi (attention mask).

negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Lumina-T2I için bu negatif istem "" olmalıdır. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur.

negative_prompt_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Negatif metin gömme vektörleri için önceden oluşturulmuş dikkat maskesi.

output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` veya `np.array` arasında seçim yapın.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `~pipelines.stable_diffusion.IFPipelineOutput` döndürülecek mi?

clean_caption (`bool`, *isteğe bağlı*, varsayılan `True`) : Embedding oluşturulmadan önce başlığın temizlenip temizlenmeyeceğini belirtir. Bunun için `beautifulsoup4` ve `ftfy` paketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, embedding'ler ham istemden oluşturulur.

max_sequence_length (`int` varsayılan olarak 120'dir) : `prompt` ile kullanılacak maksimum dizi uzunluğu.

scaling_watershed (`float`, *isteğe bağlı*, varsayılan 1.0) : Lumina'nın standart ve genişletilmiş bağlam dikkati arasında geçiş yapmak için kullandığı çözünürlük ölçekleme eşiği.

proportional_attn (`bool`, *isteğe bağlı*, varsayılan True) : Yüksek çözünürlüklü üretim için dikkatin orantılı olarak ölçeklenip ölçeklenmeyeceğini belirtir.

callback_on_step_end (`Callable`, *isteğe bağlı*) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs`, `callback_on_step_end_tensor_inputs` tarafından belirtilen tüm tensörlerin listesini içerir.

callback_on_step_end_tensor_inputs (`list`, *isteğe bağlı*) : `callback_on_step_end` işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, `callback_kwargs` argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın `._callback_tensor_inputs` özniteliğinde listelenen değişkenleri dahil edebilirsiniz.

**Dönüş:** [ImagePipelineOutput](/docs/diffusers/main/tr/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) veya `tuple`

`return_dict` `True` ise [ImagePipelineOutput](/docs/diffusers/main/tr/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) döndürülür, aksi halde ilk öğesi üretilen görüntülerin listesini içeren bir `tuple` döndürülür

Üretim için pipeline çağrıldığında tetiklenen işlev.

Örnekler:
```py
>>> import torch
>>> from diffusers import LuminaPipeline

>>> pipe = LuminaPipeline.from_pretrained("Alpha-VLLM/Lumina-Next-SFT-diffusers", torch_dtype=torch.bfloat16)
>>> # Enable memory optimizations.
>>> pipe.enable_model_cpu_offload()

>>> prompt = "Upper body of a young woman in a Victorian-era outfit with brass goggles and leather straps. Background shows an industrial revolution cityscape with smoky skies and tall, metal structures"
>>> image = pipe(prompt).images[0]
```

#### encode_prompt[[diffusers.LuminaPipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str | list[str] = None, num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/lumina/pipeline_lumina.py#L261)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem. Tanımlanmadıysa bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır. Lumina-T2I için bu değer "" olmalıdır.

do_classifier_free_guidance (`bool`, *isteğe bağlı*, varsayılan `True`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı

num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : her istem için oluşturulacak görsel sayısı

device : (`torch.device`, *isteğe bağlı*): Sonuç olarak elde edilen gömme vektörlerinin yerleştirileceği torch cihazı

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. Lumina-T2I için, "" dizgisinin gömme değerleri olmalıdır.

clean_caption (`bool`, varsayılan `False`) : `True` ise, fonksiyon kodlamadan önce sağlanan başlığı ön işler ve temizler.

max_sequence_length (`int`, varsayılan 256) : İstem için kullanılacak maksimum dizi uzunluğu.

İsteği metin kodlayıcı gizli durumlarına kodlar.

