跳到主要内容

初始化

推荐方式

生产环境用 AI Studio 导出的 .darmodel + .darmkey 调用 AiSession.Open。明文 .onnx / .pdmodelOpenPlain,同一推理路径,只跳过容器解码与验票。

打开

AiSession.Open()

public static AiSession Open(
string containerPath,
string? keyPath = null,
string? password = null,
string? preferProvider = null)

打开加密容器(.darmodel,DARM1)建会话。等价于 OpenEx(..., options: null)

参数:

  • containerPath (string) — .darmodel 路径(必填)
  • keyPath (string?) — .darmkey 授权文件;null = 走密码 / 试用通道
  • password (string?) — 永久密码;null = 走授权文件 / 试用通道
  • preferProvider (string?) — 指名 Provider;null = 按载荷 × 硬件 × 已装包自动选

返回值:

  • AiSession — 已打开的会话
备注

keyPathpassword 至少给一个;都给则 key 文件优先验票。指名 Provider 不可用(无硬件 / 驱动过旧 / 平台不支持)= fail-closed,绝不静默降级。对应包未装则内部调一次 AiRuntime.Ensure(无进度回调)。Windows 收到 rknn 载荷抛 AiUnsupportedPayloadException;在 Windows 上指名 edge-rknnAiUnsupportedPlatformException

示例:

using var session = AiSession.Open("model.darmodel", keyPath: "model.darmkey");

AiSession.OpenPlain()

public static AiSession OpenPlain(string onnxPath, string? preferProvider = null)

打开明文模型建会话。与 Open 同一推理路径,只跳过容器解码与验票。等价于 OpenPlainEx(..., options: null)

参数:

  • onnxPath (string) — 明文模型路径:.onnx.pdmodel(同目录须有对应 .pdiparams);或含 *.pdmodel + *.pdiparams 的目录
  • preferProvider (string?) — 指名 Provider;null = 自动选

返回值:

  • AiSession — 已打开的会话
备注

Paddle 是运行时载荷。.pt / .pth 仍拒,抛 AiUnsupportedPayloadException

示例:

using var session = AiSession.OpenPlain("model.onnx");

AiSession.OpenEx()

public static AiSession OpenEx(
string containerPath,
string? keyPath = null,
string? password = null,
string? preferProvider = null,
SessionOptions? options = null)

打开加密容器并传入 SessionOptions(线程数 / CPU 亲和)。optionsnull = 等同 Open

参数:

  • containerPath (string) — .darmodel 路径(必填)
  • keyPath (string?) — .darmkey 授权文件
  • password (string?) — 永久密码
  • preferProvider (string?) — 指名 Provider
  • options (SessionOptions?) — 会话选项;null = 自动线程、不设亲和

返回值:

  • AiSession — 已打开的会话
备注

SessionOptions 只约束本会话推理线程池。禁止改 Windows ReservedCpuSets,禁止动 PLC 隔离核。native 缺 darra_session_open_ex 符号时抛 AiLoadException

示例:

using var session = AiSession.OpenEx(
"model.darmodel",
keyPath: "model.darmkey",
options: new SessionOptions { IntraOpThreads = 2, InterOpThreads = 1 });

AiSession.OpenPlainEx()

public static AiSession OpenPlainEx(
string onnxPath,
string? preferProvider = null,
SessionOptions? options = null)

打开明文模型并传入会话选项。optionsnull = 等同 OpenPlain

参数:

  • onnxPath (string) — 明文模型路径(语义同 OpenPlain
  • preferProvider (string?) — 指名 Provider
  • options (SessionOptions?) — 会话选项;null = 默认

返回值:

  • AiSession — 已打开的会话

示例:

using var session = AiSession.OpenPlainEx(
"model.pdmodel",
options: new SessionOptions { IntraOpThreads = 2 });

资源释放

Dispose()

public void Dispose()

关闭会话并释放全部资源(含解密明文窗口清零)。重复 Dispose 安全。实现 IDisposable,推荐 using

备注

Dispose / 析构禁止与任何在飞调用并发。close 后句柄失效,再用抛 ObjectDisposedException。不同会话可并发;同一会话的 InferImage 可并发,吞吐扩展推荐每线程一个会话。

示例:

using var session = AiSession.Open("model.darmodel", keyPath: "model.darmkey");