llm-catalog-archive

Change

297e09c

297e09cba67b61466c7a01eadfeb499c612b9288 · commit on GitHub

aws-blog-feed: changed (538956 bytes, HTTP 200)

raw/aws-blog-feed/response.xml modified

Lines added
+845
Lines removed
-558
Stored bytes at this commit
538,956
Timestamp
observed
Raw artifact at this commit
raw/aws-blog-feed/response.xml
Recorded headers
observed_at2026-10-13T06:47:22.899Z
origin_datenull
status200
final URLhttps://aws.amazon.com/blogs/machine-learning/feed/
etagnull
last-modifiedMon, 12 Oct 2026 19:06:06 GMT
dateTue, 13 Oct 2026 06:47:22 GMT
agenull
cache-controlnull
cf-cache-statusnull
content-encodingnull
content-lengthnull
@@@ -5,7 +5,7 @@
<atom:link href="https://aws.amazon.com/blogs/machine-learning/feed/" rel="self" type="application/rss+xml"/>
<link>https://aws.amazon.com/blogs/machine-learning/</link>
<description>Official Machine Learning Blog of Amazon Web Services</description>
- <lastBuildDate>Fri, 09 Oct 2026 15:38:39 +0000</lastBuildDate>
+ <lastBuildDate>Mon, 12 Oct 2026 17:52:22 +0000</lastBuildDate>
<language>en-US</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
@@@ -13,6 +13,849 @@
1 </sy:updateFrequency>
<item>
+ <title>Accessing OpenAI GPT models on Amazon Bedrock with global cross-Region inference in Thailand, Malaysia, Singapore, Indonesia, and Taiwan</title>
+ <link>https://aws.amazon.com/blogs/machine-learning/accessing-openai-gpt-models-on-amazon-bedrock-with-global-cross-region-inference-in-thailand-malaysia-singapore-indonesia-and-taiwan/</link>
+
+ <dc:creator><![CDATA[Traci Lim]]></dc:creator>
+ <pubDate>Mon, 12 Oct 2026 17:52:22 +0000</pubDate>
+ <category><![CDATA[Advanced (300)]]></category>
+ <category><![CDATA[Amazon Bedrock]]></category>
+ <category><![CDATA[Technical How-to]]></category>
+ <guid isPermaLink="false">e20b8171cff84e878ab96622856dfe3f22a41ff0</guid>
+
+ <description>Learn how to run OpenAI GPT-6 Sol, Luna, and Astra on Amazon Bedrock through global cross-Region inference from Singapore, Jakarta, Thailand, Malaysia, and Taipei. This post covers the Converse and OpenAI-compatible APIs, IAM and SCP permissions, quota sizing, and monitoring infere…
+ <content:encoded>&lt;p&gt;Single-Region inference can throttle when demand exceeds local capacity. Teams in Thailand, Malaysia, Singapore, Indonesia, and Taiwan need access to the newest OpenAI models beyond that capacity. &lt;a href="https://aws.amazon.com/bedrock/" target="_blank" rel="n…
+&lt;p&gt;GPT-6 Sol, GPT-6 Luna, and GPT-6 Astra are all available through global cross-Region inference from the preceding Regions, on the &lt;code&gt;bedrock-runtime&lt;/code&gt; endpoint. See &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html" target="_bla…
+&lt;p&gt;In this post, we introduce the global cross-Region inference profiles and invoke them from Asia Pacific (Singapore) using the Converse API, the OpenAI-compatible APIs, and coding clients. We then cover the &lt;a href="https://aws.amazon.com/iam/" target="_blank" rel="noopener"&gt;AWS Identi…
+&lt;h2 id="global-cross-region-inference-profiles-for-openai-gpt-6"&gt;Global cross-Region inference profiles for OpenAI GPT-6&lt;/h2&gt;
+&lt;p&gt;The GPT-6 family offers three models, each available through global cross-Region inference.&lt;/p&gt;
+&lt;ul&gt;
+ &lt;li&gt;GPT-6 Sol brings strong reasoning and coding capabilities to complex tasks performed throughout the week.&lt;/li&gt;
+ &lt;li&gt;GPT-6 Luna makes focused, repeatable tasks practical at high volume.&lt;/li&gt;
+ &lt;li&gt;GPT-6 Astra handles complex reasoning, coding, and long-document work.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;All three accept text and image input, client-side tool use, and prompt caching. They differ on reasoning effort. GPT-6 Sol and GPT-6 Luna accept none, low, medium, high, xhigh, and max. GPT-6 Astra accepts the same levels except none. For GPT-6 Sol and GPT-6 Luna, see &lt;a href="https://a…
+&lt;p&gt;Global cross-Region inference routes requests across supported commercial AWS Regions where the model is deployed, giving you broad access to Amazon Bedrock capacity. You invoke it by passing a global cross-Region inference profile ID in place of a model ID. Your source Region is where you …
+&lt;p&gt;The following table lists the global cross-Region inference profile IDs and the source Regions covered in this post.&lt;/p&gt;
+&lt;table border="1px" width="100%" cellpadding="10px"&gt;
+ &lt;tbody&gt;
+ &lt;tr&gt;
+ &lt;td&gt;&lt;strong&gt;Global cross-Region inference profiles&lt;/strong&gt;&lt;/td&gt;
+ &lt;td&gt;&lt;strong&gt;Source Regions&lt;/strong&gt;&lt;/td&gt;
+ &lt;td&gt;&lt;strong&gt;Destination Regions&lt;/strong&gt;&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;tr&gt;
+ &lt;td&gt;
+ &lt;p&gt;global.openai.gpt-6-sol&lt;/p&gt;
+ &lt;p&gt;global.openai.gpt-6-luna&lt;/p&gt;
+ &lt;/td&gt;
+ &lt;td&gt;
+ &lt;p&gt;Asia Pacific (Singapore) ap-southeast-1&lt;/p&gt;
+ &lt;p&gt;Asia Pacific (Jakarta) ap-southeast-3&lt;/p&gt;
+ &lt;p&gt;Asia Pacific (Malaysia) ap-southeast-5&lt;/p&gt;
+ &lt;p&gt;Asia Pacific (Thailand) ap-southeast-7&lt;/p&gt;
+ &lt;p&gt;Asia Pacific (Taipei) ap-east-2&lt;/p&gt;
+ &lt;/td&gt;
+ &lt;td&gt;Supported commercial AWS Regions where the model is deployed&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;tr&gt;
+ &lt;td&gt;global.openai.gpt-6-astra&lt;/td&gt;
+ &lt;td&gt;Asia Pacific (Singapore) ap-southeast-1&lt;/td&gt;
+ &lt;td&gt;Supported commercial AWS Regions where the model is deployed&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;p&gt;Inference profile availability and Region support change as AWS adds Regions and profiles, so confirm both on the model card before you build: &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-openai-gpt-6-sol.html" target="_blank" rel="noopener"&gt;GPT-6 Sol&lt;/a…
+&lt;h2 id="getting-started-with-openai-models-on-amazon-bedrock"&gt;Getting started with OpenAI models on Amazon Bedrock&lt;/h2&gt;
+&lt;p&gt;Start with the prerequisites, then invoke any of the three profiles through the Converse API, the OpenAI-compatible APIs, or your existing coding client.&lt;/p&gt;
+&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
+&lt;ol type="1"&gt;
+ &lt;li&gt;An IAM identity with permission to invoke the profile. The IAM policy in the Security and permissions section grants only what these examples need.&lt;/li&gt;
+ &lt;li&gt;Your source Region activated. Only the Region you call from needs activating. You do not activate destination Regions, which run on Amazon Bedrock managed capacity. Singapore (&lt;code&gt;ap-southeast-1&lt;/code&gt;) is a Region that is enabled by default. Jakarta (&lt;code&gt;ap-southeas…
+ &lt;li&gt;A current AWS SDK or CLI. The OpenAI-compatible examples also require the OpenAI SDK and the Amazon Bedrock token generator. Install them with &lt;code&gt;pip install boto3 openai aws-bedrock-token-generator&lt;/code&gt;.&lt;/li&gt;
+&lt;/ol&gt;
+&lt;p&gt;The Amazon Bedrock console lists all three global cross-Region inference profiles under system-defined inference profiles. See Figure 1.&lt;/p&gt;
+&lt;div style="width: 810px" class="wp-caption alignnone"&gt;
+ &lt;a href="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-1-1.png" target="_blank" rel="noopener"&gt;&lt;img src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-1-1.png" alt="The three global Op…
+ &lt;p class="wp-caption-text"&gt;Figure 1: The three global OpenAI GPT-6 inference profiles among the system-defined profiles in the Amazon Bedrock console&lt;/p&gt;
+&lt;/div&gt;
+&lt;h3 id="invoke-gpt-6-models-through-amazon-bedrock-runtime"&gt;Invoke GPT-6 models through Amazon Bedrock Runtime&lt;/h3&gt;
+&lt;p&gt;Each model supports three access paths on this endpoint: the Amazon Bedrock Converse API, the OpenAI Responses API, and the OpenAI Chat Completions API. The OpenAI-compatible APIs are called on the &lt;code&gt;/openai/v1&lt;/code&gt; paths rather than through the AWS SDKs, and the endpoint …
+&lt;p&gt;&lt;strong&gt;Converse API.&lt;/strong&gt; This example calls GPT-6 Sol from Asia Pacific (Singapore) and logs the response. Set &lt;code&gt;BEDROCK_PROFILE_ID&lt;/code&gt; to &lt;code&gt;global.openai.gpt-6-luna&lt;/code&gt; or &lt;code&gt;global.openai.gpt-6-astra&lt;/code&gt; to switch m…
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-python"&gt;import logging
+import os
+import boto3
+
+# AWS_REGION overrides this default, so set it to your source Region or unset it.
+REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
+PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
+PROMPT = (
+ "In three bullet points, explain when a workload should use "
+ "cross-Region inference instead of calling a model in a single Region."
+)
+
+logging.basicConfig(format="%(levelname)s %(message)s")
+log = logging.getLogger("bedrock-cris")
+log.setLevel(logging.INFO)
+
+client = boto3.client("bedrock-runtime", region_name=REGION)
+
+# AccessDeniedException points at the IAM policy. ValidationException usually
+# means the model ID is not a global cross-Region inference profile.
+response = client.converse(
+ modelId=PROFILE_ID,
+ messages=[{"role": "user", "content": [{"text": PROMPT}]}],
+ inferenceConfig={"maxTokens": 1024},
+ # GPT-6 Sol and Luna accept none through max. GPT-6 Astra rejects none.
+ additionalModelRequestFields={"reasoning": {"effort": "low"}},
+)
+
+# Any effort above none can prepend a reasoningContent block, so pick the text
+# block by key rather than by position.
+text = "".join(b["text"] for b in response["output"]["message"]["content"] if "text" in b)
+
+log.info("Called %s from %s", PROFILE_ID, REGION)
+log.info("Stop reason: %s", response["stopReason"])
+log.info("Response:\n%s", text)&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;&lt;strong&gt;OpenAI Chat Completions API.&lt;/strong&gt; Point the OpenAI SDK at the Regional endpoint and pass the same profile ID.&lt;/p&gt;
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-python"&gt;import logging
+import os
+from aws_bedrock_token_generator import provide_token
+from openai import OpenAI
+
+REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
+PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
+PROMPT = "List three uses for a message queue."
+
+logging.basicConfig(format="%(levelname)s %(message)s")
+log = logging.getLogger("bedrock-cris")
+log.setLevel(logging.INFO)
+
+# provide_token mints a short-term key from your AWS credentials, valid up to 12 hours.
+client = OpenAI(
+ base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
+ api_key=provide_token(region=REGION),
+)
+
+response = client.chat.completions.create(
+ model=PROFILE_ID,
+ messages=[{"role": "user", "content": PROMPT}],
+ max_completion_tokens=256,
+)
+
+log.info("Called %s from %s", PROFILE_ID, REGION)
+log.info("Response:\n%s", response.choices[0].message.content)&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;When migrating an existing OpenAI client:&lt;/p&gt;
+&lt;ul&gt;
+ &lt;li&gt;Set the model parameter on every request, including those referencing a previous response.&lt;/li&gt;
+ &lt;li&gt;Use supported tool types: &lt;code&gt;function&lt;/code&gt;, &lt;code&gt;mcp&lt;/code&gt;, &lt;code&gt;custom&lt;/code&gt;, &lt;code&gt;namespace&lt;/code&gt;, and &lt;code&gt;tool_search&lt;/code&gt;.&lt;/li&gt;
+ &lt;li&gt;Configure the inference profile ID directly in your client rather than querying the models endpoint.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h3 id="set-up-the-chatgpt-desktop-app-and-codex-cli"&gt;Set up the ChatGPT desktop app and Codex CLI&lt;/h3&gt;
+&lt;p&gt;The ChatGPT desktop app and the Codex CLI share &lt;code&gt;~/.codex/config.toml&lt;/code&gt;, so one change covers both. Of the two built-in Amazon Bedrock providers, only &lt;code&gt;amazon-bedrock-runtime&lt;/code&gt; accepts an inference profile.&lt;/p&gt;
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-toml"&gt;model = "global.openai.gpt-6-astra"
+model_provider = "amazon-bedrock-runtime"
+[model_providers.amazon-bedrock-runtime.aws]
+region = "ap-southeast-1"&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;SigV4 signing means there is no key to rotate. Add &lt;code&gt;profile = "&amp;lt;your-profile&amp;gt;"&lt;/code&gt; for a non-default profile, and set &lt;code&gt;region&lt;/code&gt; explicitly, because the client otherwise falls back to &lt;code&gt;AWS_REGION&lt;/code&gt;. Substitute anot…
+&lt;p&gt;Codex reports a 272,000-token window for these profiles, which is its own bundled figure rather than a service limit. Raise it with &lt;code&gt;model_context_window&lt;/code&gt;. This configuration needs Codex CLI 0.148 or later.&lt;/p&gt;
+&lt;p&gt;Figure 2 shows the result in the app.&lt;/p&gt;
+&lt;div style="width: 810px" class="wp-caption alignnone"&gt;
+ &lt;a href="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-2-1.png" target="_blank" rel="noopener"&gt;&lt;img src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-2-1.png" alt="The ChatGPT desktop…
+ &lt;p class="wp-caption-text"&gt;Figure 2: The ChatGPT desktop app running GPT-6 Astra on Amazon Bedrock&lt;/p&gt;
+&lt;/div&gt;
+&lt;h2 id="security-and-permissions"&gt;Security and permissions&lt;/h2&gt;
+&lt;p&gt;Amazon Bedrock offers a range of controls over inference. Two of them matter here. AWS Identity and Access Management (IAM) policies control which roles can invoke which profiles, and service control policies (SCPs) apply organization-wide controls, including Region scope. This section cove…
+&lt;h3 id="iam-permissions-for-global-cross-region-inference"&gt;IAM permissions for global cross-Region inference&lt;/h3&gt;
+&lt;p&gt;To call any of these models through a global cross-Region inference profile, your IAM policy needs four statements:&lt;/p&gt;
+&lt;ol type="1"&gt;
+ &lt;li&gt;Access to the inference profile and the project/default resource in your source Region.&lt;/li&gt;
+ &lt;li&gt;Access to the foundation model in your source Region, scoped to the inference profile.&lt;/li&gt;
+ &lt;li&gt;The Region-agnostic Amazon Resource Name (ARN) for the foundation model, &lt;code&gt;arn:aws:bedrock:::foundation-model/openai.gpt-6-sol&lt;/code&gt;, with &lt;code&gt;aws:RequestedRegion&lt;/code&gt; set to &lt;code&gt;unspecified&lt;/code&gt; to permit cross-Region routing.&lt;/li&gt;
+ &lt;li&gt;&lt;code&gt;bedrock:CallWithBearerToken&lt;/code&gt; for API-key authentication.&lt;/li&gt;
+&lt;/ol&gt;
+&lt;p&gt;This IAM policy grants permission to invoke GPT-6 Sol through global cross-Region inference from &lt;code&gt;ap-southeast-1&lt;/code&gt;. Replace with your AWS account ID and &lt;code&gt;ap-southeast-1&lt;/code&gt; with your source Region.&lt;/p&gt;
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-json"&gt;{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Sid": "GrantGlobalCrisProfileAndProjectAccess",
+ "Effect": "Allow",
+ "Action": ["bedrock:InvokeModel"],
+ "Resource": [
+ "arn:aws:bedrock:ap-southeast-1:&amp;lt;ACCOUNT&amp;gt;:inference-profile/global.openai.gpt-6-sol",
+ "arn:aws:bedrock:ap-southeast-1:&amp;lt;ACCOUNT&amp;gt;:project/default"
+ ],
+ "Condition": {
+ "StringEquals": { "aws:RequestedRegion": "ap-southeast-1" }
+ }
+ },
+ {
+ "Sid": "GrantGlobalCrisInRegionModelAccess",
+ "Effect": "Allow",
+ "Action": ["bedrock:InvokeModel"],
+ "Resource": ["arn:aws:bedrock:ap-southeast-1::foundation-model/openai.gpt-6-sol"],
+ "Condition": {
+ "StringEquals": {
+ "aws:RequestedRegion": "ap-southeast-1",
+ "bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:&amp;lt;ACCOUNT&amp;gt;:inference-profile/global.openai.gpt-6-sol"
+ }
+ }
+ },
+ {
+ "Sid": "GrantGlobalCrisGlobalModelAccess",
+ "Effect": "Allow",
+ "Action": ["bedrock:InvokeModel"],
+ "Resource": ["arn:aws:bedrock:::foundation-model/openai.gpt-6-sol"],
+ "Condition": {
+ "StringEquals": {
+ "aws:RequestedRegion": "unspecified",
+ "bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:&amp;lt;ACCOUNT&amp;gt;:inference-profile/global.openai.gpt-6-sol"
+ }
+ }
+ },
+ {
+ "Sid": "AllowBearerTokenAuth",
+ "Effect": "Allow",
+ "Action": ["bedrock:CallWithBearerToken"],
+ "Resource": "*"
+ }
+ ]
+}&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;If you use streaming (&lt;code&gt;converse_stream&lt;/code&gt; or &lt;code&gt;stream=True&lt;/code&gt;), add &lt;code&gt;bedrock:InvokeModelWithResponseStream&lt;/code&gt; to the Action in the first three statements. Converse authorizes as &lt;code&gt;bedrock:InvokeModel&lt;/code&gt;. If yo…
+&lt;p&gt;To switch models, replace &lt;code&gt;openai.gpt-6-sol&lt;/code&gt; with &lt;code&gt;openai.gpt-6-luna&lt;/code&gt; or &lt;code&gt;openai.gpt-6-astra&lt;/code&gt; throughout. For the complete reference, see &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/global-cross-region…
+&lt;h3 id="service-control-policy-considerations-for-global-cross-region-inference"&gt;Service control policy considerations for global cross-Region inference&lt;/h3&gt;
+&lt;p&gt;A global cross-Region inference request carries no Region name. Amazon Bedrock sets &lt;code&gt;aws:RequestedRegion&lt;/code&gt; to &lt;code&gt;unspecified&lt;/code&gt;, so a Region allowlist in an SCP denies the call, and the error names only the policy type, not which policy. That is a co…
+&lt;p&gt;Rather than widening the allowlist, scope the exception. Amazon Bedrock populates the &lt;code&gt;bedrock:InferenceProfileArn&lt;/code&gt; condition key during authorization, so an SCP can allow these profiles while keeping Region controls for everything else. The following SCP does that.&l…
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-json"&gt;{
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Sid": "DenyOutsideApprovedRegionsExceptBedrockInvoke",
+ "Effect": "Deny",
+ "NotAction": [
+ "iam:*", "sts:*", "organizations:*", "account:*",
+ "route53:*", "cloudfront:*", "waf:*", "wafv2:*", "shield:*",
+ "support:*", "trustedadvisor:*", "health:*",
+ "budgets:*", "ce:*", "cur:*", "tax:*", "billing:*",
+ "bedrock:Invoke*"
+ ],
+ "Resource": "*",
+ "Condition": {
+ "StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] }
+ }
+ },
+ {
+ "Sid": "DenyBedrockInferenceOutsideApprovedRegionsUnlessCris",
+ "Effect": "Deny",
+ "Action": ["bedrock:Invoke*"],
+ "Resource": "*",
+ "Condition": {
+ "StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] },
+ "ArnNotLike": {
+ "bedrock:InferenceProfileArn": [
+ "arn:aws:bedrock:*:*:inference-profile/global.*"
+ ]
+ }
+ }
+ }
+ ]
+}&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;The first statement enforces your Region allowlist for every service except Amazon Bedrock inference. The second denies that inference outside those Regions unless it routes through a global cross-Region inference profile. For geographic profiles, add their prefix (for example &lt;code&gt;i…
+&lt;p&gt;A blunter alternative is to add &lt;code&gt;unspecified&lt;/code&gt; to your existing allowlist, which works but opens the same exception to every other service. For a ready-to-use policy file, see the &lt;a href="https://github.com/aws-samples/service-control-policy-examples/blob/main/Regi…
+&lt;h3 id="data-retention-and-abuse-detection"&gt;Data retention and abuse detection&lt;/h3&gt;
+&lt;p&gt;For automated offline abuse detection, classifier-flagged traffic is retained by AWS for up to 30 days and processed programmatically. Under cross-Region inference that retention happens in the destination Region, which for a global profile is any supported commercial AWS Region where the m…
+&lt;p&gt;If your organization has data residency requirements, take this to your risk and compliance team early. See the &lt;a href="https://aws.amazon.com/financial-services/security-compliance/compliance-center/" target="_blank" rel="noopener"&gt;AWS Financial Services Compliance Center&lt;/a&gt; …
+&lt;h2 id="quota-management"&gt;Quota management&lt;/h2&gt;
+&lt;p&gt;GPT-6 quotas on &lt;code&gt;bedrock-runtime&lt;/code&gt; are measured in tokens per minute (TPM), tracked against the source Region you call from. Input and cache-write tokens count 1:1, and each output token consumes 10 tokens of quota. For example, a request with 2,000 input tokens and 1,…
+&lt;p&gt;Amazon Bedrock reserves the full &lt;code&gt;max_tokens&lt;/code&gt; up front, so set it close to the completions you expect. One quota covers &lt;code&gt;InvokeModel&lt;/code&gt;, Converse, Responses, and Chat Completions. Review and raise it on the &lt;a href="https://console.aws.amazon.c…
+&lt;h2 id="monitoring-and-logging"&gt;Monitoring and logging&lt;/h2&gt;
+&lt;p&gt;&lt;strong&gt;Your operational surface stays in your source Region.&lt;/strong&gt; Amazon CloudWatch metrics, AWS CloudTrail events, model invocation logs, quota accounting, and billing all remain in the Region you called from. You pay that Region’s rates, not the processing Region’s.&lt;/p…
+&lt;p&gt;&lt;strong&gt;CloudTrail records where each request was processed.&lt;/strong&gt; AWS documents a global cross-Region inference profile’s destinations as its commercial Regions rather than enumerating them. &lt;code&gt;GetInferenceProfile&lt;/code&gt; returns the Region-agnostic and source-…
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-bash"&gt;aws cloudtrail lookup-events \
+ --region ap-southeast-1 \
+ --lookup-attributes AttributeKey=EventSource,AttributeValue=bedrock.amazonaws.com \
+ --start-time &amp;lt;START&amp;gt; \
+ --end-time &amp;lt;END&amp;gt; \
+ --max-results 1 \
+ --query 'Events[0].CloudTrailEvent' --output text | python3 -m json.tool&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;Set the window around a call you just made, because CloudTrail delivery lags by a few minutes. If the most recent event was a failed call, it carries an &lt;code&gt;errorCode&lt;/code&gt; and no &lt;code&gt;inferenceRegion&lt;/code&gt;. Raise &lt;code&gt;--max-results&lt;/code&gt; and pick …
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-json"&gt;{
+ "eventName": "Converse",
+ "eventSource": "bedrock.amazonaws.com",
+ "awsRegion": "ap-southeast-1",
+ "managementEvent": true,
+ "requestParameters": {
+ "modelId": "global.openai.gpt-6-sol",
+ "inferenceConfig": { "maxTokens": 1024 }
+ },
+ "additionalEventData": {
+ "inferenceRegion": "us-east-1"
+ }
+}&lt;/code&gt;&lt;/pre&gt;
+&lt;/div&gt;
+&lt;p&gt;&lt;strong&gt;Metrics and coding-agent usage stay in CloudWatch.&lt;/strong&gt; Where developers reach GPT-6 through a coding agent, CloudWatch &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/coding-agents-insights.html" target="_blank" rel="noopener"&gt;Coding Ag…
+&lt;h2 id="clean-up"&gt;Clean up&lt;/h2&gt;
+&lt;p&gt;This post adds an IAM policy and optionally an SCP statement and a logging destination. Detach or delete the IAM policy you attached, and revert the SCP entry if you added one. Delete the model invocation logging destination in &lt;a href="https://aws.amazon.com/s3/" target="_blank" rel="no…
+&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
+&lt;p&gt;This post showed how to invoke GPT-6 Sol and GPT-6 Luna from five Asia Pacific source Regions, and GPT-6 Astra from Asia Pacific (Singapore), through global cross-Region inference on &lt;code&gt;bedrock-runtime&lt;/code&gt;. Pass a global cross-Region inference profile ID as the &lt;code&gt…
+&lt;p&gt;To get started, attach the IAM policy from this post, and send a first request through &lt;code&gt;global.openai.gpt-6-sol&lt;/code&gt;. Size your tokens-per-minute quota at the 10x burndown rate, and confirm in CloudTrail that &lt;code&gt;additionalEventData.inferenceRegion&lt;/code&gt; ap…
+&lt;p&gt;For more information, see the &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html" target="_blank" rel="noopener"&gt;Amazon Bedrock User Guide&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html" target="_…
+&lt;p&gt;&amp;nbsp;&lt;/p&gt;
+&lt;p style="clear: both"&gt;&lt;/p&gt;
+&lt;hr style="width: 100%"&gt;
+&lt;h2&gt;About the authors&lt;/h2&gt;
+&lt;footer&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-3-1.jpg" alt="Traci Lim" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Traci Lim&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Traci is a Senior AI/ML Specialist Technical Account Manager at AWS based in Singapore. A machine learning engineer by trade, he works with startups and enterprises to operationalize and scale AI/ML applications in production, with a focus on GenAIOps, Agentic Ops…
+ &lt;/div&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-4-1.jpg" alt="Karan Jhaveri" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Karan Jhaveri&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Karan is a Senior Technical Account Manager at AWS based in Singapore. He works with public sector and enterprise customers to take generative AI from experimentation to production at scale. He likes to stay hands-on, getting into the details and building out solu…
+ &lt;/div&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-5-1.jpg" alt="Melanie Li" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Melanie Li&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Melanie, PhD, is a Senior Generative AI Specialist Solutions Architect at AWS based in Sydney, Australia, where her focus is on working with customers to build solutions using state-of-the-art AI/ML tools. She has been actively involved in multiple generative AI i…
+ &lt;/div&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-6-1.jpg" alt="Zohreh Norouzi" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Zohreh Norouzi&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Zohreh is a Senior Security Solutions Architect at Amazon Web Services (AWS). She helps customers make good security choices and accelerate their journey to the AWS Cloud. She has been actively involved in AI security initiatives, using her expertise to help custo…
+ &lt;/div&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-7-1.jpg" alt="Saurabh Trikande" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Saurabh Trikande&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Saurabh is a Senior Product Manager for Amazon Bedrock and Amazon SageMaker Inference. He is passionate about working with customers and partners, motivated by the goal of democratizing AI. He focuses on core challenges related to deploying complex AI applications…
+ &lt;/div&gt;
+ &lt;div class="blog-author-box" style="padding-top: 2.0em"&gt;
+ &lt;div class="blog-author-image" style="margin-right: 1.0em"&gt;
+ &lt;img loading="lazy" class="alignnone size-full" src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-21759-8-1.jpg" alt="Chris Dickens" width="100" height="133"&gt;
+ &lt;/div&gt;
+ &lt;h3 class="lb-h4"&gt;Chris Dickens&lt;/h3&gt;
+ &lt;p style="overflow: hidden"&gt;Chris is a Member of Product Staff at OpenAI focused on the OpenAI APIs. His work includes collaboration with AWS on Amazon Bedrock to make OpenAI’s frontier models widely accessible to developers.&lt;/p&gt;
+ &lt;/div&gt;
+&lt;/footer&gt;</content:encoded>
+
+
+
+ </item>
+ <item>
+ <title>Deploy decision models with llama.cpp on Amazon SageMaker AI</title>
+ <link>https://aws.amazon.com/blogs/machine-learning/deploy-decision-models-with-llama-cpp-on-amazon-sagemaker-ai/</link>
+
+ <dc:creator><![CDATA[Jyothirmai Kottu]]></dc:creator>
+ <pubDate>Mon, 12 Oct 2026 15:51:46 +0000</pubDate>
+ <category><![CDATA[Advanced (300)]]></category>
+ <category><![CDATA[Amazon SageMaker AI]]></category>
+ <category><![CDATA[Technical How-to]]></category>
+ <guid isPermaLink="false">f8a20bd6f8bcd8037ef8136ecd594ea98c83c9d3</guid>
+
+ <description>Learn how to deploy decision models with llama.cpp on Amazon SageMaker AI. This technical how-to serves OpenAI-compatible chat completions with the AWS Deep Learning Container for llama.cpp, then extends the runtime with SemIf to return probabilities over declared options on CPU or…
+ <content:encoded>&lt;p&gt;Applications that route requests, select agent actions, or assign policy outcomes often need scores over a fixed set of choices instead of free-form text. Deploying these decision models with &lt;a href="https://github.com/ggml-org/llama.cpp" target="_blank" rel="…
+&lt;p&gt;This post continues a series on specialized AWS Deep Learning Containers (DLCs) for generative AI inference. Previous posts cover &lt;a href="https://aws.amazon.com/blogs/machine-learning/speaker-labeled-transcription-with-whisperx-on-sagemaker-ai/" target="_blank" rel="noopener"&gt;Whisper…
+&lt;p&gt;In this post, you first use the &lt;a href="https://aws.github.io/deep-learning-containers/llama-cpp/" target="_blank" rel="noopener"&gt;AWS DLC for llama.cpp&lt;/a&gt; to serve OpenAI-compatible chat completions through SageMaker AI &lt;code&gt;InvokeEndpoint&lt;/code&gt;. You then extend …
+&lt;h2 id="solution-overview"&gt;Solution overview&lt;/h2&gt;
+&lt;p&gt;Figure 1 shows two deployment paths from the same packaged model. The text-generation path uses the AWS DLC for llama.cpp and returns generated responses through the OpenAI-compatible API. The structured-decision path builds a child image that replaces the default server with a SemIf adapte…
+&lt;div style="width: 810px" class="wp-caption alignnone"&gt;
+ &lt;a href="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-22079-1.png" target="_blank" rel="noopener"&gt;&lt;img src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2026/10/09/ML-22079-1.png" alt="An application invokes …
+ &lt;p class="wp-caption-text"&gt;Figure 1: Run the AWS DLC for llama.cpp or the SemIf child image on CPU or GPU, depending on the API and latency requirements of your workload&lt;/p&gt;
+&lt;/div&gt;
+&lt;p&gt;For the standard path, package the model as &lt;code&gt;model.tar.gz&lt;/code&gt; in &lt;a href="https://aws.amazon.com/s3/" target="_blank" rel="noopener"&gt;Amazon Simple Storage Service (Amazon S3)&lt;/a&gt; and reference the published DLC image directly. The container finds the first &l…
+&lt;p&gt;The &lt;code&gt;llama-server&lt;/code&gt; HTTP API doesn’t expose the final-position logits and state operations that SemIf uses. The structured-decision path therefore uses &lt;a href="https://aws.amazon.com/codebuild/" target="_blank" rel="noopener"&gt;AWS CodeBuild&lt;/a&gt; to build a c…
+&lt;h2 id="understand-the-input-and-output-schemas"&gt;Understand the input and output schemas&lt;/h2&gt;
+&lt;p&gt;The AWS DLC for llama.cpp accepts the OpenAI Chat Completions schema. Send a &lt;code&gt;messages&lt;/code&gt; array with &lt;code&gt;role&lt;/code&gt; and &lt;code&gt;content&lt;/code&gt;, plus generation controls such as &lt;code&gt;max_tokens&lt;/code&gt; and &lt;code&gt;stream&lt;/code&…
+&lt;div class="hide-language"&gt;
+ &lt;pre&gt;&lt;code class="language-json"&gt;{
+ "messages": [
+ {
+ "role": "user",
+ "content": "A customer cannot receive a password reset email. Reply with the best support queue."
+ }
+ ],
+ "max_tokens": 64,

Diff display stops at 400 lines. The line counts above are from the whole diff. 46 lines shown here cut at 300 characters. The raw artifact at this commit is linked above.