File size: 1,189 Bytes
07cb7d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
部署模型加载工具。

这里只负责从已导出的 `.keras` 模型文件恢复推理模型,并按调用方提供的加载函数返回项目内部模型产物。
训练检查点恢复由各 Pipeline 自己负责。
"""

from collections.abc import Callable

from .checkpoint import describe_checkpoint_lookup, resolve_checkpoint
from deep_learning.models.spec import ModelArtifact


def load_inference_artifact(
    checkpoint_rule: dict,
    load_inference_artifact_fn: Callable,
    resource_factory: Callable = lambda: None
) -> tuple[ModelArtifact, object]:
    checkpoint_path, _ = resolve_checkpoint(**checkpoint_rule)
    if checkpoint_path is None:
        lookup_info = describe_checkpoint_lookup(
            dirs=checkpoint_rule.get("dirs"),
            path=checkpoint_rule.get("path"),
            suffix=checkpoint_rule.get("suffix")
        )
        raise FileNotFoundError(f"未找到任何部署模型文件。查找信息: {lookup_info}")
    if checkpoint_path.suffix.lower() != ".keras":
        raise ValueError(f"部署推理只支持完整 .keras 模型: {checkpoint_path}")

    return load_inference_artifact_fn(checkpoint_path), resource_factory()