Transformers documentation
UltraBERT
Bu model, 2026-10-10 tarihinde HF papers'ta yayımlandı ve 2026-10-14 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
UltraBERT
Genel Bakış
UltraBERT, Jungwoo Park, Taewhoo Lee ve Jaewoo Kang tarafından UltraBERT: Beyond the Limit of BERT Pre-Training makalesinde tanıtılmıştır. Sınıflandırma ve arama görevleri için maskeleme oranları, budama ve damıtma kombinasyonuyla eğitilmiş çift yönlü metin kodlayıcıları ailesidir.
Yayınlanan kodlayıcılar, 32.768 token'a kadar olan dizileri destekler. Döner konum gömme (RoPE), RMSNorm, SwiGLU ileri besleme katmanları ve sırayla yerel ile küresel dikkat kullanırlar. Her üçüncü katman küresel dikkat kullanır. Diğer katmanlar, geçerli token'a ve her iki tarafta en fazla 128 token'a dikkat eder. Yerel katmanlar için RoPE tabanı 10.000, küresel katmanlar için ise 2.560.000'dür.
| Kontrol Noktası | Katmanlar | Gizli boyut | Dikkat kafaları | Kullan |
|---|---|---|---|---|
| UltraBERT-150M | 24 | 768 | 6 | Maskeli dil modellemesi ve aşağı akış ince ayarı |
| UltraBERT-380M | 24 | 1,024 | 8 | Maskeli dil modellemesi ve aşağı akış ince ayarı |
| UltraBERT-Embed-150M | 24 | 768 | 6 | Metin gömceleri |
Maskeli dil modelleme kontrol noktaları, düşük maskeleme oranıyla eğitilmiş tahmin başlığını içerir. Çıkış ağırlıkları, giriş gömme (embedding) katmanından bağımsızdır. Sözcük bölücü (tokenizer), 49.152 token'lık SmolLM2 sözlüğünü kullanır.
Kullanım örnekleri
Maskeli dil modellemesi
Maskelenmiş bir token tahmin etmek için Pipeline veya AutoModelForMaskedLM kullanın. Mask token'ı <|mask|>'dir.
from transformers import pipeline
fill_mask = pipeline(
task="fill-mask",
model="dmis-lab/UltraBERT-150M",
device_map="auto",
)
print(fill_mask("The capital of France is <|mask|>."))
# [
# {'score': 0.9612365961074829, 'token': 7042, 'token_str': ' Paris',
# 'sequence': 'The capital of France is Paris.'},
# {'score': 0.00930546224117279, 'token': 38034, 'token_str': ' Lyon',
# 'sequence': 'The capital of France is Lyon.'},
# {'score': 0.008486305363476276, 'token': 44558, 'token_str': ' Nice',
# 'sequence': 'The capital of France is Nice.'},
# {'score': 0.0034405170008540154, 'token': 37628, 'token_str': ' Versailles',
# 'sequence': 'The capital of France is Versailles.'},
# {'score': 0.0014691735850647092, 'token': 4649, 'token_str': ' France',
# 'sequence': 'The capital of France is France.'}
# ]import torch
from transformers import AutoModelForMaskedLM, AutoTokenizer
checkpoint = "dmis-lab/UltraBERT-150M"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForMaskedLM.from_pretrained(checkpoint, device_map="auto")
inputs = tokenizer("The capital of France is <|mask|>.", return_tensors="pt").to(model.device)
with torch.no_grad():
logits = model(**inputs).logits
masked_logits = logits[inputs.input_ids == tokenizer.mask_token_id]
print(tokenizer.batch_decode(masked_logits.argmax(dim=-1)[:, None]))
# [' Paris']Metin gömceleri
UltraBERT-Embed-150M, metin gömme (embedding) olarak ilk token'ın gizli durumunu (hidden state) kullanır. Arama (retrieval) için görev talimatını sorguların başına ekleyin ve belgeleri talimatsız kodlayın. İlk token'ın konumunu korumak için sağ dolgu (right padding) kullanın. Diğer görevlere yönelik talimatlar için model kartına bakın.
Aşağıdaki örnekler, ilk token'ın gizli durumunu seçer ve gömme vektörlerini normalize eder; böylece nokta çarpımları kosinüs benzerliği verir.
import torch
import torch.nn.functional as F
from transformers import pipeline
extractor = pipeline(
task="feature-extraction",
model="dmis-lab/UltraBERT-Embed-150M",
device_map="auto",
)
texts = [
"Instruct: Given a question, retrieve passages that answer the question\nQuery: What is the capital of France?",
"Paris is the capital of France.",
"Berlin is the capital of Germany.",
]
features = extractor(texts, return_tensors=True, truncation=True, tokenize_kwargs={"max_length": 32768})
embeddings = F.normalize(torch.cat([output[:, 0] for output in features]), p=2, dim=-1)
print(embeddings[:1] @ embeddings[1:].T)
# tensor([[0.6527, 0.3981]])import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
checkpoint = "dmis-lab/UltraBERT-Embed-150M"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, padding_side="right")
model = AutoModel.from_pretrained(checkpoint, device_map="auto")
texts = [
"Instruct: Given a question, retrieve passages that answer the question\nQuery: What is the capital of France?",
"Paris is the capital of France.",
"Berlin is the capital of Germany.",
]
inputs = tokenizer(texts, padding=True, truncation=True, max_length=32768, return_tensors="pt").to(model.device)
with torch.no_grad():
embeddings = F.normalize(model(**inputs).last_hidden_state[:, 0], p=2, dim=-1)
print(embeddings[:1] @ embeddings[1:].T)
# tensor([[0.6527, 0.3981]], device='cuda:0')UltrabertConfig
sınıf transformers.UltrabertConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonevocab_size: int = 32000hidden_size: int = 4096intermediate_size: int = 11008num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 32768initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Falsepad_token_id: int | None = 0bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 0tie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float = 0.0mlp_bias: bool = Falsehead_dim: int | None = Noneclassifier_pooling: typing.Literal['cls', 'mean'] = 'cls'sliding_window: int = 128layer_types: list[str] | None = Noneprediction_head_size: int = 768classifier_dropout: float = 0.0 )
Parametreler
- vocab_size (
int, isteğe bağlı, varsayılan32000) — Modelin sözlük boyutu.input_idstarafından temsil edilebilecek farklı token sayısını tanımlar. - hidden_size (
int, isteğe bağlı, varsayılan4096) — Gizli temsillerin boyutu. - intermediate_size (
int, isteğe bağlı, varsayılan11008) — MLP temsillerinin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan32) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan32) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - num_key_value_heads (
int, isteğe bağlı) — Bu, Grouped Query Attention uygulamasında kullanılacak key_value başlarının sayısıdır.num_key_value_heads=num_attention_headsise model Multi Head Attention (MHA) kullanır,num_key_value_heads=1ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için bu makaleye göz atın. Belirtilmezse, varsayılan olaraknum_attention_headskullanılır. - hidden_act (
str, isteğe bağlı, varsayılansilu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - max_position_embeddings (
int, isteğe bağlı, varsayılan32768) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - initializer_range (
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ı. - rms_norm_eps (
float, isteğe bağlı, varsayılan1e-06) — rms normalizasyon katmanları tarafından kullanılan epsilon. - use_cache (
bool, isteğe bağlı, varsayılanFalse) — Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızcaconfig.is_decoder=Trueolduğunda veya model yalnızca decoder tabanlı üretken bir model olduğunda geçerlidir. - pad_token_id (
int, isteğe bağlı, varsayılan0) — 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ılan0) — Sözlükte akış sonu için kullanılan token kimliği. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanFalse) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], isteğe bağlı) — RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük,rope_thetaiçin bir değer ve daha uzunmax_position_embeddingsile RoPE kullanmak istiyorsanız ölçekleme için kullanılan isteğe bağlı parametreleri içermelidir. - attention_bias (
bool, isteğe bağlı, varsayılanFalse) — Öz-dikkat sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında önyargı (bias) kullanılıp kullanılmayacağı. - attention_dropout (
Union[int, float], isteğe bağlı, varsayılan0.0) — Dikkat olasılıkları için dropout oranı. - mlp_bias (
bool, isteğe bağlı, varsayılanFalse) — MLP katmanlarındaki up_proj, down_proj ve gate_proj katmanlarında bias kullanılıp kullanılmayacağı. - head_dim (
int, isteğe bağlı) — Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır. - classifier_pooling (
str, isteğe bağlı, varsayılan"cls") — Dizi sınıflandırma için havuzlama yöntemi."cls"veya"mean". - sliding_window (
int, isteğe bağlı, varsayılan 128) — Kayan pencere dikkat katmanlarında her tokenın her iki yanındaki kapsayıcı dikkat yarıçapı. - layer_types (
list[str], isteğe bağlı) — Her katman indeksini ilgili katman türüyle açıkça eşleyen bir liste. Sağlanmazsa, config değerlerine göre otomatik olarak oluşturulur. - prediction_head_size (
int, isteğe bağlı, varsayılan 768) — İki katmanlı maskeli dil modelleme tahmin başlığının ara boyutu. - classifier_dropout (
float, isteğe bağlı, varsayılan0.0) — Sınıflandırıcı için dropout oranı.
Bu, bir UltrabertModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Ultrabert modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, dmis-lab/UltraBERT-150M 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.
UltrabertModel
sınıf transformers.UltrabertModel
< source >( config: UltrabertConfig )
Parametreler
- config (UltrabertConfig) — 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 Ultrabert 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.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorş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.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - 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.
Dönüş değeri
BaseModelOutput veya tuple(torch.Tensor)
Bir BaseModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (UltrabertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UltrabertModel 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 son katmanının çıktısındaki gizli durumlar dizisi.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 modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
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 softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
UltrabertForMaskedLM
sınıf transformers.UltrabertForMaskedLM
< source >( config: UltrabertConfig )
Parametreler
- config (UltrabertConfig) — 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.
Maskeli dil modellemesi için üstünde bir decoder başlığı bulunan Ultrabert 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] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MaskedLMOutput 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.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - 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. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler[-100, 0, ..., config.vocab_size]aralığında olmalıdır (bkz.input_idsdocstring). Endeksleri-100olarak ayarlanan jetonlar yok sayılır (maskelenir), kayıp yalnızca etiketleri[0, ..., config.vocab_size]aralığında olan jetonlar için hesaplanır.
Dönüş değeri
MaskedLMOutput veya tuple(torch.Tensor)
Bir MaskedLMOutput veya
torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (UltrabertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UltrabertForMaskedLM 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) — Maskeli dil modelleme (MLM) 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).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 modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
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 softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnek:
>>> from transformers import AutoTokenizer, UltrabertForMaskedLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("dmis-lab/UltraBERT-150M")
>>> model = UltrabertForMaskedLM.from_pretrained("dmis-lab/UltraBERT-150M")
>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...
>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...UltrabertForSequenceClassification
sınıf transformers.UltrabertForSequenceClassification
< source >( config: UltrabertConfig )
Parametreler
- config (UltrabertConfig) — 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 havuzlama (pooling) işlemini gerçekleştiren bir dizi sınıflandırma başlığına sahip Ultrabert Modeli.
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] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput 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.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - 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. - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Sınıflandırma/geri dönüş kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.config.num_labels == 1ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır.
Dönüş değeri
SequenceClassifierOutput veya tuple(torch.Tensor)
Bir SequenceClassifierOutput veya
torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (UltrabertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UltrabertForSequenceClassification 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) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.logits (
torch.Tensor, şekli(batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi).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 modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
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 softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Tek etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, UltrabertForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("dmis-lab/UltraBERT-150M")
>>> model = UltrabertForSequenceClassification.from_pretrained("dmis-lab/UltraBERT-150M")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UltrabertForSequenceClassification.from_pretrained("dmis-lab/UltraBERT-150M", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Çok etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, UltrabertForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("dmis-lab/UltraBERT-150M")
>>> model = UltrabertForSequenceClassification.from_pretrained("dmis-lab/UltraBERT-150M", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UltrabertForSequenceClassification.from_pretrained(
... "dmis-lab/UltraBERT-150M", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossUltrabertForTokenClassification
sınıf transformers.UltrabertForTokenClassification
< source >( config: UltrabertConfig )
Parametreler
- config (UltrabertConfig) — 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 adlandırılmış varlık tanıma (NER) görevleri için örneğin bir token sınıflandırma başlığı bulunan Ultrabert Modeli.
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] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput 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.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - 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. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.
Dönüş değeri
TokenClassifierOutput veya tuple(torch.Tensor)
Bir TokenClassifierOutput veya
torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (UltrabertConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
UltrabertForTokenClassification 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) — Sınıflandırma kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels)) — Sınıflandırma puanları (SoftMax öncesi).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 modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
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 softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnek:
>>> from transformers import AutoTokenizer, UltrabertForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("dmis-lab/UltraBERT-150M")
>>> model = UltrabertForTokenClassification.from_pretrained("dmis-lab/UltraBERT-150M")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...UltrabertForQuestionAnswering
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.Tensor | None = Nonestart_positions: torch.LongTensor | None = Noneend_positions: torch.LongTensor | None = None**kwargs: Unpack[TransformersKwargs] ) → QuestionAnsweringModelOutput
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.
- position_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - past_key_values (
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. - start_positions (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketli aralığın başlangıç konumunun (indeksinin) etiketleri. Konumlar, dizinin uzunluğuna (sequence_length) göre sınırlandırılır. Dizi dışındaki konumlar, kayıp hesabında dikkate alınmaz. - end_positions (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketli aralığın sonundaki konumun (indeksin) etiketleri. Konumlar, dizinin uzunluğuna (sequence_length) göre sınırlandırılır. Dizi dışındaki konumlar, kaybın hesaplanmasında dikkate alınmaz.
Dönüş değeri
QuestionAnsweringModelOutput
GenericForQuestionAnswering 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.