Skip to content

Commit 3f4b699

Browse files
Merge pull request #3447 from anupras-mohapatra-arm/summaries-and-faqs
adding 20 summaries and faqs to servers-and-cloud-computing
2 parents 0aec9ab + f7ac9dd commit 3f4b699

22 files changed

Lines changed: 972 additions & 39 deletions

File tree

content/learning-paths/servers-and-cloud-computing/adler32-kiro/_index.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,59 @@ prerequisites:
1919
- An Arm Neoverse server running Ubuntu 26.04 with SVE support (for example, AWS Graviton3 or later, Google Axion, or Microsoft Cobalt 100)
2020
- Basic familiarity with C programming
2121

22+
# START generated_summary_faq
23+
generated_summary_faq:
24+
template_version: summary-faq-v3
25+
generated_at: '2026-06-26T17:15:35Z'
26+
generator: ai
27+
ai_assisted: true
28+
ai_review_required: true
29+
model: gpt-5
30+
prompt_template: summary-faq-v3
31+
source_hash: 707a88ccf315ebefda3768211ac8a0ae0d142e6e28aca5597f6730b9e091d249
32+
summary_generated_at: '2026-06-26T17:15:35Z'
33+
summary_source_hash: 707a88ccf315ebefda3768211ac8a0ae0d142e6e28aca5597f6730b9e091d249
34+
faq_generated_at: '2026-06-26T17:15:35Z'
35+
faq_source_hash: 707a88ccf315ebefda3768211ac8a0ae0d142e6e28aca5597f6730b9e091d249
36+
summary: >-
37+
You'll transform a scalar Adler-32 checksum in C into a vector-length-agnostic
38+
SVE implementation on Arm Neoverse servers with help from an AI coding assistant connected to
39+
the Arm MCP server. First, you'll set up a small project and capture a reproducible scalar
40+
baseline, then apply the `NMAX` technique to defer modulo operations and expose vectorization
41+
opportunities. You'll learn core SVE concepts in context, including predication with `svwhilelt`,
42+
reductions with `svaddv` for the `a` accumulator, and building the `b` accumulator with `svdot`
43+
and weighted contributions. After each stage, you'll validate correctness against the scalar version
44+
and measure performance changes.
45+
faqs:
46+
- question: How do I know my environment is ready to use SVE intrinsics?
47+
answer: >-
48+
Use an Arm Neoverse server with SVE support that matches the prerequisites.
49+
If in doubt, choose an instance class listed in the Learning Path, such as one based on AWS
50+
Graviton3 or later, and run the scalar baseline before writing SVE code.
51+
- question: What should I record for the baseline before starting vectorization?
52+
answer: >-
53+
Capture the scalar Adler-32 checksum for a known input and record the timing you will compare
54+
against later. Keep the input size and conditions consistent so results are reproducible
55+
when you switch to the SVE version.
56+
- question: When applying the `NMAX` optimization, where should the modulo be performed?
57+
answer: >-
58+
Defer the modulo operation and apply it after processing a block instead of on every byte.
59+
This reduces division work and removes the dependency that blocks vectorization of the inner
60+
loop.
61+
- question: Which parts of the Adler-32 loop should be vectorized first?
62+
answer: >-
63+
Vectorize the `a` accumulator first because it maps cleanly to vector loads and a reduction
64+
with `svaddv`. Then handle the `b` accumulator using a weighted approach and `svdot`, as each
65+
element contributes differently within a block.
66+
- question: How should I handle data lengths that are not a multiple of the SVE vector length?
67+
answer: >-
68+
Use a vector-length-agnostic loop with predication. Generate a predicate with `svwhilelt`
69+
and apply it to loads and arithmetic so tails are processed correctly on any SVE width.
70+
# END generated_summary_faq
71+
2272
author: Jason Andrews
2373

24-
generate_summary_faq: true
74+
generate_summary_faq: false
2575
rerun_summary: false
2676
rerun_faqs: false
2777

content/learning-paths/servers-and-cloud-computing/ai-agent-on-cpu/_index.md

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,57 @@ prerequisites:
1717
- Basic understanding of Python and prompt engineering.
1818
- Understanding of LLM fundamentals.
1919

20+
# START generated_summary_faq
21+
generated_summary_faq:
22+
template_version: summary-faq-v3
23+
generated_at: '2026-06-26T17:17:51Z'
24+
generator: ai
25+
ai_assisted: true
26+
ai_review_required: true
27+
model: gpt-5
28+
prompt_template: summary-faq-v3
29+
source_hash: 275878b5aa4c27dee394da12ad8b80e4c0d0235b3ddce66b1fe3f0e056ef3da9
30+
summary_generated_at: '2026-06-26T17:17:51Z'
31+
summary_source_hash: 275878b5aa4c27dee394da12ad8b80e4c0d0235b3ddce66b1fe3f0e056ef3da9
32+
faq_generated_at: '2026-06-26T17:17:51Z'
33+
faq_source_hash: 275878b5aa4c27dee394da12ad8b80e4c0d0235b3ddce66b1fe3f0e056ef3da9
34+
summary: >-
35+
You'll build and run a function-calling AI agent on Arm servers using
36+
`llama.cpp` and the `llama-cpp-agent` framework with KleidiAI optimizations. After preparing
37+
an Arm-based Ubuntu environment and obtaining a quantized Llama 3.1 8B model, you'll create
38+
`agent.py` to connect the model to tool functions and structured outputs. You'll learn how the
39+
agent selects functions based on input intent, then test the end-to-end workflow to observe
40+
tool invocation and responses. By the end, you'll run an AI agent backed by an optimized
41+
LLM, verify that the model loads, and inspect outputs that demonstrate function selection
42+
and result handling.
43+
faqs:
44+
- question: Which operating system and instance setup do the steps target?
45+
answer: >-
46+
The steps are designed for Arm servers running Ubuntu 22.04 LTS. They were tested on an
47+
Amazon EC2 `m7g.xlarge` instance powered by Graviton3, and expect at least four cores, 16 GB of memory, and
48+
32 GB of disk.
49+
- question: What should be ready before running the `agent.py` script?
50+
answer: >-
51+
Build `llama.cpp` and download the quantized Llama 3.1 8B model. Ensure the Python dependencies,
52+
including `llama-cpp-agent` and `llama-cpp-python`, are installed in the active environment.
53+
- question: Where should the model file be placed for the script to find it?
54+
answer: >-
55+
Place the downloaded model at the path referenced by `model_path` in `agent.py`. Keep the directory
56+
structure consistent with the code so the model loads without modification.
57+
- question: How do I know the agent used a function call rather than replying directly?
58+
answer: >-
59+
Check the script’s output for a selected tool/function name and its arguments, followed
60+
by the function’s return data. If the agent replies directly, you will see a model-generated
61+
response without a function invocation.
62+
- question: How are functions exposed to the LLM in this application?
63+
answer: >-
64+
Functions are declared in `agent.py` and registered through `llama-cpp-agent`. The LLM analyzes
65+
the input and selects among the predefined functions based on intent and context.
66+
# END generated_summary_faq
67+
2068
author: Andrew Choi
2169

22-
generate_summary_faq: true
70+
generate_summary_faq: false
2371
rerun_summary: false
2472
rerun_faqs: false
2573

@@ -56,4 +104,3 @@ weight: 1 # _index.md always has weight of 1 to order corr
56104
layout: "learningpathall" # All files under learning paths have this same wrapper
57105
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
58106
---
59-

content/learning-paths/servers-and-cloud-computing/aks/_index.md

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,57 @@ prerequisites:
1515
- An Azure account
1616
- A machine with [Terraform](/install-guides/terraform/), [Azure CLI](/install-guides/azure-cli), and [Kubectl](/install-guides/kubectl/) installed
1717

