Implementation:Predibase Lorax Merged Adapters Type
Appearance
| Knowledge Sources | |
|---|---|
| Domains | Parameter_Efficient_Finetuning, API_Design |
| Last Updated | 2026-02-08 02:00 GMT |
Overview
Concrete tool for specifying multi-adapter merge configurations provided by the MergedAdapters Pydantic model.
Description
The MergedAdapters class is a Pydantic BaseModel that validates multi-adapter merge requests. It enforces constraints on adapter IDs (non-empty), weights (matching length), merge strategy (one of "linear", "ties", "dare_linear", "dare_ties"), density (0.0 to 1.0), and majority sign method ("total" or "frequency").
Usage
Used when constructing a merge request via Client.generate() with the merged_adapters parameter. Cannot be combined with adapter_id (mutually exclusive).
Code Reference
Source Location
- Repository: LoRAX
- File: clients/python/lorax/types.py
- Lines: 13-58
Signature
class MergedAdapters(BaseModel):
ids: List[str]
weights: List[float]
merge_strategy: Optional[str] = None
density: float
majority_sign_method: Optional[str] = None
@field_validator("ids")
def validate_ids(cls, v):
if not v:
raise ValidationError("`ids` cannot be empty")
return v
@field_validator("weights")
def validate_weights(cls, v, values):
ids = values.data["ids"]
if not v:
raise ValidationError("`weights` cannot be empty")
if len(ids) != len(v):
raise ValidationError("`ids` and `weights` must have the same length")
return v
@field_validator("merge_strategy")
def validate_merge_strategy(cls, v):
if v is not None and v not in MERGE_STRATEGIES:
raise ValidationError(f"`merge_strategy` must be one of {MERGE_STRATEGIES}")
return v
@field_validator("density")
def validate_density(cls, v):
if v < 0 or v > 1.0:
raise ValidationError("`density` must be >= 0.0 and <= 1.0")
return v
Import
from lorax.types import MergedAdapters
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| ids | List[str] | Yes | Adapter IDs to merge (cannot be empty) |
| weights | List[float] | Yes | Per-adapter blending weights (must match ids length) |
| merge_strategy | Optional[str] | No | One of: "linear", "ties", "dare_linear", "dare_ties" |
| density | float | Yes | Pruning density [0.0, 1.0] (1.0 = no pruning) |
| majority_sign_method | Optional[str] | No | One of: "total", "frequency" (for TIES/DARE_TIES) |
Outputs
| Name | Type | Description |
|---|---|---|
| merged_adapters | MergedAdapters | Validated merge configuration object |
Usage Examples
Linear Merge
from lorax import Client
from lorax.types import MergedAdapters
client = Client("http://localhost:3000")
merged = MergedAdapters(
ids=["adapter-A", "adapter-B"],
weights=[0.7, 0.3],
merge_strategy="linear",
density=1.0,
)
response = client.generate(
"Summarize this text:",
merged_adapters=merged,
max_new_tokens=100,
)
TIES Merge with Pruning
merged = MergedAdapters(
ids=["domain-adapter", "style-adapter", "safety-adapter"],
weights=[0.5, 0.3, 0.2],
merge_strategy="ties",
density=0.7,
majority_sign_method="total",
)
Related Pages
Implements Principle
Page Connections
Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment