Running an Azure VM on an older SKU generation, hitting quota limits, or simply looking for an alternative size? The new alternative-vm-sku command in Azure Quick Review (azqr) makes it trivial to discover compatible alternatives for any Azure VM SKU ranked by a multi-factor compatibility score.
Whether you’re modernizing workloads, responding to quota constraints, or optimizing costs, having a ranked list of compatible SKU alternatives removes the guesswork from VM size selection.
Prerequisites#
Before you begin, ensure you have:
- Latest version of azqr installed
- Basic familiarity with Azure VM SKU naming conventions
Install the Latest azqr#
bash -c "$(curl -fsSL https://raw.githubusercontent.com/azure/azqr/main/scripts/install.sh)"The alternative-vm-sku Command#
The alternative-vm-sku command searches azqr’s embedded catalog of Azure VM SKUs and returns the top N alternatives for any given SKU, sorted by compatibility score. The result is a JSON document containing the source SKU details and the ranked recommendations.
azqr alternative-vm-sku --sku <SKU-name> [--top <N>]| Flag | Short | Default | Description |
|---|---|---|---|
--sku | -s | (required) | Azure VM SKU name to find alternatives for |
--top | -n | 3 | Number of alternative SKUs to return |
How the Compatibility Score Works#
Each candidate SKU is evaluated against the target using a weighted scoring algorithm that produces a score between 0.0 and 1.0 (higher is better). Candidates scoring below 0.1 are excluded.
| Factor | Weight | Description |
|---|---|---|
| vCPU count match | 0.30 | Ratio of the smaller to the larger vCPU count |
| Memory match | 0.25 | Ratio of the smaller to the larger memory (GB) |
| Same base model series | 0.15 | Bonus when candidate shares the same SKU series, ignoring the _vN suffix (e.g. Standard_D16s) |
| Same VM family | 0.10 | Bonus when candidate belongs to the same Azure VM family |
| Version proximity | 0.05 | Full score for same/newer generation; −0.02 per generation behind, floored at 0.0 |
| GPU match | 0.15 | GPU-enabled SKUs: proportional GPU count match. Non-GPU SKUs: flat 0.10 bonus |
| Data disk match | 0.05 | Ratio of the smaller to the larger max data disk count |
| Accelerated networking | 0.05 | Full score when candidate supports accelerated networking (or target doesn’t require it) |
The total is capped at 1.0. A score of 1.0 would represent a perfect match across all dimensions.
Examples#
General-Purpose Compute Standard_D4s_v5#
azqr alternative-vm-sku --sku Standard_D4s_v5 --top 3{
"source": {
"name": "Standard_D4s_v5",
"family": "standardDSv5Family",
"vcpus": 4,
"memoryGb": 16,
"gpuCount": 0,
"maxDataDisks": 8,
"acceleratedNetworking": true
},
"alternatives": [
{
"sku": {
"name": "Standard_D4s_v6",
"family": "StandardDsv6Family",
"vcpus": 4,
"memoryGb": 16,
"gpuCount": 0,
"maxDataDisks": 12,
"acceleratedNetworking": true
},
"compatibilityScore": 0.933
},
{
"sku": {
"name": "Standard_D4s_v7",
"family": "StandardDsv7Family",
"vcpus": 4,
"memoryGb": 16,
"gpuCount": 0,
"maxDataDisks": 12,
"acceleratedNetworking": true
},
"compatibilityScore": 0.933
},
{
"sku": {
"name": "Standard_D4s_v4",
"family": "standardDSv4Family",
"vcpus": 4,
"memoryGb": 16,
"gpuCount": 0,
"maxDataDisks": 8,
"acceleratedNetworking": true
},
"compatibilityScore": 0.930
}
]
}The top recommendations for a Standard_D4s_v5 are the newer v6 and v7 siblings identical vCPUs, memory, and networking, just a newer generation. The slightly lower-scored v4 is the previous generation of the same series.
GPU Workloads Standard_NC6s_v3#
azqr alternative-vm-sku --sku Standard_NC6s_v3 --top 3{
"source": {
"name": "Standard_NC6s_v3",
"family": "standardNCSv3Family",
"vcpus": 6,
"memoryGb": 112,
"gpuCount": 1,
"maxDataDisks": 12,
"acceleratedNetworking": true
},
"alternatives": [
{
"sku": {
"name": "Standard_NV6s_v2",
"family": "standardNVSv2Family",
"vcpus": 6,
"memoryGb": 112,
"gpuCount": 1,
"maxDataDisks": 12,
"acceleratedNetworking": false
},
"compatibilityScore": 0.780
},
{
"sku": {
"name": "Standard_NC8ads_A10_v4",
"family": "StandardNCADSA10v4Family",
"vcpus": 8,
"memoryGb": 100,
"gpuCount": 1,
"maxDataDisks": 8,
"acceleratedNetworking": true
},
"compatibilityScore": 0.732
},
{
"sku": {
"name": "Standard_NV12s_v3",
"family": "standardNVSv3Family",
"vcpus": 12,
"memoryGb": 112,
"gpuCount": 1,
"maxDataDisks": 12,
"acceleratedNetworking": true
},
"compatibilityScore": 0.700
}
]
}For the GPU-enabled Standard_NC6s_v3, the algorithm correctly prioritizes GPU count as a key criterion, surfacing other single-GPU SKUs rather than general-purpose VMs.
Practical Use Cases#
- Quota exhaustion: A specific SKU family is at quota in your target region quickly find the closest alternative.
- SKU retirement: Microsoft is retiring a VM series identify the best upgrade path.
- Multi-region deployments: Not all SKUs are available in every region find a compatible alternative available in your target region.
Hope it helps!
References:
