Time-RCD / configuration_time_rcd.py
oliverlevn's picture
update the transformer lib cannot detect
a4b2002 verified
from transformers.configuration_utils import PretrainedConfig
from typing import Dict, Any
from transformers.configuration_utils import PretrainedConfig
from typing import Dict, Any
class TimeRCDConfig(PretrainedConfig):
"""
Configuration class for Time_RCD model.
This is the configuration class to store the configuration of a [`Time_RCD`] model. It is used to
instantiate a Time_RCD model according to the specified arguments, defining the model architecture.
Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs.
Read the documentation from [`PretrainedConfig`] for more information.
Args:
d_model (`int`, *optional*, defaults to 512):
Dimension of model hidden states.
d_proj (`int`, *optional*, defaults to 256):
Dimension of projection layer.
patch_size (`int`, *optional*, defaults to 4):
Size of time series patches.
num_layers (`int`, *optional*, defaults to 8):
Number of transformer layers.
num_heads (`int`, *optional*, defaults to 8):
Number of attention heads.
d_ff_dropout (`float`, *optional*, defaults to 0.1):
Dropout rate for feed-forward networks.
use_rope (`bool`, *optional*, defaults to True):
Whether to use Rotary Position Embedding.
activation (`str`, *optional*, defaults to "gelu"):
Activation function name.
num_features (`int`, *optional*, defaults to 1):
Number of input features in the time series.
dropout (`float`, *optional*, defaults to 0.1):
Dropout rate for the model.
max_seq_len (`int`, *optional*, defaults to 512):
Maximum sequence length.
win_size (`int`, *optional*, defaults to 5000):
Window size for inference.
batch_size (`int`, *optional*, defaults to 64):
Default batch size for inference.
"""
model_type = "time_rcd"
def __init__(
self,
d_model: int = 512,
d_proj: int = 256,
patch_size: int = 4, # Your specific configuration
num_layers: int = 8,
num_heads: int = 8,
d_ff_dropout: float = 0.1,
use_rope: bool = True,
activation: str = "gelu",
num_features: int = 1,
dropout: float = 0.1,
max_seq_len: int = 512,
win_size: int = 5000,
batch_size: int = 64,
**kwargs
):
super().__init__(**kwargs)
self.d_model = d_model
self.d_proj = d_proj
self.patch_size = patch_size
self.num_layers = num_layers
self.num_heads = num_heads
self.d_ff_dropout = d_ff_dropout
self.use_rope = use_rope
self.activation = activation
self.num_features = num_features
self.dropout = dropout
self.max_seq_len = max_seq_len
self.win_size = win_size
self.batch_size = batch_size
@classmethod
def from_pretrained_config(cls, original_config_dict: Dict[str, Any]):
"""Convert from your original configuration format."""
return cls(
d_model=original_config_dict.get("ts_config", {}).get("d_model", 512),
d_proj=original_config_dict.get("ts_config", {}).get("d_proj", 256),
patch_size=original_config_dict.get("ts_config", {}).get("patch_size", 16),
num_layers=original_config_dict.get("ts_config", {}).get("num_layers", 8),
num_heads=original_config_dict.get("ts_config", {}).get("num_heads", 8),
d_ff_dropout=original_config_dict.get("ts_config", {}).get("d_ff_dropout", 0.1),
use_rope=original_config_dict.get("ts_config", {}).get("use_rope", True),
activation=original_config_dict.get("ts_config", {}).get("activation", "gelu"),
num_features=original_config_dict.get("ts_config", {}).get("num_features", 1),
dropout=original_config_dict.get("dropout", 0.1),
max_seq_len=original_config_dict.get("max_seq_len", 512),
win_size=original_config_dict.get("win_size", 5000),
batch_size=original_config_dict.get("batch_size", 64),
)
# Backward compatibility alias
AnomalyCLIPConfig = TimeRCDConfig
# Register config with AutoConfig when using trust_remote_code
try:
from transformers import AutoConfig
AutoConfig.register("time_rcd", TimeRCDConfig)
except Exception:
pass # Silently fail if already registered or in restricted environment