Caleta Private AI Appliance / Known issues

Known issues and sharp edges

Everything worth knowing before you hit it, with the workaround. Most of these are behaviours of the models, the GPUs or Azure rather than faults in the appliance, and we would rather you read them here than discover them at midnight.

A100 sizes: check MIG mode first

If an A100 box seems healthy but serves at CPU speeds, check MIG mode before anything else: run nvidia-smi --query-gpu=mig.mode.current --format=csv. MIG enabled means the engine silently falls back to CPU with every health signal green. This is an Ampere-only behaviour; disable MIG and reboot. The appliance cannot see this for you in every case, so it is first on this list.

Reasoning models with a small max_tokens return an empty answer

A reasoning model spends tokens thinking before it answers. If your API call sets a small max_tokens, the whole budget can go on reasoning and the answer body arrives empty with finish_reason length. That is the cap working, not a fault. Raise max_tokens or leave it unset; reasoning arrives separately in reasoning_content.

The first GPU sample after boot is slow

GPU clocks ramp. The first generation after boot can read at roughly half speed; the second is representative. If you are timing anything, discard the first sample.

Let’s Encrypt needs port 80 open to the world, and not just once

Certificate issuance and every ~60-day renewal validate from the public internet over port 80. An IP-restricted port 80 fails silently, and a certificate that issued fine breaks two months later. When exposing the chat UI, leave the CIDR restriction blank until the certificate has issued, and leave port 80 open for renewals. Port 443 can stay restricted throughout.

T4 and A10 sizes: models live on the OS disk

These sizes have a large temporary disk at /mnt that the appliance does not use for model storage, so models download to the OS disk, which has roughly 30 GB free at the default size. Pick models accordingly, or deploy with a larger OS disk. There is no supported workaround for using the temporary disk today.

AMD MI300X: no Q8_K_XL quants

A HIP bug upstream in the engine produces garbage output with Q8_K_XL quantisations on AMD. It reproduces on the current engine. The catalogue simply does not offer that combination; if you serve your own models on AMD, avoid Q8_K_XL.

RTX PRO 6000 (Blackwell): partial cards report partial memory

The quarter and half card sizes are hardware slices, and the appliance sees the slice: 24 GB visible on a quarter of a 98 GB card. Expected, not a fault. A quarter card is also slower than a full A10 with the same visible memory. This family needs a manual enable step and Secure Boot off; the full story is on the Blackwell page.

Kimi K3 and the frontier giants

The 1.3 to 1.5 TB models are new on the menu and unmeasured by us: Azure capacity for the 8x MI300X size they need is scarce enough that we ship them before we can test them, and say so rather than guess. They are expected to serve in the low tens of tokens per second, one active GPU at a time, which is how the engine splits models of this shape everywhere, not a defect. If one misbehaves, tell us; the catalogue can be corrected without a new image.

Requesting spot quota: the walkthrough

Not an issue, but the portal step people most often hit first, so it lives here with every screenshot. Moved from the setup guide to keep that page readable.

Azure spot pricing is roughly a fifth of pay-as-you-go, and it is how an extended evaluation costs very little. Spot vCPU quota is tracked separately from your normal vCPU quota, and on a new subscription it is often close to zero. It is worth sorting out before you deploy rather than during.

You will know you need it when the size picker groups sizes under "Insufficient quota - spot limit", with a Request quota link beside each one.

Azure VM size picker with sizes grouped under 'Insufficient quota - spot limit', each row offering a Request quota link
The signal that you need spot quota: sizes grouped under 'Insufficient quota - spot limit', with a Request quota link on each row.

1. Try the instant route, and expect it to fail

Click Request quota. Azure offers to raise Total Regional Low-priority vCPUs. Submit it. On most subscriptions it comes back Unsuccessful, which is normal: Microsoft gate spot increases behind a support request. Click Create a support request.

