{"id":"28b62312-89f4-479b-a651-fc0c4b688efe","slug":"customize","kind":"skill","name":"customize","summary":"Interactive guided deployment flow for Azure OpenAI models with full customization control. Step-by-step selection of model version, SKU (GlobalStandard/Standard/ProvisionedManaged), capacity, RAI pol","owner":"microsoft","repoUrl":"https://github.com/microsoft/azure-skills/tree/HEAD/skills/microsoft-foundry/models/deploy-model/customize","license":"MIT","licenseTier":"permissive","trust":"official","stars":1566,"match":null,"fewStars":false,"format":"skill","createdAt":null,"addedAt":"2026-10-14T05:57:41.208Z","logoUrl":"https://avatars.githubusercontent.com/u/6154722?v=4","linkOnly":false,"collection":{"name":"azure-skills","repo":"microsoft/azure-skills"},"skillPath":"skills/microsoft-foundry/models/deploy-model/customize","categories":["cloud-infra"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T05:57:41.206Z","sample":false,"url":"https://conduits.dev/tools/customize","language":"Shell","transports":[],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"> Interactive guided deployment flow for Azure OpenAI models with full customization control. Step-by-step selection of model version, SKU (GlobalStandard/Standard/ProvisionedManaged), capacity, RAI policy (content filter), and advanced options (dynamic quota, priority processing, spillover). USE FOR: custom deployment, customize model deployment, choose version, select SKU, set capacity, configure content filter, RAI policy, deployment options, detailed deployment, advanced deployment, PTU deployment, provisioned throughput. DO NOT USE FOR: quick deployment to optimal region (use preset).\n\n# Customize Model Deployment\n\nInteractive guided workflow for deploying Azure OpenAI models with full customization control over version, SKU, capacity, content filtering, and advanced options.\n\n## Quick Reference\n\n| Property | Description |\n|----------|-------------|\n| **Flow** | Interactive step-by-step guided deployment |\n| **Customization** | Version, SKU, Capacity, RAI Policy, Advanced Options |\n| **SKU Support** | GlobalStandard, Standard, ProvisionedManaged, DataZoneStandard |\n| **Best For** | Precise control over deployment configuration |\n| **Authentication** | Azure CLI (`az login`) |\n| **Tools** | Azure CLI, MCP tools (optional) |\n\n## When to Use This Skill\n\nUse this skill when you need **precise control** over deployment configuration:\n\n- ✅ **Choose specific model version** (not just latest)\n- ✅ **Select deployment SKU** (GlobalStandard vs Standard vs PTU)\n- ✅ **Set exact capacity** within available range\n- ✅ **Configure content filtering** (RAI policy selection)\n- ✅ **Enable advanced features** (dynamic quota, priority processing, spillover)\n- ✅ **PTU deployments** (Provisioned Throughput Units)\n\n**Alternative:** Use `preset` for quick deployment to the best available region with automatic configuration.\n\n### Comparison: customize vs preset\n\n| Feature | customize | preset |\n|---------|---------------------|----------------------------|\n| **Focus** | Full customization control | Optimal region selection |\n| **Version Selection** | User chooses from available | Uses latest automatically |\n| **SKU Selection** | User chooses (GlobalStandard/Standard/PTU) | GlobalStandard only |\n| **Capacity** | User specifies exact value | Auto-calculated (50% of available) |\n| **RAI Policy** | User selects from options | Default policy only |\n| **Region** | Current region first, falls back to all regions if no capacity | Checks capacity across all regions upfront |\n| **Use Case** | Precise deployment requirements | Quick deployment to best region |\n\n## Prerequisites\n\n- Azure subscription with Cognitive Services Contributor or Owner role\n- Microsoft Foundry project resource ID (format: `/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{account}/projects/{project}`)\n- Azure CLI installed and authenticated (`az login`)\n- Optional: Set `PROJECT_RESOURCE_ID` environment variable\n\n## Workflow Overview\n\n### Complete Flow (14 Phases)\n\n```\n1. Verify Authentication\n2. Get Project Resource ID\n3. Verify Project Exists\n4. Get Model Name (if not provided)\n5. List Model Versions → User Selects\n6. List SKUs for Version → User Selects\n7. Get Capacity Range → User Configures\n   7b. If no capacity: Cross-Region Fallback → Query all regions → User selects region/project\n8. List RAI Policies → User Selects\n9. Configure Advanced Options (if applicable)\n10. Configure Version Upgrade Policy\n11. Generate Deployment Name\n12. Review Configuration\n13. Execute Deployment & Monitor\n```\n\n### Fast Path (Defaults)\n\nIf user accepts all defaults (latest version, GlobalStandard SKU, recommended capacity, default RAI policy, standard upgrade policy), deployment completes in ~5 interactions.\n\n---\n\n## Phase Summaries\n\n> ⚠️ **MUST READ:** Before executing any phase, load [references/customize-workflow.md](references/customize-workflow.md) for the full scripts and implementation details. The summaries below describe *what* each phase does — the reference file contains the *how* (CLI commands, quota patterns, capacity formulas, cross-region fallback logic).\n\n| Phase | Action | Key Details |\n|-------|--------|-------------|\n| **1. Verify Auth** | Check `az account show`; prompt `az login` if needed | Verify correct subscription is active |\n| **2. Get Project ID** | Read `PROJECT_RESOURCE_ID` env var or prompt user | ARM resource ID format required |\n| **3. Verify Project** | Parse resource ID, call `az cognitiveservices account show` | Extracts subscription, RG, account, project, region |\n| **4. Get Model** | List models via `az cognitiveservices account list-models` | User selects from available or enters custom name |\n| **5. Select Version** | Query versions for chosen model | Recommend latest; user picks from list |\n| **6. Select SKU** | Query model catalog + subscription quota, show only deployable SKUs | ⚠️ Never hardcode SKU lists — always query live data |\n| **7. Configure Capacity** | Query capacity API, validate min/max/step, user enters value | Cross-region fallback if no capacity in current region |\n| **8. Select RAI Policy** | Present content filter options | Default: `Microsoft.DefaultV2` |\n| **9. Advanced Options** | Dynamic quota (GlobalStandard), priority processing (PTU), spillover | SKU-dependent availability |\n| **10. Upgrade Policy** | Choose: OnceNewDefaultVersionAvailable / OnceCurrentVersionExpired / NoAutoUpgrade | Default: auto-upgrade on new default |\n| **11. Deployment Name** | Auto-generate unique name, allow custom override | Validates format: `^[\\w.-]{2,64}$` |\n| **12. Review** | Display full config summary, confirm before proceeding | User approves or cancels |\n| **13. Deploy & Monitor** | `az cognitiveservices account deployment create`, poll status | Timeout after 5 min; show endpoint + portal link |\n\n\n---\n\n## Error Handling\n\n### Common Issues and Resolutions\n\n| Error | Cause | Resolution |\n|-------|-------|------------|\n| **Model not found** | Invalid model name | List available models with `az cognitiveservices account list-models` |\n| **Version not available** | Version not supported for SKU | Select different version or SKU |\n| **Insufficient quota** | Capacity > available quota | Skill auto-searches all regions; fails only if no region has quota |\n| **SKU not supported** | SKU not available in region | Cross-region fallback searches other regions automatically |\n| **Capacity out of range** | Invalid capacity value | **PREVENTED**: Skill validates min/max/step at input (Phase 7) |\n| **Deployment name exists** | Name conflict | Auto-incremented name generation |\n| **Authentication failed** | Not logged in | Run `az login` |\n| **Permission denied** | Insufficient permissions | Assign Cognitive Services Contributor role |\n| **Capacity query fails** | API/permissions/network error | **DEPLOYMENT BLOCKED**: Will not proceed without valid quota data |\n\n### Troubleshooting Commands\n\n```bash\n# Check deployment status\naz cognitiveservices account deployment show --name <account> --resource-group <rg> --deployment-name <name>\n\n# List all deployments\naz cognitiveservices account deployment list --name <account> --resource-group <rg> -o table\n\n# Check quota usage\naz cognitiveservices usage list --name <account> --resource-group <rg>\n\n# Delete failed deployment\naz cognitiveservices account deployment delete --name <account> --resource-group <rg> --deployment-name <name>\n```\n\n---\n\n## Selection Guides & Advanced Topics\n\n> For SKU comparison tables, PTU sizing formulas, and advanced option details, load [references/customize-guides.md](references/customize-guides.md).\n\n**SKU selection:** GlobalStandard (production/HA) → Standard (dev/test) → ProvisionedManaged (high-volume/guaranteed throughput) → DataZoneStandard (data residency).\n\n**Capacity:** TPM-based SKUs range from 1K (dev) to 100K+ (large production). PTU-based use formula: `(Input TPM × 0.001) + (Output TPM × 0.002) + (Requests/min × 0.1)`.\n\n**Advanced options:** Dynamic quota (GlobalStandard only), priority processing (PTU only, extra cost), spillover (overflow to backup deployment).\n\n---\n\n## Related Skills\n\n- **preset** - Quick deployment to best region with automatic configuration\n- **microsoft-foundry** - Parent skill for all Microsoft Foundry operations\n- **[quota](../../../quota/quota.md)** — For quota viewing, increase requests, and troubleshooting quota errors, defer to this skill instead of duplicating guidance\n- **rbac** - Manage permissions and access control\n\n---\n\n## Notes\n\n- Set `PROJECT_RESOURCE_ID` environment variable to skip prompt\n- Not all SKUs available in all regions; capacity varies by subscription/region/model\n- Custom RAI policies can be configured in Azure Portal\n- Automatic version upgrades occur during maintenance windows\n- Use Azure Monitor and Application Insights for production deployments"}