18+
# START generated_summary_faq
19+
generated_summary_faq:
20+
template_version: summary-faq-v3
21+
generated_at: '2026-06-26T17:19:52Z'
22+
generator: ai
23+
ai_assisted: true
24+
ai_review_required: true
25+
model: gpt-5
26+
prompt_template: summary-faq-v3
27+
source_hash: 01c5cc8930650a8d81d67d4c48b62e0f9d7b1ebfc2d09a552e11046fb982fc52
28+
summary_generated_at: '2026-06-26T17:19:52Z'
29+
summary_source_hash: 01c5cc8930650a8d81d67d4c48b62e0f9d7b1ebfc2d09a552e11046fb982fc52
30+
faq_generated_at: '2026-06-26T17:19:52Z'
31+
faq_source_hash: 01c5cc8930650a8d81d67d4c48b62e0f9d7b1ebfc2d09a552e11046fb982fc52
32+
summary: >-
33+
You'll automate an Arm-based Azure Kubernetes Service (AKS) cluster deployment
34+
with Terraform and then deploy a WordPress example workload. First, you'll configure AKS to use Azure
35+
Dpsv5 virtual machines based on Ampere Altra Arm processors by following Terraform-driven
36+
provisioning steps. After the cluster is available, you'll use a concise Kubernetes setup to run
37+
WordPress backed by MySQL by creating three manifests: `kustomization.yaml`, `mysql-deployment.yaml`,
38+
and `wordpress-deployment.yaml`. The result is a working application on an Arm-based AKS node
39+
pool, with a clear separation between cluster provisioning and workload deployment to support
40+
repeatable infrastructure-as-code workflows.
41+
faqs:
42+
- question: Can I run Terraform and `kubectl` from my laptop, or do I need an Azure VM?
43+
answer: >-
44+
You can use any computer with the required tools installed, including a desktop, laptop,
45+
or a virtual machine. The steps don't require running on an Azure VM.
46+
- question: How do I confirm the AKS cluster was created successfully before deploying workloads?
47+
answer: >-
48+
Verify that the AKS resource appears in the Azure portal and is reported as available. You
49+
can proceed after the cluster is up and reachable with your configured tooling.
50+
- question: How do I ensure the AKS node pool is Arm-based?
51+
answer: >-
52+
Configure the node pool in Terraform to use an Azure Dpsv5 VM size, which runs on Ampere
53+
Altra Arm-based processors. Confirm that the VM size in your configuration references a
54+
Dpsv5 option.
55+
- question: Which files do I need to create for the WordPress example?
56+
answer: >-
57+
Create `kustomization.yaml`, `mysql-deployment.yaml`, and `wordpress-deployment.yaml` exactly
58+
as shown in the Learning Path. The `kustomization.yaml` file includes a `secretGenerator` entry for
59+
a secret named `mysql-pass`.
60+
- question: What result should I expect after applying the WordPress manifests?
61+
answer: >-
62+
Kubernetes resources for MySQL and WordPress are created as defined in the YAML files. Continue
63+
after the deployment is reported as ready by your tooling and the resources appear as expected.
64+
# END generated_summary_faq
65+
1866
author: Jason Andrews
1967

20-
generate_summary_faq: true
68+
generate_summary_faq: false
2169
rerun_summary: false
2270
rerun_faqs: false
2371

@@ -67,4 +115,3 @@ weight: 1 # _index.md always has weight of 1 to order corr
67115
layout: "learningpathall" # All files under learning paths have this same wrapper
68116
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
69117
---
70-

content/learning-paths/servers-and-cloud-computing/alluxio-cobalt/_index.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,53 @@ prerequisites:
1919
- Familiarity with SSH and remote server access
2020
- Basic understanding of data processing, storage systems, and caching concepts
2121

22+
# START generated_summary_faq
23+
generated_summary_faq:
24+
template_version: summary-faq-v3
25+
generated_at: '2026-06-26T17:21:44Z'
26+
generator: ai
27+
ai_assisted: true
28+
ai_review_required: true
29+
model: gpt-5
30+
prompt_template: summary-faq-v3
31+
source_hash: a518336582a04b9bd5646608eeec314ec70fc6f5121299677d21ddb8819dcb85
32+
summary_generated_at: '2026-06-26T17:21:44Z'
33+
summary_source_hash: a518336582a04b9bd5646608eeec314ec70fc6f5121299677d21ddb8819dcb85
34+
faq_generated_at: '2026-06-26T17:21:44Z'
35+
faq_source_hash: a518336582a04b9bd5646608eeec314ec70fc6f5121299677d21ddb8819dcb85
36+
summary: >-
37+
You'll deploy Alluxio on an Arm-based virtual machine powered by Azure Cobalt 100
38+
and use it as a data orchestration and caching layer for Apache Spark. After creating a Dpsv6
39+
VM, you'll enable the Alluxio Web UI by adding an inbound rule for TCP port 19999 in the Azure
40+
Network Security Group. You'll install and configure Alluxio with local storage and memory-backed
41+
caching, then install Apache Spark under `/opt` and configure Spark to read through Alluxio.
42+
The result is a set of read workloads comparing uncached and cached access that you can use to interpret the impact of in-memory caching on analytics tasks.
43+
faqs:
44+
- question: Which Azure VM size should I select for this setup?
45+
answer: >-
46+
Use a general-purpose VM in the Dpsv6 series to run on Azure Cobalt 100 Arm-based processors.
47+
The creation steps focus on this series.
48+
- question: How do I allow access to the Alluxio Web UI from the internet?
49+
answer: >-
50+
Add an inbound rule for TCP port 19999 in the Azure Network Security Group (NSG). You can attach the NSG to the VM’s network interface or its subnet.
51+
- question: How can I confirm the Alluxio Web UI is reachable after opening the port?
52+
answer: >-
53+
After creating the NSG rule for port 19999, browse to the VM’s public IP using that port
54+
to load the Alluxio Web UI. If it doesn't load, verify the NSG is correctly attached and
55+
the rule allows inbound traffic.
56+
- question: What preparation should I do on the VM before installing Alluxio?
57+
answer: >-
58+
Update the package index, apply available updates, and install basic tools such as `wget`,
59+
`curl`, and `tar`. These tools download and extract the required software.
60+
- question: Where should Apache Spark be installed and how is it used with Alluxio?
61+
answer: >-
62+
Install Apache Spark and place it under `/opt` as shown in the Learning Path. Spark is then configured
63+
to read through Alluxio, so frequently accessed data can be cached in memory.
64+
# END generated_summary_faq
65+
2266
author: Pareena Verma
2367

