Implementation:Predibase Lorax Merged Adapters Validators
| Knowledge Sources | |
|---|---|
| Domains | API_Design, Validation |
| Last Updated | 2026-02-08 02:00 GMT |
Overview
Concrete tool for validating adapter merge configurations provided by Pydantic validators on the MergedAdapters and Parameters models.
Description
Validation is implemented through Pydantic field_validator and model_validator decorators on the MergedAdapters and Parameters classes. The Parameters.valid_adapter_id model validator enforces mutual exclusivity between adapter_id and merged_adapters. Field validators on MergedAdapters check IDs, weights, strategy, density, and majority sign method.
Usage
Validation runs automatically during Pydantic model construction. Invalid inputs raise ValidationError with descriptive messages.
Code Reference
Source Location
- Repository: LoRAX
- File: clients/python/lorax/types.py
- Lines: 25-58 (MergedAdapters validators), 123-131 (Parameters mutual exclusion)
Signature
class MergedAdapters(BaseModel):
@field_validator("ids")
def validate_ids(cls, v): ...
@field_validator("weights")
def validate_weights(cls, v, values): ...
@field_validator("merge_strategy")
def validate_merge_strategy(cls, v): ...
@field_validator("density")
def validate_density(cls, v): ...
@field_validator("majority_sign_method")
def validate_majority_sign_method(cls, v): ...
class Parameters(BaseModel):
@model_validator(mode="after")
def valid_adapter_id(self):
"""Enforces mutual exclusivity: adapter_id XOR merged_adapters."""
if self.adapter_id is not None and self.merged_adapters is not None:
raise ValidationError(
"you must specify at most one of `adapter_id` or `merged_adapters`"
)
return self
Import
from lorax.types import MergedAdapters, Parameters
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| MergedAdapters fields | Various | Yes | ids, weights, merge_strategy, density, majority_sign_method |
| Parameters fields | Various | Yes | adapter_id, merged_adapters (mutual exclusion) |
Outputs
| Name | Type | Description |
|---|---|---|
| Validated model | MergedAdapters/Parameters | Valid Pydantic model instance |
| ValidationError | Exception | Raised if any constraint is violated |
Usage Examples
Valid Configuration
from lorax.types import MergedAdapters, Parameters
# Valid merge configuration
merged = MergedAdapters(
ids=["adapter-A", "adapter-B"],
weights=[0.6, 0.4],
merge_strategy="ties",
density=0.8,
majority_sign_method="total",
)
params = Parameters(merged_adapters=merged, max_new_tokens=100)
# OK: no adapter_id, so no mutual exclusion violation
Invalid: Mutual Exclusion
# This raises ValidationError
params = Parameters(
adapter_id="some-adapter",
merged_adapters=MergedAdapters(ids=["a"], weights=[1.0], density=1.0),
)
# Error: "you must specify at most one of `adapter_id` or `merged_adapters`"