Subchapter 25.5
references/design-refs/ai.mdMarkdown8 KBView on GitHub
Applies to: the non-OpenAI kinds of Microsoft.CognitiveServices/accounts (Azure AI
Vision, Document Intelligence, Speech, Language, Translator), Microsoft.MachineLearningServices/*
(Azure Machine Learning), and any traditional-ML workload detected in app code
(, , ). This is the / capability-routed rubric. It is the Azure port of gcp-to-aws's : the AWS
targets are identical (they do not depend on the source cloud); only the source-service
signals change.
image_analysisdocument_extractionspeech_transcriptionai_source: "other"ai.mdNot for Azure OpenAI. A
Microsoft.CognitiveServices/accountswithkind: OpenAI, or an app-code workload whoseai_sourceisazure_openai/openai/anthropic, routes to the Bedrock guides, not here — see § LLM Routing.
If the detected AI workload is LLM-based (generative text/chat), load the source-specific Bedrock guide instead of this file:
summary.ai_source == "azure_openai" or "openai" → vendored/ai/ai-openai-to-bedrock.md
(source-cloud-agnostic — its header explicitly serves Azure OpenAI, since the Bedrock target
does not depend on which endpoint served the calls).summary.ai_source == "anthropic" → vendored/ai/ai-anthropic-to-bedrock.md.summary.ai_source == "both" → both of the above.summary.ai_source == "other" or absent, OR the workload is traditional ML (Vision,
Document Intelligence, Speech, Language, Translator, custom Azure ML models) → use the
SageMaker/Rekognition/Textract/Comprehend/Transcribe/Translate/Polly rubric below.A generative ai_source does not exempt a traditional-AI workload: an azure_openai codebase
that also calls Azure AI Document Intelligence needs BOTH the OpenAI guide (for its GPT
workload) and this file (for the Document Intelligence workload). Capability is evaluated
per workload.
DetectDocumentText)
for document OCR; Rekognition DetectText for scene text in images.AnalyzeExpense for invoices/receipts, AnalyzeID for identity documents, or
AnalyzeDocument with FORMS/TABLES for general structured extraction).DetectDocumentText).StartTranscriptionJob / StartStreamTranscription).Apply in order, first match wins (the rubric selects a SERVICE; sizing is post-selection):
preferences.json → design_constraints.cost_optimization +
ai_constraints (if present). Cost-sensitive → prefer SageMaker Spot + Autopilot, and the
pay-per-call AI APIs over always-on endpoints.Post-selection, structurally parallel to the compute rubric’s ## Right-Sizing. The managed
AWS AI APIs (Rekognition, Textract, Comprehend, Transcribe, Translate, Polly) are pay-per-call
and carry no instance size — set sizing_provenance accordingly and do not invent a capacity.
A SageMaker endpoint DOES carry an instance type: size it from observed traffic when
utilization exists (sizing_provenance: measured), else state a dev-tier default
(ml.m5.large) with sizing_provenance: model_prior.
Not applicable to the managed AI APIs. A SageMaker endpoint follows the skill’s x86_64
default unless a Graviton-supported container image and a stated preference both hold.
azure_type: Microsoft.MachineLearningServices/workspaces/onlineEndpoints,
azure_config: { framework: "PyTorch", version: "2.1" } → aws_service: "SageMaker",
aws_config: { endpoint_name: "...", instance_type: "ml.m5.large", container_image: "pytorch:2.1" }, confidence: inferred, sizing_provenance: model_prior,
rationale: "Azure ML custom online endpoint → SageMaker Endpoint (PyTorch supported)".
azure_type: Microsoft.CognitiveServices/accounts (kind: ComputerVision) →
target_aws_service: "rekognition", target_bedrock_model: null, confidence: inferred,
honest_assessment: "not_applicable", rationale: "Azure AI Vision label/object detection → Rekognition DetectLabels".
kind: FormRecognizer, invoice/receipt extraction → target_aws_service: "textract",
aws_config: { api: "AnalyzeExpense" }, confidence: inferred,
honest_assessment: "not_applicable".
kind: TextAnalytics → target_aws_service: "comprehend", confidence: inferred,
honest_assessment: "not_applicable", rationale: "Azure AI Language sentiment + entity recognition → Amazon Comprehend". This section has no gcp analogue — it is net-new for Azure.
kind: SpeechServices, batch transcription → target_aws_service: "transcribe",
confidence: inferred, honest_assessment: "not_applicable". If the resource also does
synthesis, emit a SECOND design_block mapping the TTS capability to Polly.
Each mapped resource contributes a design_blocks[] row (see
references/shared/schema-design-aws-ai.md). Traditional-AI workloads set
target_aws_service (one of textract, rekognition, comprehend, transcribe,
translate, polly, sagemaker), leave target_bedrock_model: null, and carry
honest_assessment: "not_applicable" — they are feature/service swaps, not Bedrock model
migrations. Confidence is inferred (or measured when utilization backed a SageMaker size).
azure_id / azure_type / azure_config carry the source facts.