24-
generate_summary_faq: true
68+
generate_summary_faq: false
2569
rerun_summary: false
2670
rerun_faqs: false
2771

content/learning-paths/servers-and-cloud-computing/apache_arrow_and_flight/_index.md

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,59 @@ prerequisites:
1919
- Basic understanding of data formats such as Parquet or ORC
2020
- Familiarity with Linux command-line operations
2121

22+
# START generated_summary_faq
23+
generated_summary_faq:
24+
template_version: summary-faq-v3
25+
generated_at: '2026-06-26T17:22:13Z'
26+
generator: ai
27+
ai_assisted: true
28+
ai_review_required: true
29+
model: gpt-5
30+
prompt_template: summary-faq-v3
31+
source_hash: 90b638385267e085ea07a70a1c23f16578aa3caaeabeca1f651bcdcac5bf38fb
32+
summary_generated_at: '2026-06-26T17:22:13Z'
33+
summary_source_hash: 90b638385267e085ea07a70a1c23f16578aa3caaeabeca1f651bcdcac5bf38fb
34+
faq_generated_at: '2026-06-26T17:22:13Z'
35+
faq_source_hash: 90b638385267e085ea07a70a1c23f16578aa3caaeabeca1f651bcdcac5bf38fb
36+
summary: >-
37+
You'll set up a single-node analytics stack on Google Cloud C4A virtual machines powered by Google Axion processors. First, you'll provision an `arm64` C4A instance, configure
38+
Google Cloud firewall rules for MinIO and Arrow Flight, and prepare a SUSE Linux Enterprise
39+
Server environment with Apache Arrow. Then, you'll integrate MinIO object storage and use Apache Arrow
40+
to read and write Parquet and ORC datasets, and explore predicate pushdown and column pruning
41+
in a practical workflow. By the end, you'll have a working setup that serves and moves columnar
42+
data with Arrow Flight and validates end-to-end data access using Arrow with MinIO on Arm-based
43+
infrastructure.
44+
faqs:
45+
- question: Which Google Cloud instance and OS image should I choose for this setup?
46+
answer: >-
47+
Use a Google Axion C4A `arm64` virtual machine; the steps use `c4a-standard-4` (4 vCPUs, 16 GB).
48+
Select an `arm64` SUSE Linux Enterprise Server image as shown in the Learning Path.
49+
- question: Which network ports must be opened for the stack to work?
50+
answer: >-
51+
Open the ports listed in the firewall step, including MinIO’s S3 API on port 9000 and the
52+
Arrow Flight port specified there. After creating the rule, confirm that inbound connections
53+
to those services succeed from allowed sources.
54+
- question: How do I confirm MinIO is ready before running Arrow jobs?
55+
answer: >-
56+
Verify the MinIO service is running and accessible on the configured port (including 9000
57+
for the S3 API). Follow the Learning Path instructions to store a test object and read it back
58+
to validate access.
59+
- question: What result should I expect when testing predicate pushdown and column pruning with
60+
Arrow?
61+
answer: >-
62+
Operations should return only the filtered rows and the selected columns from Parquet or
63+
ORC. If unfiltered rows or extra columns appear, review the dataset, filter, and projection
64+
arguments used in the example.
65+
- question: How do I know the Arrow Flight server is reachable from a client?
66+
answer: >-
67+
Use the address and port from the steps. The client should connect and list or fetch data
68+
without errors. Connection timeouts or refusals usually indicate a missing firewall rule
69+
or a server that's not running.
70+
# END generated_summary_faq
71+
2272
author: Pareena Verma
2373

24-
generate_summary_faq: true
74+
generate_summary_faq: false
2575
rerun_summary: false
2676
rerun_faqs: false
2777

@@ -77,4 +127,3 @@ weight: 1
77127
layout: "learningpathall"
78128
learning_path_main_page: yes
79129
---
80-

0 commit comments

Comments
 (0)