pipenetwork's picture
Add files using upload-large-folder tool
affbc49 verified
Raw
History Blame
1.48 kB
"""Text-tower adapter: wraps kimi_k3.Model for mlx-vlm."""
from typing import Any, Dict, List, Optional
import mlx.core as mx
import mlx.nn as nn
from .config import TextConfig
try:
from mlx_lm.models import kimi_k3 as _k3
except ImportError as e: # pragma: no cover
raise ImportError(
"kimi_k3 is not registered with mlx-lm. It uses mlx-lm-relative imports "
"(.base, .cache, .switch_layers) so it must live in mlx_lm/models/. Run "
"`scripts/install_model.sh` once, or copy kimi_k3.py there."
) from e
class LanguageModel(nn.Module):
def __init__(self, config: TextConfig):
super().__init__()
args = _k3.ModelArgs.from_dict(config.raw)
self.args = args
self.model = _k3.Model(args)
def __call__(
self,
inputs: mx.array,
cache: Optional[List[Any]] = None,
inputs_embeds: Optional[mx.array] = None,
**kwargs,
) -> mx.array:
return self.model(inputs, cache=cache, inputs_embeds=inputs_embeds)
@property
def layers(self):
return self.model.model.layers
def make_cache(self):
return self.model.make_cache()
def sanitize(self, weights: Dict[str, mx.array]) -> Dict[str, mx.array]:
# kimi_k3.Model.sanitize already strips `language_model.` and drops the
# vision keys; prefix the result to sit under this module.
return {f"model.{k}": v for k, v in self.model.sanitize(weights).items()}