加密模型部署
模型交付前加密成 .darmodel,现场用激活码打开推理,明文不进车间。
- C
- C++
- C#
- Python
- Java
- Rust
#include <stdio.h>
#include "darra_model.h"
#include "darra_ai_authoring.h"
darra_encrypt_onnx("model.onnx", "model.darmodel");
darra_model* m = NULL; char* json = NULL;
darra_model_create("model.darmodel", NULL, &m); if (darra_model_open(m, "PWD-1234")) darra_model_infer_file(m, "part.jpg", &json);
if (json) printf("%s\n", json); darra_string_free(json); darra_model_close(m);
#include "darra_ai_model.hpp"
#include <cstdio>
Darra::AI::encrypt_onnx("model.onnx", "model.darmodel");
Darra::AI::Model m("model.darmodel");
if (!m.Open("PWD-1234").is_success) return 1;
auto r = m.infer_file("part.jpg");
std::printf("license=%d 条目=%zu\n", (int)m.license(), r.content.items.size());
using Darra.AI.Runtime;
Authoring.EncryptOnnx("model.onnx", "model.darmodel");
using var m = new Model("model.darmodel");
if (!m.Open("PWD-1234").IsSuccess) return;
var r = m.InferFile("part.jpg");
Console.WriteLine($"License={m.License} 条目={r.Content?.Items.Count}");
from darra_ai import Model
from darra_ai.authoring import encrypt_onnx
encrypt_onnx("model.onnx", "model.darmodel")
with Model("model.darmodel") as m:
if not m.open("PWD-1234").ok: raise SystemExit("激活码不对")
print(m.license, len(m.infer_file("part.jpg").content["results"]))
import xyz.darra.ai.*;
import xyz.darra.ai.authoring.Authoring;
Authoring.encryptOnnx("model.onnx", "model.darmodel");
Model m = new Model("model.darmodel");
if (!m.open("PWD-1234").isSuccess()) return;
System.out.println(m.getLicense() + " 条目=" + m.inferFile("part.jpg").getContent().items().size());
m.close();
use darra_ai::{authoring::encrypt_onnx, Model};
fn main() -> Result<(), darra_ai::AiError> {
encrypt_onnx("model.onnx", "model.darmodel")?;
let mut m = Model::new("model.darmodel")?;
if !m.open(Some("PWD-1234"))? { return Ok(()); }
println!("{}", m.infer_file("part.jpg", None)?.results.len());
m.close();
Ok(())
}
Open 返回成功即可推理;license 显示已绑定,后续现场免密打开。