Bỏ qua để đến nội dung

Chuẩn bị mô hình với modelctl

Runtime Xisom thực thi mô hình ở định dạng ONNX. modelctl là một công cụ dòng lệnh bạn chạy trên máy trạm của lập trình viên — không phải trên box — để biến một mô hình PyTorch hoặc TensorFlow đã huấn luyện thành một bundle ONNX đã được xác thực, tùy chọn lượng tử hóa, kèm checksum, để mang lên thiết bị biên air-gapped.

Nó bổ sung cho cài đặt bundle ngoại tuyến: quy trình đó cài đặt sản phẩm; còn modelctl tạo ra các artifact theo từng mô hình mà bạn triển khai sau đó.

flowchart LR
  subgraph WS["Máy trạm lập trình viên — modelctl"]
    direction LR
    SRC["Mô hình đã huấn luyện<br/>PyTorch .pt / TF SavedModel"] --> CV["convert<br/>→ ONNX"]
    CV --> VL["validate<br/>schema · opset · runtime · suy luận"]
    VL --> QZ["quantize<br/>INT8 động (tùy chọn)"]
    QZ --> PK["package<br/>bundle kèm checksum"]
  end
  PK -->|"sao chép bundle (USB / ngoại tuyến)"| BOX["Edge box<br/>tải lên + kích hoạt"]

modelctl yêu cầu Python 3.11+. Các framework ML nặng là tùy chọn — bản cài đặt lõi chạy validate, quantizepackage mà không cần PyTorch hay TensorFlow. Bạn chỉ cần các extra để chuyển đổi từ những framework đó.

Terminal window
pip install modelctl

Chuyển đổi từ PyTorch/TensorFlow chưa khả dụng cho đến khi bạn thêm một extra bên dưới.

  1. Đầu vào PyTorch là một TorchScript .pt (torch.jit.save) — tự chứa, nên máy chuyển đổi không cần lớp mô hình. Đầu vào TensorFlow là một thư mục SavedModel.

    Terminal window
    modelctl convert --source model.pt --format pytorch --output model.onnx \
    --input-shape 1,3,224,224 --opset 18
  2. Xác thực kiểm tra schema ONNX, opset so với ONNX Runtime biên, hợp đồng input của biên (một input · float32 · rank), tải runtime, và một suy luận thử. Ghim phiên bản ORT của thiết bị để một mô hình quá mới bị bắt trước khi đến được box air-gapped.

    Terminal window
    modelctl validate --model model.onnx --target-ort 1.18
    # ✓ ONNX schema valid
    # ✓ Opset supported
    # ✓ Single input tensor
    # ✓ Input dtype float32
    # ✓ Input rank
    # ✓ ONNX Runtime load successful
    # ✓ Test inference successful
  3. Terminal window
    modelctl package --model model.onnx --name pump-anomaly-v1

    Lệnh này tạo ra một thư mục di động:

    pump-anomaly-v1/
    ├── model.onnx
    ├── metadata.json # tên, phiên bản, framework, opset, cờ lượng tử hóa
    ├── input_schema.json # tên / shape / dtype của tensor đầu vào
    ├── checksums.sha256 # SHA256 của model + metadata + schema
    └── README.md

    Sao chép thư mục sang box, rồi kiểm tra tính toàn vẹn trên thiết bị:

    Terminal window
    cd pump-anomaly-v1 && sha256sum -c checksums.sha256

modelctl có hai đòn bẩy ảnh hưởng đến cách mô hình chạy trên box:

  • Lượng tử hóa INT8 độngmodelctl quantize --model model.onnx --output model.int8.onnx (hoặc --quantize trên convert/package) tạo ra mô hình nhỏ hơn, thường tải và chạy nhanh hơn, đánh đổi một phần độ chính xác. Cần extra [quantize]. Xác thực mô hình đã lượng tử hóa và xác nhận chất lượng dự đoán trước khi đưa vào sử dụng.
  • Nhắm opset--target-ort xác thực opset của mô hình theo đúng ONNX Runtime trên thiết bị, nên một bản export quá mới sẽ thất bại trên máy trạm thay vì ngoài hiện trường.