Transformers documentation
TimesFM 2.5
Bu model 2023-10-14 tarihinde HF papers'ta yayımlandı ve 2026-02-27 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
TimesFM 2.5
Genel Bakış
TimesFM 2.5 (Time Series Foundation Model), Abhimanyu Das, Weihao Kong, Rajat Sen ve Yichen Zhou tarafından A decoder-only foundation model for time-series forecasting makalesinde önerilen, önceden eğitilmiş bir zaman serisi temel modelidir. Model, orijinal TimesFM mimarisine dayanmakta olup dönerli dikkat (rotary attention), QK normalizasyonu, boyut başına dikkat ölçekleme ve sürekli kantil tahmini özelliklerini içermektedir.
Makalenin özeti aşağıdaki gibidir:
Doğal Dil İşleme (NLP) alanında büyük dil modellerindeki son gelişmelerden ilham alarak, çeşitli açık veri setlerinde kutudan çıktığı gibi (out-of-the-box) sıfır atış (zero-shot) performansı, her bir veri seti için en son (state-of-the-art) denetimli tahmin modellerinin doğruluğuna yaklaşan bir zaman serisi temel modeli tasarladık. Modelimiz, hem gerçek dünya hem de sentetik veri setlerinden oluşan büyük bir zaman serisi korpusu kullanılarak, girdi yamalaması (input patching) ile bir decoder tarzı dikkat (attention) modelinin ön eğitimi (pretraining) üzerine kuruludur. Daha önce görülmemiş çeşitli tahmin veri setleri üzerinde yapılan deneyler, modelin farklı alanlarda, tahmin ufuklarında ve zaman granülerliklerinde doğru sıfır atış tahminleri üretebileceğini göstermektedir.
Bu model kashif tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kontrol noktasını google/timesfm-2.5-200m-transformers adresinde bulabilirsiniz.
Kullanım örneği
import numpy as np
import torch
from transformers import TimesFm2_5ModelForPrediction
model = TimesFm2_5ModelForPrediction.from_pretrained(
"google/timesfm-2.5-200m-transformers",
device_map="auto",
)
forecast_input = [
np.sin(np.linspace(0, 20, 100)),
np.sin(np.linspace(0, 20, 200)),
np.sin(np.linspace(0, 20, 400)),
]
forecast_input_tensor = [torch.tensor(ts, dtype=torch.float32, device=model.device) for ts in forecast_input]
with torch.no_grad():
outputs = model(past_values=forecast_input_tensor, return_dict=True)
point_forecast = outputs.mean_predictions
quantile_forecast = outputs.full_predictionsTimesFm2_5Config
sınıf transformers.TimesFm2_5Config
< 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 = Nonepatch_length: int = 32context_length: int = 16384horizon_length: int = 128num_hidden_layers: int = 20hidden_size: int = 1280intermediate_size: int = 1280head_dim: int = 80num_attention_heads: int = 16rms_norm_eps: float = 1e-06quantiles: list[float] | tuple[float, ...] = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)attention_dropout: float | int = 0.0initializer_range: float = 0.02num_key_value_heads: int = 16attention_bias: bool = Falseoutput_quantile_len: int = 1024decode_index: int = 5use_bias: bool = Falseactivation: str = 'swish'use_continuous_quantile_head: bool = Trueforce_flip_invariance: bool = Trueinfer_is_positive: bool = Truemax_position_embeddings: int = 16384rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None )
Parametreler
- patch_length (
int, isteğe bağlı, varsayılan 32) — Girdi dizisindeki bir yamanın uzunluğu. - context_length (
int, isteğe bağlı, varsayılan 16384) — Girdi bağlamının uzunluğu. - horizon_length (
int, isteğe bağlı, varsayılan 128) — Tahmin ufku uzunluğu. - num_hidden_layers (
int, isteğe bağlı, varsayılan20) — Transformer çözücüdeki gizli katman sayısı. - hidden_size (
int, isteğe bağlı, varsayılan1280) — Gizli temsillerin boyutu. - intermediate_size (
int, isteğe bağlı, varsayılan1280) — MLP temsillerinin boyutu. - head_dim (
int, isteğe bağlı, varsayılan80) — Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır. - num_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - rms_norm_eps (
float, isteğe bağlı, varsayılan1e-06) — rms normalizasyon katmanları tarafından kullanılan epsilon. - quantiles (
list[float], isteğe bağlı, varsayılan[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) — Tahmin edilecek çeyrekler. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Dikkat olasılıkları için dropout oranı. - 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ı. - num_key_value_heads (
int, isteğe bağlı, varsayılan16) — 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. - 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ğı. - output_quantile_len (
int, isteğe bağlı, varsayılan 1024) — Quantile çıktı projeksiyon boyutunun uzunluğu. - decode_index (
int, opsiyonel, varsayılan 5) — Nokta (medyan) tahminini çıkarmak için kantil boyutunda kullanılan indeks. - use_bias (
bool, isteğe bağlı, varsayılanFalse) — MLP ve transformer doğrusal katmanlarında bias kullanılıp kullanılmayacağı. - activation (
str, opsiyonel, varsayılanswish) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - use_continuous_quantile_head (
bool, isteğe bağlı, varsayılanTrue) — Medyan dışı quantile tahminleri için sürekli quantile head'inin kullanılıp kullanılmayacağını belirtir. - force_flip_invariance (
bool, isteğe bağlı, varsayılanTrue) — Tahmin sırasında flip-değişmezlik ortalama uygulamasının yapılıp yapılmayacağı. - infer_is_positive (
bool, isteğe bağlı, varsayılanTrue) — Girdi minimumu negatif değilse, tahminlerin negatif olmayan değerlere sabitlenip sabitlenmeyeceğini belirtir. - max_position_embeddings (
int, isteğe bağlı, varsayılan16384) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - 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.
Bu, bir TimesFm2_5Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Timesfm2 5 modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, google/timesfm-2.5-200m-transformers modelinin yapılandırmasına benzer bir yapılandırma elde edilir.
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.
TimesFm2_5Model
forward
< source >( past_values: Tensorpast_values_padding: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TimesFm2_5Output or tuple(torch.Tensor)
Parametreler
- past_values (
torch.Tensor, şekli(batch_size, sequence_length)) — Modelin girdisi olarak kullanılan zaman serisinin geçmiş değerleri. - past_values_padding (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Girdi için dolgu maskesi.1dolgu (maskelenmiş) zaman adımlarını,0geçerli değerleri belirtir.
Dönüş değeri
TimesFm2_5Output veya tuple(torch.Tensor)
TimesFm2_5Output veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (TimesFm2_5Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
TimesFm2_5Model 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.
loc (
torch.Tensor, şekli(batch_size,)veya(batch_size, input_size), isteğe bağlı) — Modelin aynı büyüklükte girdiler almasını sağlamak için kullanılan her zaman serisinin bağlam penceresindeki değerleri kaydırır ve ardından değerleri orijinal büyüklüğe geri kaydırır.scale (
torch.Tensor, şekli(batch_size,)veya(batch_size, input_size), isteğe bağlı) — Modelin aynı büyüklükte girdiler almasını sağlamak için her zaman serisinin bağlam penceresindeki değerlerin ölçeklenmesinde kullanılan ve ardından orijinal büyüklüğe geri ölçeklenmek için kullanılan değerler.context_mu (
torch.Tensor, şekli(batch_size, num_patches)) — Normalizasyon sırasında her giriş yaması için hesaplanan kayan ortalamalar.context_sigma (
torch.Tensor, şekli(batch_size, num_patches)) — Normalizasyon sırasında her giriş yaması için hesaplanan hareketli standart sapmalar.
TimesFm2_5ModelForPrediction
Quantile ve ortalama tahmini için TimesFm2_5 modeli.
forward
< source >( past_values: collections.abc.Sequence[torch.Tensor]window_size: int | None = Nonefuture_values: typing.Optional[torch.Tensor] = Noneforecast_context_len: int | None = Nonetruncate_negative: bool | None = Noneforce_flip_invariance: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TimesFm2_5OutputForPrediction or tuple(torch.Tensor)
Parametreler
- past_values (
collections.abc.Sequence[torch.Tensor]) — Modelin girdisi olarak kullanılan zaman serisinin geçmiş değerleri. Her tensör bir boyutlu bir zaman serisidir. - window_size (
int, isteğe bağlı) — Trend + artık ayrıştırmasının pencere boyutu.Noneise ayrıştırma uygulanmaz. - future_values (
torch.Tensor, isteğe bağlı) — Kayıp (loss) hesaplamak için kullanılan isteğe bağlı gelecek değerleri. - forecast_context_len (
int, isteğe bağlı) — Tahmin sırasında kullanılan isteğe bağlı bağlam uzunluğu geçersiz kılma değeri. - truncate_negative (
bool, isteğe bağlı) — Çıktıların negatif olmayan değerlerle sınırlandırılıp sınırlandırılmayacağını belirtir.Noneise, varsayılan olarakconfig.infer_is_positivekullanılır. - force_flip_invariance (
bool, isteğe bağlı) — Flip-invariance kombinasyonunun uygulanıp uygulanmayacağını belirtir.Noneise, varsayılan olarakconfig.force_flip_invariancekullanılır.
Dönüş değeri
TimesFm2_5OutputForPrediction veya tuple(torch.Tensor)
TimesFm2_5OutputForPrediction veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırma (TimesFm2_5Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
TimesFm2_5ModelForPrediction 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.
mean_predictions (
torch.Tensor, şekli(batch_size, horizon_length)) — Normalizasyon kaldırıldıktan sonraki deterministik tahminler.full_predictions (
torch.Tensor, şekli(batch_size, horizon_length, quantiles)) — Normalizasyon kaldırıldıktan sonra medyanı da içeren kantil tahminleri.loss (
torch.Tensor, şekli(1,), opsiyonel,future_valuessağlandığında döndürülür) — Hedefler verildiğinde MSE ve quantile kayıplarını birleştiren eğitim kaybı.