跳到主要内容

加载模型

Model()​

explicit Model(std::string model_path);

构造即读只读元信息。可移动不可拷贝,析构自动 close();构造失败抛异常。

参数:

  • model_path — 模型文件路径(.darra 容器或明文载荷)

示例:

Darra::AI::Model model("D:/models/gear_detect.darra");
model.provider("onnx-cuda").gpu_id(0).timeout(5000);

probe()​

static AiResult<AiModelInfo> probe(const std::string& model_path);

只读探测任务 / 类别 / I-O 契约。支持 .onnx / .pt / .pth;加密容器读不到元数据,探不到的字段为空或缺席。

参数:

  • model_path — 模型文件路径

示例:

auto info = Darra::AI::Model::probe(path);
if (info) std::cout << info.content.task << "\n";

Open()​

AiResult<bool> Open(const char* password = nullptr);

配置 setter 链后打开,成功才可推理,点名 Provider 失败不降级,自动选路降级会写在 message 里。失败读结果里的错误码,不抛异常。

参数:

  • password — 打开密码,可空(nullptr / 空串 = 免密)

示例:

auto r = model.Open("密码-XXXX");
if (!r) { std::cerr << r.error_code << ": " << r.message << "\n"; }

close()​

AiResult<bool> close();

主动关闭会话/池并释放 GPU 与线程资源。重复调用无害不抛异常,同实例可再 Open()。

参数: 无。

示例:

auto r = model.close();

cancel()​

AiResult<bool> cancel();

尽力取消(best-effort),不保证已开跑的推理停下。在途推理随后以取消回执或正常结果收场,两者皆合法。

参数: 无。

示例:

std::thread t([&model] { model.cancel(); });
auto r = model.infer_file(p);
t.join();

装入类别名​

set_labels()​

AiResult<bool> set_labels(const std::vector<std::string>& labels);

注入类别名表,结果条目缺 label 时按 class_id 取本表渲染名,只改显示名。随时可调,open 后生效。

参数: labels — UTF8 类别名,顺序 = class_id;空表 = 不注入。

示例:

auto r = model.set_labels({"OK", "NG", "划伤"});

clear_labels()​

AiResult<bool> clear_labels();

清空注入表,回到模型自带类别表。空表再清一次无害,随时可调,open 后生效。

参数: 无。

示例:

model.clear_labels();

加密模型的密码​

加密模型加载时给口令凭据即可,不用再走授权/激活。

加载结果​

加载完看四态:试用(有次数或期限)、首次绑定(凭据通过绑到本机)、已绑定(不用再给凭据)、未通过(失败读结果里的错误码,不静默)。

try_activate()​

static OpenResult try_activate(const char* container_path, const char* activation_code, const char* prefer_provider_or_null = nullptr, const SessionOptions* options = nullptr);

口令凭据激活并打开,成功后拿到会话。失败读结果里的错误码,不抛异常。

参数:

  • container_path — 容器路径
  • activation_code — 口令凭据
  • prefer_provider_or_null — 指定 Provider,空 = 自动选路
  • options — SessionOptions,可空

示例:

auto r = Session::try_activate("model.darmodel", code);

模型出包​

出包接口随 AI Studio 安装包的 authoring 构建提供。 打容器:darra-sdk convert <onnx> --to darmodel --out <容器> --code <密码>。 推理:darra-sdk infer <容器> --image <图> --code <密码>。

  • encrypt_onnx(onnx_path, out_container_path) — 明文 .onnx 加密打包成 .darmodel 容器
  • issue_key(container_path, password, out_key_path, options) — 签发密码文件;activationCode = 出厂或试用密码,TrialRuns=0 永久(首次绑定后锁本机),大于 0 试用计次
  • fingerprint_perturb(onnx_path, out_onnx_path, customer_seed) — 逐客户权重扰动指纹,同一 seed 结果确定

调用顺序:fingerprint_perturb → encrypt_onnx → issue_key,扰动必须在加密前。