跳到主要内容

初始化

AiSession 通过静态工厂创建,不使用 new。实现 AutoCloseable,用 try-with-resources。

打开时按 PayloadKind × 硬件 × preferProvider 选 Provider;对应包未装则内部调一次 darra_runtime_ensure(无进度回调,可能阻塞下载)。指名但不可用 = fail-closed,绝不静默降级。

Windows 无 RKNN

Windows 收到 rknn 载荷 → AiException.UnsupportedPayloadException。Windows 上指名 edge-rknnAiException.UnsupportedPlatformException。RKNN 只在 linux-arm64。

Paddle 是运行时载荷(PayloadKind=paddle)。明文入口可接 .pdmodel

本绑定没有 openPlainEx

工厂方法

AiSession.open(String containerPath, String keyPath, String password, String preferProvider)

public static AiSession open(String containerPath,
String keyPath,
String password,
String preferProvider)

打开加密容器(.darmodel,DARM1)建会话。

参数:

  • containerPath (String) — .darmodel 路径。空/null = InternalException
  • keyPath (String) — .darmkey;null = 走密码 / 试用通道
  • password (String) — 永久密码;null = 走授权文件 / 试用通道。两个通道至少给一个;都给则 key 文件优先验票
  • preferProvider (String) — 指名 Provider;null = 自动选。指名但不可用 = fail-closed,绝不静默降级

返回值:

  • AiSession — 新会话,须 close / try-with-resources

典型错误:IoNotFound / IoDenied / BadContainer / BadLicense / PasswordRequired / PasswordWrong / MachineMismatch / TrialExhausted / UnsupportedPayload / ProviderMissing / ProviderAbiMismatch / HardwareMissing / DriverTooOld / NetworkFailed / ChecksumMismatch / Cancelled(后三码来自内部 ensure)。

示例:

try (AiSession s = AiSession.open("model.darmodel", "model.darmkey", null, null)) {
System.out.println(s.metaJson());
}

AiSession.openPlain(String onnxPath, String preferProvider)

public static AiSession openPlain(String onnxPath, String preferProvider)

打开明文模型建会话。与 open 同一推理路径,只跳过容器解码与验票。

参数:

  • onnxPath (String) — 历史参数名,语义为明文模型路径。空/null = InternalException
    • .onnx 文件
    • .pdmodel 文件(同目录须有对应 .pdiparams
    • *.pdmodel + *.pdiparams 的目录
  • preferProvider (String) — 指名 Provider;null = 按载荷 × 硬件 × 已装包自动选

返回值:

  • AiSession — 新会话

.pt / .pth 仍拒 → UnsupportedPayloadException。Paddle 是运行时载荷,不走这条拒绝路径。其余(含内部 ensure、fail-closed)同 open

示例:

try (AiSession s = AiSession.openPlain("model.onnx", "onnx-cpu")) {
// …
}

try (AiSession paddle = AiSession.openPlain("model.pdmodel", null)) {
// 同目录须有 model.pdiparams
}

AiSession.openEx(String containerPath, SessionOptions options)

public static AiSession openEx(String containerPath, SessionOptions options)

打开加密容器建会话(带选项)。options 为 null 时等同 SessionOptions.empty()

当前翻译到 open(containerPath, opt.keyPath(), opt.password(), opt.preferProvider())。Core 落地 darra_session_open_ex 后只换调用点,本类型已公开字段不变。字段见 类型 · SessionOptions

C 头 darra_session_optionsintra_op_threads / inter_op_threads / cpu_affinity_mask 尚未出现在本 Java 类型上,本方法不会把它们传给 native。

参数:

  • containerPath (String) — .darmodel 路径(必填)
  • options (SessionOptions) — 可选通道;null = 全空

返回值:

  • AiSession — 新会话

示例:

SessionOptions opt = SessionOptions.empty()
.keyPath("model.darmkey")
.preferProvider(null);
try (AiSession s = AiSession.openEx("model.darmodel", opt)) {
// …
}