Upload your first model

Uploading a model is the first step to making it available through Norman’s managed inference API. You provide the model’s metadata, assets (such as weights), and input/output definitions — Norman handles storage, indexing, and deployment. Once uploaded, you can run it from anywhere using the Norman SDK.

Example: Uploading an Image Model

Below is a complete example of uploading a simple image reversal model. The model accepts an image file and returns a mirrored copy.

Step 1 — Define the Model Configuration

model_config = {
    "name": "image_reverser_model",
    "version_label": "beta",
    "short_description": "A simple model that mirrors images.",
    "long_description": "Demonstrates image reversal for onboarding.",
    "assets": [
        {"asset_name": "weights", "data": "./model.pt"}
    ],
    "inputs": [
        {
            "display_title": "Input Image",
            "data_encoding": "png",
            "receive_format": "File",
            "parameters": [
                {"parameter_name": "image", "data_encoding": "png"}
            ]
        }
    ],
    "outputs": [
        {
            "display_title": "Output Image",
            "data_encoding": "png",
            "receive_format": "File",
            "parameters": [
                {"parameter_name": "mirror_image", "data_encoding": "png"}
            ]
        }
    ]
}

Step 2 — Upload the Model

from norman import Norman

norman = Norman(api_key="nrm_sk_...")

model = await norman.upload_model(model_config)
print("Model uploaded successfully:", model.name)

What Happens After Upload?

  • Once the model is uploaded:

  • Norman stores your assets securely.

  • The model becomes visible in your Models Library.

  • You can invoke it immediately using:

response = await norman.invoke({
    "model_name": "image_reverser_model",
    "inputs": [
        {
            "display_title": "Input",
            "data": "/path/to/image.png"
        }
    ]
})

·

©

2026

·

©

2026