Фундаментальные модели временных рядов продемонстрировали впечатляющие результаты в задачах прогнозирования без предварительной настройки. Однако эффективное унифицированное обучение на временных рядах остается открытой проблемой. Существующие методы используют определенный уровень специализации модели, чтобы учесть высокую гетерогенность данных временных рядов.
Moirai-MoE - модель для прогнозирования временных рядов от Salesforce AI Research, использующая один входной/выходной проекционный слой, при этом задача моделирования различных паттернов временных рядов делегируется разреженной смеси экспертов (MoE) в трансформерах.
Moirai-MoE достигает специализации, управляемой данными, и работает на уровне токенов. Для повышения эффективности обучения Moirai-MoE использует целевую функцию только декодера, что позволяет параллельно обучать модель на различных контекстных длинах.
Moirai-MoE была оценена на 39 наборах данных в сценариях прогнозирования внутри и вне распределения. Результаты подтверждают превосходство Moirai-MoE над существующими фундаментальными моделями, включая TimesFM, Chronos и Moirai.
В частности, Moirai-MoE превосходит свою аналогичную модель Moirai на 17% при том же размере модели и превосходит другие фундаментальные модели временных рядов с до 65 раз меньшим количеством активных параметров.
В открытый доступ на HF опубликованы 2 модели:
import matplotlib.pyplot as plt
from gluonts.dataset.repository import dataset_recipes
from uni2ts.eval_util.data import get_gluonts_test_dataset
from uni2ts.eval_util.plot import plot_next_multi
from uni2ts.model.moirai import MoiraiForecast, MoiraiMoEModule
SIZE = "small" # model size: choose from {'small', 'base'}
CTX = 1000 # context length: any positive integer
BSZ = 32 # batch size: any positive integer
# Load dataset
test_data, metadata = get_gluonts_test_dataset(
"electricity", prediction_length=None, regenerate=False
)
# Uncomment the below line to find other datasets
# print(sorted(dataset_recipes.keys()))
# Prepare model
model = MoiraiForecast(
module=MoiraiMoEModule.from_pretrained(
f"Salesforce/moirai-moe-1.0-R-{SIZE}",
),
mode="autoregressive",
prediction_length=metadata.prediction_length,
context_length=CTX,
patch_size=16,
num_samples=100,
target_dim=metadata.target_dim,
feat_dynamic_real_dim=metadata.feat_dynamic_real_dim,
past_feat_dynamic_real_dim=metadata.past_feat_dynamic_real_dim,
)
predictor = model.create_predictor(batch_size=BSZ)
forecasts = predictor.predict(test_data.input)
input_it = iter(test_data.input)
label_it = iter(test_data.label)
forecast_it = iter(forecasts)
# Visualize forecasts
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(25, 10))
plot_next_multi(
axes,
input_it,
label_it,
forecast_it,
context_length=200,
intervals=(0.5, 0.9),
dim=None,
name="pred",
show_label=True,
)
@ai_machinelearning_big_data
#AI #ML #Forecast #MoiraiMoE #SalesforceAI
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤8🔥7