Transformers documentation
Autoformer
Model ini dipublikasikan di HF papers pada 2021-06-24 dan disumbangkan ke Hugging Face Transformers pada 2023-05-30.
Autoformer
Ikhtisar
Model Autoformer diusulkan dalam Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting oleh Haixu Wu, Jiehui Xu, Jianmin Wang, Mingsheng Long.
Model ini memperluas Transformer sebagai arsitektur dekomposisi mendalam, yang dapat secara progresif menguraikan komponen tren dan musiman selama proses peramalan.
Abstrak dari makalah tersebut adalah sebagai berikut:
Memperpanjang waktu prediksi merupakan kebutuhan kritis untuk aplikasi nyata, seperti peringatan dini cuaca ekstrem dan perencanaan konsumsi energi jangka panjang. Kertas ini mempelajari masalah prediksi jangka panjang pada deret waktu. Model berbasis Transformer sebelumnya mengadopsi berbagai mekanisme self-attention untuk menemukan dependensi jarak jauh. Namun, pola temporal yang rumit dari masa depan jangka panjang menghambat model dalam menemukan dependensi yang andal. Selain itu, Transformer harus mengadopsi versi sparse dari self-attention point-wise untuk efisiensi deret panjang, yang mengakibatkan bottleneck pemanfaatan informasi. Melampaui Transformer, kami merancang Autoformer sebagai arsitektur dekomposisi baru dengan mekanisme Auto-Correlation. Kami mematahkan konvensi pra-pemrosesan dekomposisi deret dan memperbaruinya menjadi blok internal dasar dari model dalam. Desain ini memberdayakan Autoformer dengan kapasitas dekomposisi progresif untuk deret waktu yang kompleks. Lebih lanjut, terinspirasi oleh teori proses stokastik, kami merancang mekanisme Auto-Correlation berdasarkan periodisitas deret, yang melakukan penemuan dependensi dan agregasi representasi pada level sub-deret. Auto-Correlation melampaui self-attention dalam hal efisiensi dan akurasi. Dalam prediksi jangka panjang, Autoformer menghasilkan akurasi state-of-the-art, dengan peningkatan relatif 38% pada enam benchmark, yang mencakup lima aplikasi praktis: energi, lalu lintas, ekonomi, cuaca, dan penyakit.
Model ini disumbangkan oleh elisim dan kashif. Kode aslinya dapat ditemukan di sini.
Sumber daya
Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai. Jika Anda tertarik untuk mengirimkan sumber agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber yang sudah ada.
- Lihat blog-post Autoformer di blog HuggingFace: Ya, Transformers Efektif untuk Peramalan Deret Waktu (+ Autoformer)
AutoformerConfig
kelas transformers.AutoformerConfig
< 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 = Trueprediction_length: int | None = Nonecontext_length: int | None = Nonedistribution_output: str = 'student_t'loss: str = 'nll'input_size: int = 1lags_sequence: list[int] | tuple[int, ...] = (1, 2, 3, 4, 5, 6, 7)scaling: bool | str = Truenum_time_features: int = 0num_dynamic_real_features: int = 0num_static_categorical_features: int = 0num_static_real_features: int = 0cardinality: list[int] | None = Noneembedding_dimension: list[int] | None = Noned_model: int = 64encoder_attention_heads: int = 2decoder_attention_heads: int = 2encoder_layers: int = 2decoder_layers: int = 2encoder_ffn_dim: int = 32decoder_ffn_dim: int = 32activation_function: str = 'gelu'dropout: float | int = 0.1encoder_layerdrop: float | int = 0.1decoder_layerdrop: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.1num_parallel_samples: int = 100init_std: float = 0.02use_cache: bool = Truelabel_length: int = 10moving_average: int = 25autocorrelation_factor: int = 3 )
Parameter
- is_encoder_decoder (
bool, opsional, defaultnyaTrue) — Apakah model digunakan sebagai encoder/decoder atau tidak. - prediction_length (
int, opsional) — Panjang prediksi untuk decoder. Dengan kata lain, horizon prediksi dari model. - context_length (
int, opsional, defaultnyaprediction_length) — Panjang konteks untuk encoder. Jika tidak diset, panjang konteks akan sama denganprediction_length. - distribution_output (
string, opsional, default"student_t") — Head emisi distribusi untuk model. Bisa berupa “student_t”, “normal” atau “negative_binomial”. - loss (
string, opsional, default"nll") — Fungsi loss untuk model yang sesuai dengan headdistribution_output. Untuk distribusi parametrik, ini adalah negative log likelihood (nll) - yang saat ini satu-satunya yang didukung. - input_size (
int, opsional, default 1) — Ukuran variabel target yang secara default adalah 1 untuk target univariat. Akan menjadi > 1 dalam kasus target multivariat. - lags_sequence (
list[int], opsional, default[1, 2, 3, 4, 5, 6, 7]) — Lag dari deret waktu input sebagai kovariat, yang sering ditentukan oleh frekuensinya. Default adalah[1, 2, 3, 4, 5, 6, 7]. - scaling (
bool, opsional defaultnyaTrue) — Apakah akan menskalakan target input. - num_time_features (
int, opsional, default 0) — Jumlah fitur waktu dalam deret waktu input. - num_dynamic_real_features (
int, opsional, default 0) — Jumlah fitur bernilai real dinamis. - num_static_categorical_features (
int, opsional, default 0) — Jumlah fitur kategoris statis. - num_static_real_features (
int, opsional, default 0) — Jumlah fitur bernilai real statis. - cardinality (
list[int], opsional) — Kardinalitas (jumlah nilai yang berbeda) untuk masing-masing fitur kategoris statis. Harus berupa daftar bilangan bulat, dengan panjang yang sama dengannum_static_categorical_features. Tidak bolehNonejikanum_static_categorical_features> 0. - embedding_dimension (
list[int], opsional) — Dimensi dari embedding dan hidden states. - d_model (
int, opsional, default64) — Ukuran lapisan encoder dan lapisan pooler. - encoder_attention_heads (
int, opsional, default2) — Jumlah kepala perhatian untuk setiap lapisan perhatian dalam encoder Transformer. - decoder_attention_heads (
int, opsional, default2) — Jumlah kepala perhatian untuk setiap lapisan perhatian dalam decoder Transformer. - encoder_layers (
int, opsional, default2) — Jumlah lapisan tersembunyi pada encoder Transformer. Akan menggunakan nilai yang sama dengannum_layersjika tidak diatur. - decoder_layers (
int, opsional, default2) — Jumlah lapisan tersembunyi dalam decoder Transformer. Akan menggunakan nilai yang sama dengannum_layersjika tidak diatur. - encoder_ffn_dim (
int, opsional, defaultnya32) — Dimensi dari lapisan “intermediate” (sering disebut feed-forward) di encoder. - decoder_ffn_dim (
int, opsional, defaultnya32) — Dimensi dari lapisan “intermediate” (sering disebut feed-forward) di decoder. - activation_function (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - dropout (
Union[float, int], opsional, default0.1) — Rasio untuk semua lapisan dropout. - encoder_layerdrop (
Union[float, int], opsional, default0.1) — Probabilitas LayerDrop untuk encoder. Lihat [makalah LayerDrop](lihat https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut. - decoder_layerdrop (
Union[float, int], opsional, default0.1) — Probabilitas LayerDrop untuk decoder. Lihat [makalah LayerDrop](lihat https://huggingface.co/papers/1909.11556) untuk detail lebih lanjut. - attention_dropout (
Union[float, int], opsional, default0.1) — Rasio dropout untuk probabilitas perhatian. - activation_dropout (
Union[float, int], opsional, defaultnya0.1) — Rasio dropout untuk aktivasi di dalam lapisan fully connected. - num_parallel_samples (
int, opsional, default 100) — Jumlah sampel yang akan dihasilkan secara paralel untuk setiap langkah waktu inferensi. - init_std (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - label_length (
int, opsional, default 10) — Panjang token awal dari decoder Autoformer, yang digunakan untuk prediksi multi-langkah langsung (yaitu generasi non-otoregresif). - moving_average (
int, opsional, default 25) — Ukuran jendela dari moving average. Dalam praktiknya, ini adalah ukuran kernel dalam AvgPool1d dari Decomposition Layer. - autocorrelation_factor (
int, opsional, default 3) — Faktor “Attention” (yaitu mekanisme AutoCorrelation) yang digunakan untuk menemukan k delay autokorelasi teratas. Disarankan dalam makalah untuk mengaturnya ke angka antara 1 dan 5.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari AutoformerModel. Kelas ini digunakan untuk membuat instans model Autoformer sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari huggingface/autoformer-tourism-monthly
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import AutoformerConfig, AutoformerModel
>>> # Initializing a default Autoformer configuration
>>> configuration = AutoformerConfig()
>>> # Randomly initializing a model (with random weights) from the configuration
>>> model = AutoformerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configAutoformerModel
kelas transformers.AutoformerModel
< source >( config: AutoformerConfig )
Parameter
- config (AutoformerConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Autoformer polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( past_values: Tensorpast_time_features: Tensorpast_observed_mask: Tensorstatic_categorical_features: typing.Optional[torch.Tensor] = Nonestatic_real_features: typing.Optional[torch.Tensor] = Nonefuture_values: typing.Optional[torch.Tensor] = Nonefuture_time_features: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: list[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → AutoformerModelOutput or tuple(torch.Tensor)
Parameter
- past_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai masa lalu dari deret waktu, yang berfungsi sebagai konteks untuk memprediksi masa depan. Nilai-nilai ini dapat berisi lag, yaitu nilai tambahan dari masa lalu yang ditambahkan untuk berfungsi sebagai “konteks tambahan”.past_valuesadalah apa yang diterima encoder Transformer sebagai input (dengan fitur tambahan opsional, sepertistatic_categorical_features,static_real_features,past_time_features).Panjang urutan di sini sama dengan
context_length+max(config.lags_sequence).Nilai yang hilang perlu diganti dengan nol.
- past_time_features (
torch.Tensordengan bentuk(batch_size, sequence_length, num_features), opsional) — Fitur waktu opsional, yang secara internal akan ditambahkan oleh model kepast_values. Fitur-fitur ini bisa berupa hal-hal seperti “bulan dalam setahun”, “hari dalam sebulan”, dll. yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur-fitur ini juga bisa berupa fitur “usia” (age features), yang pada dasarnya membantu model mengetahui “pada titik mana dalam kehidupan” suatu time-series berada. Fitur usia memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini.Fitur-fitur ini berfungsi sebagai “positional encodings” dari input. Jadi, berbeda dengan model seperti BERT, di mana positional encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur waktu tambahan.
Autoformer hanya mempelajari embedding tambahan untuk
static_categorical_features. - past_observed_mask (
torch.BoolTensordengan bentuk(batch_size, sequence_length), opsional) — Mask boolean untuk menunjukkan nilaipast_valuesmana yang teramati dan mana yang hilang. Nilai mask dipilih dari[0, 1]:- 1 untuk nilai yang diamati,
- 0 untuk nilai yang hilang (yaitu NaN yang diganti dengan nol).
- static_categorical_features (
torch.LongTensordengan bentuk(batch_size, number of static categorical features), opsional) — Fitur kategoris statis opsional yang akan dipelajari modelnya sebagai embedding, yang kemudian akan ditambahkan ke nilai dari deret waktu tersebut.Fitur kategoris statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu).
Contoh tipikal dari fitur kategoris statis adalah ID deret waktu.
- static_real_features (
torch.Tensordengan bentuk(batch_size, number of static real features), opsional) — Fitur real statis opsional yang akan ditambahkan model ke nilai dari deret waktu.Fitur real statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu).
Contoh tipikal dari fitur real statis adalah informasi promosi.
- future_values (
torch.Tensordengan bentuk(batch_size, prediction_length)) — Nilai masa depan dari deret waktu, yang berfungsi sebagai label untuk model.future_valuesadalah apa yang perlu dipelajari oleh Transformer untuk dioutputkan, mengingatpast_values.Lihat notebook demo dan potongan kode untuk detailnya.
Nilai yang hilang perlu diganti dengan nol.
- future_time_features (
torch.Tensordengan bentuk(batch_size, prediction_length, num_features), opsional) — Fitur waktu opsional, yang secara internal akan ditambahkan oleh model kefuture_values. Fitur-fitur ini bisa berupa hal-hal seperti “bulan dalam setahun”, “hari dalam sebulan”, dll., yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur-fitur ini juga bisa berupa fitur “usia” (age features), yang pada dasarnya membantu model mengetahui “pada titik mana dalam kehidupan” suatu time-series berada. Fitur usia memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini.Fitur-fitur ini berfungsi sebagai “positional encodings” dari input. Jadi, berbeda dengan model seperti BERT, di mana positional encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur tambahan.
Autoformer hanya mempelajari embedding tambahan untuk
static_categorical_features. - decoder_attention_mask (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Mask untuk menghindari pelaksanaan attention pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan. - encoder_outputs (
tuple(tuple(torch.Tensor), opsional) — Tuple terdiri darilast_hidden_state,hidden_states(opsional) danattentions(opsional)last_hidden_statedengan bentuk(batch_size, sequence_length, hidden_size)(opsional) adalah rangkaian hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
AutoformerModelOutput atau tuple(torch.Tensor)
AutoformerModelOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (AutoformerConfig) dan input.
Metode forward dari AutoformerModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir dari decoder model.Jika
past_key_valuesdigunakan, hanya hidden-state terakhir dari sekuens dengan bentuk(batch_size, 1, hidden_size)yang dioutput.trend (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Tensor tren untuk setiap deret waktu.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Mengandung hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.decoder_hidden_states (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari decoder pada output setiap layer ditambah output embedding awal.
decoder_attentions (
tuple[torch.Tensor], opsional, dikembalikan ketikaoutput_attentions=Truedilewatkan atau ketikaconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
cross_attentions (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
encoder_last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.encoder_hidden_states (
tuple[torch.Tensor], opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari encoder pada output setiap layer ditambah output embedding awal.
encoder_attentions (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
loc (
torch.Tensordengan bentuk(batch_size,)atau(batch_size, input_size), opsional) — Menggeser nilai dari context window setiap time series, yang digunakan untuk memberikan input dengan magnitudo yang sama kepada model, kemudian digunakan untuk menggeser kembali ke magnitudo aslinya.scale (
torch.Tensordengan bentuk(batch_size,)atau(batch_size, input_size), opsional) — Nilai penskalaan untuk jendela konteks masing-masing deret waktu, yang digunakan untuk memberikan input dengan magnitudo yang sama kepada model, kemudian digunakan untuk menskalakan kembali ke magnitudo asli. static_features: (torch.Tensordengan bentuk(batch_size, feature size), opsional): Fitur statis dari masing-masing deret waktu dalam batch, yang disalin ke kovariat pada saat inferensi.static_features (
torch.Tensordengan bentuk(batch_size, feature size), opsional) — Fitur statis dari masing-masing deret waktu dalam batch yang disalin ke kovariat pada saat inferensi.
Contoh:
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import AutoformerModel
>>> file = hf_hub_download(
... repo_id="hf-internal-testing/tourism-monthly-batch", filename="train-batch.pt", repo_type="dataset"
... )
>>> batch = torch.load(file)
>>> model = AutoformerModel.from_pretrained("huggingface/autoformer-tourism-monthly")
>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
... past_values=batch["past_values"],
... past_time_features=batch["past_time_features"],
... past_observed_mask=batch["past_observed_mask"],
... static_categorical_features=batch["static_categorical_features"],
... future_values=batch["future_values"],
... future_time_features=batch["future_time_features"],
... )
>>> last_hidden_state = outputs.last_hidden_stateAutoformerForPrediction
kelas transformers.AutoformerForPrediction
< source >( config: AutoformerConfig )
Parameter
- config (AutoformerConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Autoformer dengan kepala distribusi di bagian atas untuk peramalan deret waktu.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( past_values: Tensorpast_time_features: Tensorpast_observed_mask: Tensorstatic_categorical_features: typing.Optional[torch.Tensor] = Nonestatic_real_features: typing.Optional[torch.Tensor] = Nonefuture_values: typing.Optional[torch.Tensor] = Nonefuture_time_features: typing.Optional[torch.Tensor] = Nonefuture_observed_mask: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: list[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqTSPredictionOutput or tuple(torch.Tensor)
Parameter
- past_values (
torch.Tensordengan bentuk(batch_size, sequence_length)) — Nilai masa lalu dari deret waktu, yang berfungsi sebagai konteks untuk memprediksi masa depan. Nilai-nilai ini dapat berisi lag, yaitu nilai tambahan dari masa lalu yang ditambahkan untuk berfungsi sebagai “konteks tambahan”.past_valuesadalah apa yang diterima encoder Transformer sebagai input (dengan fitur tambahan opsional, sepertistatic_categorical_features,static_real_features,past_time_features).Panjang urutan di sini sama dengan
context_length+max(config.lags_sequence).Nilai yang hilang perlu diganti dengan nol.
- past_time_features (
torch.Tensordengan bentuk(batch_size, sequence_length, num_features), opsional) — Fitur waktu opsional, yang secara internal akan ditambahkan oleh model kepast_values. Fitur-fitur ini bisa berupa hal-hal seperti “bulan dalam setahun”, “hari dalam sebulan”, dll. yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur-fitur ini juga bisa berupa fitur “usia” (age features), yang pada dasarnya membantu model mengetahui “pada titik mana dalam kehidupan” suatu time-series berada. Fitur usia memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini.Fitur-fitur ini berfungsi sebagai “positional encodings” dari input. Jadi, berbeda dengan model seperti BERT, di mana positional encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur waktu tambahan.
Autoformer hanya mempelajari embedding tambahan untuk
static_categorical_features. - past_observed_mask (
torch.BoolTensordengan bentuk(batch_size, sequence_length), opsional) — Mask boolean untuk menunjukkan nilaipast_valuesmana yang teramati dan mana yang hilang. Nilai mask dipilih dari[0, 1]:- 1 untuk nilai yang diamati,
- 0 untuk nilai yang hilang (yaitu NaN yang diganti dengan nol).
- static_categorical_features (
torch.LongTensordengan bentuk(batch_size, number of static categorical features), opsional) — Fitur kategoris statis opsional yang akan dipelajari modelnya sebagai embedding, yang kemudian akan ditambahkan ke nilai dari deret waktu tersebut.Fitur kategoris statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu).
Contoh tipikal dari fitur kategoris statis adalah ID deret waktu.
- static_real_features (
torch.Tensordengan bentuk(batch_size, number of static real features), opsional) — Fitur real statis opsional yang akan ditambahkan model ke nilai dari deret waktu.Fitur real statis adalah fitur yang memiliki nilai yang sama untuk semua langkah waktu (statis terhadap waktu).
Contoh tipikal dari fitur real statis adalah informasi promosi.
- future_values (
torch.Tensordengan bentuk(batch_size, prediction_length)) — Nilai masa depan dari deret waktu, yang berfungsi sebagai label untuk model.future_valuesadalah apa yang perlu dipelajari oleh Transformer untuk dioutputkan, mengingatpast_values.Lihat notebook demo dan potongan kode untuk detailnya.
Nilai yang hilang perlu diganti dengan nol.
- future_time_features (
torch.Tensordengan bentuk(batch_size, prediction_length, num_features), opsional) — Fitur waktu opsional, yang secara internal akan ditambahkan oleh model kefuture_values. Fitur-fitur ini bisa berupa hal-hal seperti “bulan dalam setahun”, “hari dalam sebulan”, dll., yang dikodekan sebagai vektor (misalnya sebagai Fourier features). Fitur-fitur ini juga bisa berupa fitur “usia” (age features), yang pada dasarnya membantu model mengetahui “pada titik mana dalam kehidupan” suatu time-series berada. Fitur usia memiliki nilai kecil untuk langkah waktu di masa lalu yang jauh dan meningkat secara monoton seiring kita mendekati langkah waktu saat ini.Fitur-fitur ini berfungsi sebagai “positional encodings” dari input. Jadi, berbeda dengan model seperti BERT, di mana positional encodings dipelajari dari awal secara internal sebagai parameter model, Time Series Transformer memerlukan penyediaan fitur tambahan.
Autoformer hanya mempelajari embedding tambahan untuk
static_categorical_features. - future_observed_mask (
torch.BoolTensordengan bentuk(batch_size, sequence_length)atau(batch_size, sequence_length, input_size), opsional) — Mask boolean untuk menunjukkan nilaifuture_valuesyang diamati dan nilai yang hilang. Nilai mask dipilih dalam [0, 1]: 1 untuk nilai yang diamati, 0 untuk nilai yang hilang (yaitu NaN yang diganti dengan nol). Mask ini digunakan untuk menyaring nilai yang hilang untuk perhitungan loss akhir.[0, 1]:- 1 untuk nilai yang diamati,
- 0 untuk nilai yang hilang (yaitu NaN yang diganti dengan nol).
Mask ini digunakan untuk menyaring nilai yang hilang untuk perhitungan loss akhir.
- decoder_attention_mask (
torch.LongTensordengan bentuk(batch_size, target_sequence_length), opsional) — Mask untuk menghindari pelaksanaan attention pada indeks token tertentu. Secara default, mask kausal akan digunakan, untuk memastikan model hanya dapat melihat input sebelumnya guna memprediksi masa depan. - encoder_outputs (
tuple(tuple(torch.Tensor), opsional) — Tuple terdiri darilast_hidden_state,hidden_states(opsional) danattentions(opsional)last_hidden_statedengan bentuk(batch_size, sequence_length, hidden_size)(opsional) adalah rangkaian hidden-states pada keluaran lapisan terakhir encoder. Digunakan dalam cross-attention decoder. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
Seq2SeqTSPredictionOutput atau tuple(torch.Tensor)
A Seq2SeqTSPredictionOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (AutoformerConfig) dan input.
Metode forward dari AutoformerForPrediction menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan ketikafuture_valuesdisediakan) — Loss distribusi.params (
torch.Tensordengan bentuk(batch_size, num_samples, num_params)) — Parameter dari distribusi yang dipilih.past_key_values (
EncoderDecoderCache, opsional, dikembalikan ketikause_cache=Truediteruskan atau ketikaconfig.use_cache=True) — Ini adalah instance EncoderDecoderCache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Mengandung hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.decoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari decoder pada output setiap layer ditambah output embedding awal.
decoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
cross_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari lapisan cross-attention decoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.
encoder_last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari encoder model.encoder_hidden_states (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_hidden_states=Truedilewatkan atau ketikaconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states dari encoder pada output setiap layer ditambah output embedding awal.
encoder_attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap lapisan) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian dari encoder, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.
loc (
torch.Tensordengan bentuk(batch_size,)atau(batch_size, input_size), opsional) — Menggeser nilai dari context window setiap time series, yang digunakan untuk memberikan input dengan magnitudo yang sama kepada model, kemudian digunakan untuk menggeser kembali ke magnitudo aslinya.scale (
torch.Tensordengan bentuk(batch_size,)atau(batch_size, input_size), opsional) — Nilai penskalaan untuk jendela konteks dari setiap deret waktu, yang digunakan untuk memberikan input dengan magnitudo yang sama kepada model, kemudian digunakan untuk melakukan penskalaan kembali ke magnitudo aslinya.static_features (
torch.Tensordengan bentuk(batch_size, feature size), opsional) — Fitur statis dari masing-masing deret waktu dalam batch yang disalin ke kovariat pada saat inferensi.
Contoh:
>>> from huggingface_hub import hf_hub_download
>>> import torch
>>> from transformers import AutoformerForPrediction
>>> file = hf_hub_download(
... repo_id="hf-internal-testing/tourism-monthly-batch", filename="train-batch.pt", repo_type="dataset"
... )
>>> batch = torch.load(file)
>>> model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly")
>>> # during training, one provides both past and future values
>>> # as well as possible additional features
>>> outputs = model(
... past_values=batch["past_values"],
... past_time_features=batch["past_time_features"],
... past_observed_mask=batch["past_observed_mask"],
... static_categorical_features=batch["static_categorical_features"],
... future_values=batch["future_values"],
... future_time_features=batch["future_time_features"],
... )
>>> loss = outputs.loss
>>> loss.backward()
>>> # during inference, one only provides past values
>>> # as well as possible additional features
>>> # the model autoregressively generates future values
>>> outputs = model.generate(
... past_values=batch["past_values"],
... past_time_features=batch["past_time_features"],
... past_observed_mask=batch["past_observed_mask"],
... static_categorical_features=batch["static_categorical_features"],
... future_time_features=batch["future_time_features"],
... )
>>> mean_prediction = outputs.sequences.mean(dim=1)AutoformerForPrediction juga dapat menggunakan static_real_features. Untuk melakukannya, atur num_static_real_features di AutoformerConfig berdasarkan jumlah fitur tersebut dalam dataset (dalam kasus dataset tourism_monthly itu
sama dengan 1), inisialisasi model dan panggil seperti yang ditunjukkan di bawah:
>>> from huggingface_hub import hf_hub_download >>> import torch >>> from transformers import AutoformerConfig, AutoformerForPrediction >>> file = hf_hub_download( ... repo_id="hf-internal-testing/tourism-monthly-batch", filename="train-batch.pt", repo_type="dataset" ... ) >>> batch = torch.load(file) >>> # check number of static real features >>> num_static_real_features = batch["static_real_features"].shape[-1] >>> # load configuration of pretrained model and override num_static_real_features >>> configuration = AutoformerConfig.from_pretrained( ... "huggingface/autoformer-tourism-monthly", ... num_static_real_features=num_static_real_features, ... ) >>> # we also need to update feature_size as it is not recalculated >>> configuration.feature_size += num_static_real_features >>> model = AutoformerForPrediction(configuration) >>> outputs = model( ... past_values=batch["past_values"], ... past_time_features=batch["past_time_features"], ... past_observed_mask=batch["past_observed_mask"], ... static_categorical_features=batch["static_categorical_features"], ... static_real_features=batch["static_real_features"], ... future_values=batch["future_values"], ... future_time_features=batch["future_time_features"], ... )