mudler/LocalAI · error · ValueError

base_model must point to a LongCat-Video checkpoint

Error message

base_model must point to a LongCat-Video checkpoint

What it means

ValueError from _load_avatar_model(): when loading the Avatar-1.5 pipeline, the 'base_model' option (or the BASE_MODEL_ID default) must classify as MODEL_KIND_BASE — i.e. point at a LongCat-Video base checkpoint that supplies the tokenizer, UMT5 text encoder, and VAE via the AVATAR_BASE_PATTERNS subfolders. If it resolves to the avatar model itself or something else, the checkpoint resolution for the base components would fetch wrong weights, so it is rejected up front.

Source

Thrown at backend/python/longcat-video/backend.py:472

            text_encoder=text_encoder,
            vae=vae,
            scheduler=scheduler,
            dit=dit,
        )
        self.pipeline.to(self.device_index)

    def _load_avatar_model(self, model):
        avatar_patterns = list(AVATAR_COMMON_PATTERNS)
        model_subfolder = (
            "base_model_int8" if self.options["use_int8"] else "base_model"
        )
        avatar_patterns.append(f"{model_subfolder}/**")
        checkpoint = self._resolve_checkpoint(model, avatar_patterns)

        base_model = self._resolve_option_path(self.options.get("base_model"))
        base_model = base_model or BASE_MODEL_ID
        if classify_model(str(base_model)) != MODEL_KIND_BASE:
            raise ValueError("base_model must point to a LongCat-Video checkpoint")
        base_checkpoint = self._resolve_checkpoint(base_model, AVATAR_BASE_PATTERNS)

        dtype = self.torch.bfloat16
        overrides = attention_overrides(self.options["attention_backend"])
        tokenizer = self.AutoTokenizer.from_pretrained(
            base_checkpoint,
            subfolder="tokenizer",
        )
        text_encoder = self.UMT5EncoderModel.from_pretrained(
            base_checkpoint,
            subfolder="text_encoder",
            torch_dtype=dtype,
            low_cpu_mem_usage=True,
        )
        vae = self.AutoencoderKLWan.from_pretrained(
            base_checkpoint,
            subfolder="vae",
            torch_dtype=dtype,

View on GitHub (pinned to 44413a9d06)

Solutions

  1. Set base_model to the LongCat-Video base checkpoint (the repo containing tokenizer/, text_encoder/, vae/ subfolders)
  2. Or omit base_model so the built-in BASE_MODEL_ID default is used
  3. Verify the path/id with classify_model-like naming: it must be the base video model, not the avatar variant

Example fix

# before
options:
  base_model: LongCat-Video/Live-LongCat-Video-Avatar-1.5

# after
options:
  base_model: LongCat-Video/Live-LongCat-Video
Defensive patterns

Strategy: validation

Validate before calling

def validate_avatar_options(options: dict) -> dict:
    base = options.get("base_model")  # None -> backend default, which is valid
    if base is not None and "avatar" in str(base).lower():
        raise ValueError("base_model must be a LongCat-Video base checkpoint, not the avatar model")
    return options

Try / catch

try:
    stub.LoadModel(opts)
except grpc.RpcError as e:
    if "base_model" in (e.details() or ""):
        opts["options"].pop("base_model", None)  # let backend use its default base
        stub.LoadModel(opts)
    else:
        raise

Prevention

When it happens

Trigger: Setting options.base_model to the avatar repo (circular: avatar needs a *base* checkpoint); pointing base_model at an unrelated HF repo or local dir; default BASE_MODEL_ID unavailable and overridden with a wrong id.

Common situations: Users set every option to the same avatar model id thinking it is a fallback; local offline setups where base_model is redirected to a local path that only contains avatar weights.

Related errors


AI-assisted analysis of mudler/LocalAI@44413a9d06 (2026-08-15). Data as JSON: /api/errors/cca0bdbd6fb9587e. Report an issue: GitHub.