mica-ai-common

mica-ai 公共模块,提供统一接口、工具类和异常定义,被所有核心模块依赖。

零业务逻辑,纯基础设施层。所有模块通过它共享一致的基础能力。


1. 环境要求

组件版本说明
JDK8+推荐 Azul Zulu 8 / Temurin 8 / Oracle 8
Maven3.6+编译 / 打包
ONNX Runtime1.18.0通过 Maven 自动拉取

2. 核心组件

组件说明
统一异常MicaAiException / ErrorCode所有模块异常均继承 MicaAiException,便于统一处理
ONNX 会话持有者OnnxModelSession单模型 OrtSession 持有者,支持 classpath: 前缀资源解析
ONNX 会话工厂OrtSessionFactoryOrtSessionOptions → 原生 OrtSession.SessionOptions 的映射
ONNX 配置OrtSessionOptions / OrtDevice / OrtExecutionMode / OrtGraphOptimizationLevel跨能力共享的会话基础配置(线程数 / 优化级别 / 设备 等)
ONNX ProviderOrtProvidersONNX Runtime 执行提供者(Execution Provider)自动选择与注册

ONNX Provider 管理

OrtProviders 提供两个静态方法,由 OrtSessionFactorydevice = GPU 时调用:

java
import ai.onnxruntime.OrtSession;
import net.dreamlu.mica.ai.common.onnx.OrtProviders;

// 解析当前运行时可用的 provider 名称;preferCpu=true 强制 CPU
// false 时按 CoreML (macOS) > CUDA > CPU 自动选择
String[] providers = OrtProviders.resolve(false);

// 把解析到的首个 provider 注册到 SessionOptions
// 仅 CUDA / CoreML 会真正注册;注册失败仅 warn,自动回退 CPU
OrtSession.SessionOptions opts = new OrtSession.SessionOptions();
OrtProviders.apply(providers, opts, /* deviceId = */ 0);

通常业务代码不需要直接调用 OrtProviders,只需要在 OrtSessionOptions.builder().device(OrtDevice.GPU) 启用 GPU,工厂会自动按上述流程解析并注册。


3. 使用

作为本项目的内部模块直接依赖即可,坐标由根 POM 统一管理:

xml
<dependency>
    <groupId>net.dreamlu</groupId>
    <artifactId>mica-ai-common</artifactId>
</dependency>