Transformers documentation
NLLB-MOE
Bu model 2022-07-11 tarihinde HF papers'ta yayımlanmış ve 2023-03-27 tarihinde Hugging Face Transformers'a katkıda bulunmuştur.
NLLB-MOE
Genel Bakış
NLLB modeli, Marta R. Costa-jussà, James Cross, Onur Çelebi, Maha Elbayad, Kenneth Heafield, Kevin Heffernan, Elahe Kalbassi, Janice Lam, Daniel Licht, Jean Maillard, Anna Sun, Skyler Wang, Guillaume Wenzek, Al Youngblood, Bapi Akula, Loic Barrault, Gabriel Mejia Gonzalez, Prangthip Hansanti, John Hoffman, Semarley Jarrett, Kaushik Ram Sadagopan, Dirk Rowe, Shannon Spruit, Chau Tran, Pierre Andrews, Necip Fazil Ayan, Shruti Bhosale, Sergey Edunov, Angela Fan, Cynthia Gao, Vedanuj Goswami, Francisco Guzmán, Philipp Koehn, Alexandre Mourachko, Christophe Ropers, Safiyyah Saleem, Holger Schwenk ve Jeff Wang tarafından No Language Left Behind: Scaling Human-Centered Machine Translation makalesinde tanıtılmıştır.
Makalenin özeti aşağıdaki gibidir:
Dünya çapında dil engellerini ortadan kaldırma hedefiyle makine çevirisi, günümüz yapay zekâ araştırmalarının temel odak noktalarından biri haline gelmiştir. Ancak bu çabalar, büyük ölçüde düşük kaynaklı dillerin çoğunu geride bırakarak küçük bir dil alt kümesi etrafında şekillenmiştir. Güvenli ve yüksek kaliteli sonuçları garanti ederken etik hususları da göz önünde bulundurarak 200 dil barajını aşmak için neler gerekir? No Language Left Behind çalışmasında bu zorluğa, önce yerel konuşmacılarla yapılan keşif amaçlı görüşmeler aracılığıyla düşük kaynaklı dil çeviri desteğine duyulan ihtiyacı bağlamlandırarak yaklaştık. Ardından, düşük ve yüksek kaynaklı diller arasındaki performans farkını kapatmaya yönelik veri kümeleri ve modeller oluşturduk. Daha spesifik olarak, düşük kaynaklı dillere özel olarak tasarlanmış yeni ve etkili veri madenciliği teknikleriyle elde edilen veriler üzerinde eğitilen, Sparsely Gated Mixture of Experts tabanlı koşullu bir hesaplama modeli geliştirdik. Binlerce görev üzerinde eğitim sırasında aşırı uyumu (overfitting) önlemek için çeşitli mimari ve eğitim iyileştirmeleri öneriyoruz. Kritik olarak, 40.000'den fazla farklı çeviri yönünün performansını, insan çevirmenli bir referans seti olan Flores-200 ile değerlendirdik ve Flores-200'deki tüm dilleri kapsayan yeni bir toksisite referans setini insan değerlendirmesiyle birleştirerek çeviri güvenliğini inceledik. Modelimiz, önceki en iyi sonuçlara kıyasla BLEU skorunda %44'lük bir iyileşme sağlayarak evrensel bir çeviri sistemini hayata geçirme yolunda önemli bir altyapı oluşturmuştur.
Bu model Arthur Zucker tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
- M2M100ForConditionalGeneration, hem NLLB hem de NLLB MoE için temel modeldir
- NLLB-MoE, NLLB modeline çok benzer; ancak ileri besleme katmanı, SwitchTransformers uygulamasına dayanmaktadır.
- Tokenizör, NLLB modelleriyle aynıdır.
SwitchTransformers ile uygulama farkları
En büyük fark, token'lerin yönlendirilme biçimidir. NLLB-MoE, top-2-gate kullanır; bu, her giriş için yönlendirme ağından gelen en yüksek tahmini olasılıklara göre yalnızca en üst iki uzman seçilir ve kalan uzmanlar yok sayılır anlamına gelir. SwitchTransformers'de yalnızca top-1 olasılıkları hesaplanır, bu da token'lerin yönlendirilme olasılığının daha düşük olduğu anlamına gelir. Ayrıca, bir token hiçbir uzmana yönlendirilmezse, SwitchTransformers yine de değiştirilmemiş gizli durumlarını ekler (bir tür artımsal bağlantı gibi) oysa NLLB'nin top-2 yönlendirme mekanizmasında bunlar maskeleme ile gizlenir.
NLLB-MoE ile Üretim
Kullanılabilir checkpoint'ler yaklaşık 350GB depolama alanı gerektirir. Makinenizde yeterli RAM yoksa accelerate kullanmayı unutmayın.
Hedef metni üretirken forced_bos_token_id değerini hedef dil kimliğine ayarlayın. Aşağıdaki örnek, facebook/nllb-200-distilled-600M modelini kullanarak İngilizceden Fransızcaya çeviri yapmanın nasıl yapılacağını göstermektedir.
Fransızca için fra_Latn BCP-47 kodunu kullandığımıza dikkat edin. Flores 200 veri setindeki tüm BCP-47 kodlarının listesine buradan ulaşabilirsiniz.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-moe-54b")
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-moe-54b", device_map="auto")
article = "Previously, Ring's CEO, Jamie Siminoff, remarked the company started when his doorbell wasn't audible from his shop in his garage."
inputs = tokenizer(article, return_tensors="pt").to(model.device)
translated_tokens = model.generate(
**inputs, forced_bos_token_id=tokenizer.lang_code_to_id["fra_Latn"], max_length=50
)
tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
"Auparavant, le PDG de Ring, Jamie Siminoff, a fait remarquer que la société avait commencé lorsque sa sonnette n'était pas audible depuis son magasin dans son garage."İngilizce dışındaki herhangi bir dilden üretim
İngilizce (eng_Latn) çeviri kaynağı olarak varsayılan dil olarak ayarlanmıştır. Farklı bir dilden çeviri yapmak istiyorsanız,
tokenizör başlatma işleminde src_lang anahtar kelime argümanına BCP-47 kodunu belirtmelisiniz.
Romence'den Almancaya çeviri için aşağıdaki örneğe bakın:
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-moe-54b", src_lang="ron_Latn")
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-moe-54b", device_map="auto")
article = "Şeful ONU spune că nu există o soluţie militară în Siria"
inputs = tokenizer(article, return_tensors="pt").to(model.device)
translated_tokens = model.generate(
**inputs, forced_bos_token_id=tokenizer.lang_code_to_id["deu_Latn"], max_length=30
)
tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]Kaynaklar
NllbMoeConfig
sınıf transformers.NllbMoeConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truevocab_size: int = 128112max_position_embeddings: int = 1024encoder_layers: int = 12encoder_ffn_dim: int = 4096encoder_attention_heads: int = 16decoder_layers: int = 12decoder_ffn_dim: int = 4096decoder_attention_heads: int = 16encoder_layerdrop: float | int = 0.05decoder_layerdrop: float | int = 0.05use_cache: bool = Trueactivation_function: str = 'relu'd_model: int = 1024dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0init_std: float = 0.02decoder_start_token_id: int | None = 2scale_embedding: bool = Truerouter_bias: bool = Falserouter_dtype: typing.Literal['float32', 'float16', 'bfloat16'] = 'float32'router_ignore_padding_tokens: bool = Falsenum_experts: int = 128expert_capacity: int = 64encoder_sparse_step: int = 4decoder_sparse_step: int = 4router_z_loss_coef: float = 0.001router_aux_loss_coef: float = 0.001second_expert_policy: str = 'all'normalize_router_prob_before_dropping: bool = Falsebatch_prioritized_routing: bool = Falsemoe_eval_capacity_token_fraction: float = 1.0moe_token_dropout: float | int = 0.2pad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = Trueoutput_router_logits: bool = False )
Parametreler
- is_encoder_decoder (
bool, isteğe bağlı, varsayılanTrue) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı. - vocab_size (
int, isteğe bağlı, varsayılan128112) — Modelin sözlük boyutu.input_idsile temsil edilebilecek farklı token sayısını belirler. - max_position_embeddings (
int, isteğe bağlı, varsayılan1024) — Bu modelin kullanılabileceği maksimum dizi uzunluğu. - encoder_layers (
int, isteğe bağlı, varsayılan12) — Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - encoder_ffn_dim (
int, isteğe bağlı, varsayılan4096) — Encoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluğu. - encoder_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı. - decoder_layers (
int, isteğe bağlı, varsayılan12) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - decoder_ffn_dim (
int, isteğe bağlı, varsayılan4096) — Decoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. - decoder_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - encoder_layerdrop (
Union[float, int], isteğe bağlı, varsayılan0.05) — Encoder için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın. - decoder_layerdrop (
Union[float, int], isteğe bağlı, varsayılan0.05) — Çözücü için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](bkz. https://huggingface.co/papers/1909.11556) bakın. - use_cache (
bool, isteğe bağlı, varsayılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir. - activation_function (
str, isteğe bağlı, varsayılanrelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - d_model (
int, isteğe bağlı, varsayılan1024) — Kodlayıcı katmanlarının ve pooler katmanının boyutu. - dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Tüm dropout katmanları için oran. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.1) — Dikkat olasılıkları için dropout oranı. - activation_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı. - init_std (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - decoder_start_token_id (
int, isteğe bağlı, varsayılan2) — Bir kodlayıcı-çözücü modeli,bosile farklı bir token ile çözümlemeye başlıyorsa, o token'ın kimliği. - scale_embedding (
bool, isteğe bağlı, varsayılanTrue) — Gömme değerlerinin sqrt(d_model) ile bölünerek ölçeklendirilip ölçeklendirilmeyeceğini belirtir. - router_bias (
bool, isteğe bağlı, varsayılanFalse) — Router'ın sınıflandırıcısının bir sapma (bias) içermesi gerekip gerekmediğini belirtir. - router_dtype (
str, isteğe bağlı, varsayılan"float32") — Router'lar için kullanılandtype. makalede yer alan seçici hassasiyet tartışmasında belirtildiği üzere,dtype'in"float32"olarak tutulması tercih edilir. - router_ignore_padding_tokens (
bool, isteğe bağlı, varsayılanFalse) — Yönlendirme sırasında dolgu (padding) tokenlarını yok sayıp saymayacağı.Falseise, dolgu tokenları hiçbir uzmana yönlendirilmez. - num_experts (
int, isteğe bağlı, varsayılan128) — MoE katmanlarındaki yönlendirilmiş uzmanların sayısı. - expert_capacity (
int, isteğe bağlı, varsayılan 64) — Her uzmanda saklanabilecek token sayısı. - encoder_sparse_step (
int, isteğe bağlı, varsayılan 4) — Encoder'da seyrek katmanların sıklığı. 4, her 4 katmandan birinin seyrek olacağı anlamına gelir. - decoder_sparse_step (
int, isteğe bağlı, varsayılan 4) — Decoder'da seyrek katmanların sıklığı. 4, 4 katmandan birinin seyrek olacağı anlamına gelir. - router_z_loss_coef (
float, isteğe bağlı, varsayılan0.001) — Eğitim kararlılığını artırmak için büyük router logit değerlerini cezalandıran router z-loss katsayısı. - router_aux_loss_coef (
float, isteğe bağlı, varsayılan0.001) — Yardımcı yük dengeleme kaybı katsayısı. MoE modellerinde dengesiz uzman yönlendirmesini cezalandırmak için kullanılır. - second_expert_policy (
str, isteğe bağlı, varsayılan"all") — Her token için ikinci bir uzmana örneklenme olasılığının örneklenmesinde kullanılan politika. - normalize_router_prob_before_dropping (
bool, isteğe bağlı, varsayılanTrue) — Uzman kapasitesine dayalı bir maske (kapasite düşürme) uygulanmadan önce router olasılıklarının normalize edilip edilmeyeceğini belirtir. - batch_prioritized_routing (
bool, isteğe bağlı, varsayılanTrue) — Kapasite düşürme işleminden önce token'ların router olasılıklarına göre sıralanıp sıralanmayacağını belirtir. Bu, en yüksek olasılığa sahip token'ların, dizide daha uzakta olabilecek diğer token'lardan önce yönlendirileceği anlamına gelir. - moe_eval_capacity_token_fraction (
float, isteğe bağlı, varsayılan 1.0) — Doğrulama sırasında kapasite olarak kullanılacak token oranı; negatif bir değere ayarlanırsa, eğitimde kullanılan değerle aynı olur. Aralıkta olmalıdır: (0.0, 1.0]. - moe_token_dropout (
float, isteğe bağlı, varsayılan 0.2) — Uzman çıktıları üzerinde Dropout2d ile uygulanan MoE uzman çıktı maskelenmesi (EOM) için maskeleme oranı. - pad_token_id (
int, isteğe bağlı, varsayılan1) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı, varsayılan0) — Sözlükte akış başlangıcı için kullanılan token kimliği. - eos_token_id (
Union[int, list[int]], isteğe bağlı, varsayılan2) — Sözlükte akış sonu için kullanılan token kimliği. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanTrue) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı. - output_router_logits (
bool, isteğe bağlı, varsayılanFalse) — Modelin router logits'lerini döndürüp döndürmeyeceği. Bu özelliğin etkinleştirilmesi, modelin yük dengeleme kaybı ve router z-kaybı dahil olmak üzere yardımcı kaybı da çıkarmasına olanak tanır.
Bu, bir Nllb MoeModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Nllb Moe modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, facebook/nllb-moe-54b ile benzer bir yapılandırmaya yol açar.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> from transformers import NllbMoeModel, NllbMoeConfig
>>> # Initializing a NllbMoe facebook/nllb-moe-54b style configuration
>>> configuration = NllbMoeConfig()
>>> # Initializing a model from the facebook/nllb-moe-54b style configuration
>>> model = NllbMoeModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configNllbMoeTop2Router
Token'ler kullanan Router, en iyi 2 uzman atamasını seçer.
Bu yönlendirici, fairseq deposundaki NLLB-MoE'de kullanılan mekanizmayla aynıdır. Öğeler, router_probs değerine göre sıralanır ve ardından uzmanların expert_capacity değeri dolana kadar seçtikleri uzmana yönlendirilir. Her token'ın bir uzman tarafından işlendiği veya her uzmanın en az bir token aldığı konusunda bir garanti yoktur.
Ağırlıkları birleştiren yönlendiricinin (router) ağırlıkları da, güncellenmeyen durumların maskelenmesini sağlamak için geri döndürülür.
route_tokens
< source >( router_logits: Tensorinput_dtype: dtype = torch.float32padding_mask: typing.Optional[torch.LongTensor] = None )
Her uzman için dispatch_mask ve dispatch_weights değerlerini hesaplar. Maskeler, uzman kapasitesine göre uyarlanır.
forward
< source >( hidden_states: Tensorpadding_mask: typing.Optional[torch.LongTensor] = None ) → top_1_mask (torch.Tensor of shape (batch_size, sequence_length))
Parametreler
- hidden_states (
torch.Tensor) — Ruter olasılıklarının hesaplandığı (batch_size, sequence_length, hidden_dim) boyutlu girdi.
Dönüş değeri
top_1_mask (torch.Tensor, şekli (batch_size, sequence_length))
Her token için router'ın top1 olasılıklarını kullanarak seçilen uzmana karşılık gelen, [batch_size, sequence_length] biçiminde bir indeks tensörü.
router_probabilities (torch.Tensor, biçim (batch_size, sequence_length, num_experts)):
Her token ve uzman için olasılıklara karşılık gelen, (batch_size, sequence_length, num_experts) biçiminde bir tensör. Tokenları uzmanlara yönlendirmek için kullanılır.
router_logits (torch.Tensor, biçim (batch_size, sequence_length))):
Ham router logit'lerine karşılık gelen, (batch_size, sequence_length, num_experts) biçiminde bir logit tensörü.
Bu, daha sonra router z-loss'unun hesaplanmasında kullanılır.
Gizli durumlar, router olasılıklarının hesaplanmasını basitleştirmek için yeniden şekillendirilir (her uzman için ağırlıklar birleştirilir.)
NllbMoeSparseMLP
NLLB-MoE seyrek MLP modülünün uygulaması.
NllbMoeModel
sınıf transformers.NllbMoeModel
< source >( config: NllbMoeConfig )
Parametreler
- config (NllbMoeConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üzerinde herhangi bir özel head bulunmayan, ham hidden-state çıktısı üreten çıplak Nllb Moe Model.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqMoEModelOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- decoder_input_ids (
torch.LongTensorşeklinde(batch_size, target_sequence_length), isteğe bağlı) — Sözlükteki decoder giriş dizisi token'larının indeksleri.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- decoder_attention_mask (
torch.LongTensor, şekli(batch_size, target_sequence_length), isteğe bağlı) — Belirli token indekslerinde dikkat işleminin uygulanmasını önlemek için kullanılan maske. Varsayılan olarak, modelin geleceği tahmin ederken yalnızca önceki girdilere bakmasını sağlamak için nedensel bir maske kullanılır. - encoder_outputs (
tuple[tuple[torch.Tensor]], isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)boyutunda, isteğe bağlı) encoder'ın son katmanının çıktısındaki gizli durumlar dizisidir. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_ids(şekli(batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemişinput_ids(şekli(batch_size, unprocessed_length)) girmesi beklenir. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - decoder_inputs_embeds (
torch.Tensorşeklinde(batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,decoder_input_idsgeçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğerini alır. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values).
Dönüş değeri
Seq2SeqMoEModelOutput veya tuple(torch.Tensor)
Seq2SeqMoEModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (None) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
NllbMoeModel forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.past_key_valueskullanılırsa, yalnızca(batch_size, 1, hidden_size)biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.past_key_values (
EncoderDecoderCache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.decoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında decoder'ın gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
decoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
decoder_router_logits (
tuple(torch.Tensor), isteğe bağlı,output_router_logits=Truegeçirildiğinde veyaconfig.add_router_probs=Trueolduğunda döndürülür) — Her katman için bir adet içeren,(batch_size, sequence_length, num_experts)biçimindetorch.Tensoriçeren bir demet.Decoder model'unun router logits'i, Mixture of Experts modelleri için yardımcı kaybı hesaplamakta kullanışlıdır.
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
encoder_last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.encoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında kodlayıcının gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
encoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
encoder_router_logits (
tuple(torch.Tensor), isteğe bağlı,output_router_logits=Truegeçirildiğinde veyaconfig.add_router_probs=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren,(batch_size, sequence_length, num_experts)biçiminde bir demet.Kodlayıcı modelin yönlendirici logitleri, seyrek modüller için yardımcı kaybı ve z_loss'ü hesaplamak için kullanışlıdır.
NllbMoeForConditionalGeneration
sınıf transformers.NllbMoeForConditionalGeneration
< source >( config: NllbMoeConfig )
Parametreler
- config (NllbMoeConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Dil modelleme başlığına sahip NllbMoe Modeli. Özetleme için kullanılabilir.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_router_logits: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqMoEOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- decoder_input_ids (
torch.LongTensorşeklinde(batch_size, target_sequence_length), isteğe bağlı) — Sözlükteki decoder giriş dizisi token'larının indeksleri.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- decoder_attention_mask (
torch.LongTensor, şekli(batch_size, target_sequence_length), isteğe bağlı) — Belirli token indekslerinde dikkat işleminin uygulanmasını önlemek için kullanılan maske. Varsayılan olarak, modelin geleceği tahmin ederken yalnızca önceki girdilere bakmasını sağlamak için nedensel bir maske kullanılır. - encoder_outputs (
tuple[tuple[torch.Tensor]], isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)boyutunda, isteğe bağlı) encoder'ın son katmanının çıktısındaki gizli durumlar dizisidir. Decoder'ın çapraz dikkat (cross-attention) mekanizmasında kullanılır. - past_key_values (
~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_ids(şekli(batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemişinput_ids(şekli(batch_size, unprocessed_length)) girmesi beklenir. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - decoder_inputs_embeds (
torch.Tensorşeklinde(batch_size, target_sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,decoder_input_idsgeçirmek yerine gömülü bir temsil doğrudan geçirebilirsiniz. Eğerpast_key_valueskullanılıyorsa, isteğe bağlı olarak yalnızca sondecoder_inputs_embedsgirdi olarak verilmelidir (bkz.past_key_values). Bu, modelin dahili gömme arama matrisine kıyasladecoder_input_idsendekslerini ilgili vektörlere dönüştürme biçimi üzerinde daha fazla kontrol sağlamak istiyorsanız faydalıdır.decoder_input_idsvedecoder_inputs_embedsher ikisi de ayarlanmamışsa,decoder_inputs_embedsinputs_embedsdeğerini alır. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler[0, ..., config.vocab_size]aralığında olmalı ya da -100 olmalı (input_idsdocstring'ine bakın). Endeksleri-100olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca etiketleri[0, ..., config.vocab_size]aralığında olan tokenlar için hesaplanır. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values). - output_router_logits (
bool, isteğe bağlı) — Tüm yönlendiricilerin (router) logit değerlerinin döndürülüp döndürülmeyeceğini belirtir. Yönlendirici kaybının (router loss) hesaplanmasında faydalıdırlar ve çıkarım sırasında döndürülmemelidir.
Dönüş değeri
Seq2SeqMoEOutput veya tuple(torch.Tensor)
Seq2SeqMoEOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (NllbMoeConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
NllbMoeForConditionalGeneration forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Dil modelleme kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).past_key_values (
EncoderDecoderCache, isteğe bağlı,use_cache=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğunda döndürülür) — Bir EncoderDecoderCache örneğidir. Daha fazla ayrıntı için kv önbellek kılavuzumuza bakın.Sıralı çözümlemeyi hızlandırmak için (bkz.
past_key_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.decoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
decoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
decoder_router_logits (
tuple(torch.Tensor), isteğe bağlı,output_router_logits=Truegeçirildiğinde veyaconfig.add_router_probs=Trueolduğunda döndürülür) — Her katman için bir adet içeren,(batch_size, sequence_length, num_experts)biçimindetorch.Tensoriçeren bir demet.Decoder model'unun router logits'i, Mixture of Experts modelleri için yardımcı kaybı hesaplamakta kullanışlıdır.
cross_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
encoder_last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.encoder_hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
encoder_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
encoder_router_logits (
tuple(torch.Tensor), isteğe bağlı,output_router_logits=Truegeçirildiğinde veyaconfig.add_router_probs=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren,(batch_size, sequence_length, num_experts)biçiminde bir demet.Uzmanlar Karışımı (Mixture of Experts) modelleri için yardımcı kayıp ve z_loss hesaplamalarında kullanışlı olan, kodlayıcı modelin yönlendirici (router) logit değerleri.