跳到主要内容

构造

打开加密容器或明文模型,得到 Session

对应包未装时内部调一次 runtime::ensure(无进度)。指名 Provider 不可用 = fail-closed。本绑定没有 open_plain_ex,也没有把 Core 的 darra_session_options(intra / inter 线程、CPU 亲和)露出来。

功能概览

类别属性类型访问说明
打开Session::openResult<Session, Error>关联函数打开 .darmodel(DARM1)。key_path 与 password 至少给一个;都给则 key 文件优先验票
Session::open_plainResult<Session, Error>关联函数打开明文模型。与 open 同一推理路径,只跳过容器解码与验票。Paddle 是运行时载荷
Session::open_exResult<Session, Error>关联函数打开 .darmodel 并传入 SessionOptions。当前翻译到 open 四参

打开

Session::open()

pub fn open(
container_path: &str,
key_path: Option<&str>,
password: Option<&str>,
prefer_provider: Option<&str>,
) -> Result<Self, Error>

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

参数:

  • container_path (&str) — .darmodel 路径(必填)
  • key_path (Option<&str>) — .darmkey 授权文件;None = 走密码 / 试用通道
  • password (Option<&str>) — 永久密码;None = 走授权文件 / 试用通道。两个通道至少给一个;都给则 key 文件优先验票
  • prefer_provider (Option<&str>) — 指名 Provider(见 ensure · 合法 ID);None = 按载荷 × 硬件 × 已装包自动选。指名但不可用 = fail-closed

返回值:

  • Result<Session, Error> — 成功得到会话;失败变体见 错误

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

示例:

use darra_ai::Session;

let session = Session::open("model.darmodel", Some("model.darmkey"), None, None)?;

密码通道:

let session = Session::open(
"model.darmodel",
None,
std::env::var("DARRA_MODEL_PASSWORD").ok().as_deref(),
None,
)?;

Session::open_plain()

pub fn open_plain(
onnx_path: &str,
prefer_provider: Option<&str>,
) -> Result<Self, Error>

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

onnx_path(历史参数名,语义为「明文模型路径」):

  • .onnx 文件
  • .pdmodel 文件(同目录须有对应 .pdiparams
  • *.pdmodel + *.pdiparams 的目录

Paddle 是运行时载荷PayloadKind = paddle)。.pt / .pth 仍拒,收到即 Error::UnsupportedPayload(先转 ONNX)。

Windows 无 RKNN:rknn 载荷在 Windows 上同样 UnsupportedPayload。本函数打开的是明文路径;rknn 通常打在 .darmodel 里,由 open 拒绝。

参数:

  • onnx_path (&str) — 明文模型路径(见上)
  • prefer_provider (Option<&str>) — 指名 Provider;None = 自动选。指名但不可用 = fail-closed

返回值:

  • Result<Session, Error> — 成功得到会话

示例:

let session = Session::open_plain("model.onnx", Some("onnx-cpu"))?;

Paddle 明文:

let session = Session::open_plain("model.pdmodel", Some("paddle-cpu"))?;

Session::open_ex()

pub fn open_ex(container_path: &str, options: &SessionOptions) -> Result<Self, Error>

打开加密容器建会话(可扩展入口)。当前翻译到 Session::open 四参SessionOptions 只有 key_path / password / prefer_provider,没有 Core 的 intra_op_threads / inter_op_threads / cpu_affinity_mask。构造 SessionOptions 不加载 native。

本绑定没有 open_plain_ex

参数:

  • container_path (&str) — .darmodel 路径
  • options (&SessionOptions) — 可选通道

返回值:

  • Result<Session, Error> — 成功得到会话

示例:

use darra_ai::{Session, SessionOptions};

let session = Session::open_ex(
"model.darmodel",
&SessionOptions::new()
.key_path("model.darmkey")
.prefer_provider("onnx-cpu"),
)?;