ZETIC.MLange

Deploy Your Model

Master the ZETIC.MLange deployment pipeline, from artifact management to on-device integration.

Deployment Pipeline Overview

ZETIC.MLange offers flexible interfaces for managing your MLOps workflow. Select the tool that fits your stage of development:

Prerequisites

A one-time initial setup via the Web Dashboard is required before enabling CLI automation.


Artifact Management

Repository Structure

A Repository acts as the version control container for a specific model lineage. It maintains distinct versions of your artifacts.

username/my-model-repository
├── v1 (uploaded 2024-01-15)
├── v2 (uploaded 2024-02-20) ← default
└── v3 (uploaded 2024-03-10) ← latest

Versioning Policy:

  • Implicit Latest: Clients automatically pull the most recent upload unless pinned.
  • Default Pinning: Administrators can designate a specific stable version as default for production channels.
  • Immutable History: All uploaded versions are preserved for rollback capabilities.

Model Identifier

Reference models programmatically using the key format: username/repository_name.

// NPU-Accelerated Model Loader
val model = ZeticMLangeModel(
    context, 
    BuildConfig.PERSONAL_KEY, 
    "USERID/REPOSITORY_NAME" // Automatically resolves to 'default' or 'latest'
)
// NPU-Accelerated Model Loader
let model = try ZeticMLangeModel(
    personalKey: personalKey,
    name: "USERID/REPOSITORY_NAME" // Automatically resolves to 'default' or 'latest'
)
// NPU-Accelerated Model Loader
const model = await ZeticMLange.load(
  personalKey,
  "USERID/REPOSITORY_NAME"
);

Deployment Status at MLange Dashboard

Monitor the compilation and optimization status of your artifacts:

StatePhase DescriptionRuntime Viability
N/ARepository initialized; awaiting binary upload.
FailedValidation or compilation error (e.g., ONNX Opset mismatch).
ConvertingActive graph lowering and quantization in progress.
OptimizingFunctional binary available; throughput tuning active.✅ Sub-optimal performance
ReadyFully compiled, tuned, and validated for production.✅ Production

Optimization Latency

Models in the Optimizing state are executable but may not yet utilize the full NPU throughput. Stick to Ready artifacts for performance benchmarking.


Security & Authentication

Personal Key Management

The Personal Key is your persistent credential for SDK authentication and API access. Treat it as a high-value secret.

Provision Credential

Copy Personal Key

  1. Access SettingsPersonal Key in the Dashboard.
  2. Select Generate New Key.
  3. Copy Immediately: The key is displayed only once.

Save the key securely

Store this string in a password manager immediately. It cannot be retrieved later.

Environment Configuration

Inject the key into your build system securely. Do not hardcode keys in source files.

1. Local Properties
Add to local.properties (ensure this file is in .gitignore):

MLANGE_PERSONAL_KEY=sk_live_...

2. Gradle Injection
Expose as a BuildConfig field in app/build.gradle.kts:

android {
    defaultConfig {
        val properties = Properties()
        if (project.rootProject.file("local.properties").exists()) {
            properties.load(project.rootProject.file("local.properties").inputStream())
        }
        
        buildConfigField(
            "String",
            "PERSONAL_KEY",
            "\"${properties.getProperty("MLANGE_PERSONAL_KEY", "")}\""
        )
    }
}

1. Configuration File
Create Config.xcconfig and add to .gitignore:

MLANGE_PERSONAL_KEY = sk_live_...

2. Info.plist Interpretation
Map the variable in Info.plist:

<key>MLangePersonalKey</key>
<string>$(MLANGE_PERSONAL_KEY)</string>

SDK Initialization

Instantiate the model container using the injected credential.

val model = ZeticMLangeModel(
    context,
    BuildConfig.PERSONAL_KEY, // Injected at build time
    "USERID/REPOSITORY_NAME"
)
// Robust retrieval from Bundle
guard let personalKey = Bundle.main.object(forInfoDictionaryKey: "MLangePersonalKey") as? String else {
    fatalError("MLangePersonalKey missing in Info.plist")
}

let model = try ZeticMLangeModel(
    personalKey: personalKey,
    name: "USERID/REPOSITORY_NAME"
)

Security best practices

  • Never commit local.properties (Android) or .xcconfig (iOS) files to version control
  • Add them to .gitignore immediately:
    # Android
    local.properties
    
    # iOS
    Config.xcconfig
    *.xcconfig
  • Rotate keys regularly
  • Revoke compromised keys immediately in the Web Dashboard