Azure New Quota Request flyout offering to raise Total Regional Low-priority vCPUs, showing usage 0 of 3
The instant route: Azure offers to raise Total Regional Low-priority vCPUs. Submit it anyway.
Azure quota request result showing 1 Unsuccessful, with a Create a support request button
On most subscriptions it comes back Unsuccessful. That is expected, not a fault. Click Create a support request.

2. Problem description

Issue type: Service and subscription limits (quotas). Choose your subscription. Quota type: Compute-VM (cores-vCPUs) subscription limit increases. Click Next.

Do not click Manage quota. You will see a panel offering a Manage quota button with the words "you don't need a support ticket". That is the same instant path that has just failed.

Azure New support request, step 1 Problem description, with issue type set to Service and subscription limits (quotas) and a Get more quota now panel offering a Manage quota button
Step 1, Problem description. Ignore the 'Get more quota now' panel and its Manage quota button, which is the instant path that has already failed.

3. Additional details

Click Enter details. Set the deployment model to Resource Manager and the request type to Increase quota / expand access region. Choose your region, and add more than one if you want them all covered by a single request.

Open the Quotas dropdown and tick Spot vCPUs, under the Spot heading. Do not confuse it with Regional vCPUs immediately below. Set the new limit; 128 is a reasonable request and is usually accepted. Save and continue.

Back on the details page, set advanced diagnostic information to No, choose Email as the contact method, and fill in your details.

Azure Quotas dropdown open, showing Spot vCPUs under a Spot heading and Regional vCPUs under a Regional heading directly below
Tick Spot vCPUs under the Spot heading. Regional vCPUs sits directly below it and is a different quota.
Azure Request details panel with deployment model Resource Manager, request type Increase quota / expand access region, a location selected, Spot vCPUs quota and a new limit of 128
Request details: Resource Manager, Increase quota, your region, Spot vCPUs, new limit 128.
Azure New support request, step 3 Additional details, showing Enter details, advanced diagnostic information set to No, support method and contact info fields
Step 3, Additional details: advanced diagnostic information No, Email as the contact method, then your contact details.

4. Review and create

Check the summary reads as your region and Spot with the limit you asked for, then click Create.

Azure New support request, step 4 Review and create, summarising Resource Manager, region and Spot with a new limit of 128
Step 4, Review and create. The summary should read as your region and Spot, with the limit you asked for.

Microsoft normally respond within about 20 minutes and the request is usually approved automatically.

If your spot request is refused

Some subscriptions are refused outright with the reason code SpotVMNotAllowedForPayGCustomer. We tested this across two regions and two request sizes and got the same refusal each time, so it is neither regional capacity nor the size of the request.

Two things appear to matter. The first is subscription type: Microsoft lists Enterprise Agreement, Pay-As-You-Go, Sponsored and CSP subscriptions as able to use spot, while free trial, Azure for Students, Dev/Test, Visual Studio subscriber and partner-benefit subscriptions cannot use it at all. The second is billing history: in our own testing, a near-dormant subscription with about a dollar of lifetime spend was refused, while an active subscription under the same owner and the same agreement type was approved without difficulty. Microsoft does not publish a threshold, so we cannot tell you how much history is enough, only that it appears to count.

In practice, an organisation with an existing Azure footprint, an Enterprise Agreement or a partner-managed subscription is unlikely to encounter this. A brand-new subscription created with a credit card may well.

Check before you deploy:

az vm list-usage --location <region> \
  --query "[?contains(localName,'Low-priority')].{Name:localName, Used:currentValue, Limit:limit}" -o table

A limit of 3 means you are gated and will need an increase.

The appliance does not require spot. Spot is a cost optimisation, not a prerequisite. If you cannot get spot quota, deploy on pay-as-you-go: the CPU and Arm entry sizes cost roughly a pound to a pound fifty an hour at full price. For GPU work, Standard_NC48ads_A100_v4 is the value pick over the larger H100 size: roughly half the cost, and the A100 family is our reference hardware.

GPU quota uses the same process, choosing the relevant GPU family instead of Spot vCPUs. It is almost always zero to begin with, so request it ahead of the day you need it.

Found something not on this list? Tell us and it will either get fixed or get written down here.