Source code for slicktune.types
"""Shared base abstractions for slick-tune."""
from __future__ import annotations
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from typing import Any
[docs]
@dataclass(frozen=True, kw_only=True)
class Strategy(ABC):
"""Base parameter-update strategy (how weights change).
Parameters
----------
name : str
Strategy identifier (set by subclasses, e.g. ``\"lora\"``).
"""
name: str = field(init=False)
[docs]
@abstractmethod
def apply(self, model: Any) -> Any:
"""Wrap or configure ``model`` for this strategy.
Parameters
----------
model : Any
Base causal-LM module (typically a Hugging Face model).
Returns
-------
Any
Model ready for training under this strategy.
"""
[docs]
@abstractmethod
def load_kwargs(self) -> dict[str, Any]:
"""Return kwargs for ``from_pretrained`` that this strategy requires.
Returns
-------
dict[str, Any]
Keyword arguments passed when loading the base model.
"""
[docs]
@dataclass(frozen=True, kw_only=True)
class Objective(ABC):
"""Base training objective (what the model learns).
Parameters
----------
name : str
Objective identifier (set by subclasses, e.g. ``\"sft\"``).
"""
name: str = field(init=False)
[docs]
@abstractmethod
def required_columns(self) -> list[str]:
"""Return dataset column names required by this objective.
Returns
-------
list[str]
Column names that must exist on the training dataset.
"""