<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Maciej Strzelczyk</title>
    <description>The latest articles on Forem by Maciej Strzelczyk (@mstrzelczyk).</description>
    <link>https://forem.com/mstrzelczyk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1317874%2Fcd862afe-98bb-4e6e-8419-6e5406c9535b.png</url>
      <title>Forem: Maciej Strzelczyk</title>
      <link>https://forem.com/mstrzelczyk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mstrzelczyk"/>
    <language>en</language>
    <item>
      <title>TPU Mythbusting: vendor lock-in</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Mon, 20 Apr 2026 16:11:30 +0000</pubDate>
      <link>https://forem.com/googleai/tpu-mythbusting-vendor-lock-in-pbo</link>
      <guid>https://forem.com/googleai/tpu-mythbusting-vendor-lock-in-pbo</guid>
      <description>&lt;p&gt;&lt;a href="https://cloud.google.com/tpu" rel="noopener noreferrer"&gt;Tensor Processing Units&lt;/a&gt; are a technology developed and owned by Google. While you can find GPUs in every cloud provider offer, the TPUs are currently only available through &lt;a href="https://docs.cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions" rel="noopener noreferrer"&gt;Google Cloud Platform&lt;/a&gt;. Situation when you invest in a technology or a service that is not available anywhere else is called vendor lock-in — it's something the sales people love, while customers try to avoid it. What does this look like for TPUs? Let's see.&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 5: TPUs are available only through Google Cloud Platform
&lt;/h2&gt;

&lt;p&gt;As of today (December 12th, 2025) it is still true that TPUs are available only through Google Cloud Platform. If you develop your application to work specifically with the TPU technology, leverage all its strong sides and account for all the limitations, moving to a different provider would be a big challenge. Luckily, as you may remember from the &lt;a href="https://dev.to/googleai/tpu-mythbusting-the-general-perception-5585"&gt;first myth busting post&lt;/a&gt;, GPUs can do everything that TPUs do. They may not be as efficient for a given task, scaling might be different or limited, but in a lot of cases, a move from TPU to a GPU is possible and much easier than the other way around.&lt;/p&gt;

&lt;p&gt;Technically, when you decide to use TPUs, you are limited to GCP as your provider, that is true. However, leaving TPUs to use GPUs is not an impossible task. Unless you make use of the TPUs amazing scaling capabilities, a migration to GPUs and a different provider is always an option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 6: TPUs require unique software
&lt;/h2&gt;

&lt;p&gt;The first TPUs were developed together with the &lt;a href="https://www.tensorflow.org/" rel="noopener noreferrer"&gt;TensorFlow library&lt;/a&gt;. Back in 2018 when Google released the first TPUs to their customers, it was indeed the case that your application written for TPUs would not be compatible with other accelerators. Luckily, over the years since then, the software landscape has changed dramatically. Many abstraction layers were added and support for TPUs is now present in popular software solutions. For example the &lt;a href="https://docs.jax.dev/en/latest/" rel="noopener noreferrer"&gt;JAX library&lt;/a&gt; — it supports TPUs, GPU and CPUs alike.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnd08bbbi96h5vautpp6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnd08bbbi96h5vautpp6.jpeg" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The situation is especially easy when it comes to inferencing. &lt;a href="https://docs.vllm.ai/en/latest/" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; supports plenty of models on TPUs as well as on GPUs. Similarly, &lt;a href="https://maxtext.readthedocs.io/en/latest/index.html" rel="noopener noreferrer"&gt;MaxText&lt;/a&gt; can handle both accelerator types out of the box. If you're looking for a platform to run your models, it's a great idea to give TPUs a try, as jumping between the accelerator platforms has never been easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;In the next post, I will dive into more technical aspects of TPUs and their supporting systems. After all, the efficiency of an AI system is not dependent only on its accelerator speed. Networking and storage are also very important and while storage is pretty much the same for TPU systems as it is for GPU systems, networking is a lot more complicated. Stay tuned for the next article and keep an eye on the official &lt;a href="https://cloud.google.com/blog" rel="noopener noreferrer"&gt;Google Cloud blog&lt;/a&gt; and &lt;a href="https://www.youtube.com/@googlecloudtech" rel="noopener noreferrer"&gt;GCP YouTube channel&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>tpu</category>
      <category>googlecloud</category>
      <category>ai</category>
      <category>gcp</category>
    </item>
    <item>
      <title>TPU Mythbusting: cost and usage</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Thu, 16 Apr 2026 18:54:26 +0000</pubDate>
      <link>https://forem.com/googleai/tpu-mythbusting-cost-and-usage-50ch</link>
      <guid>https://forem.com/googleai/tpu-mythbusting-cost-and-usage-50ch</guid>
      <description>&lt;p&gt;TPUs are foundational to Google’s AI capabilities and can be equally transformative for your projects. However, keeping track of a niche technology like Tensor Processing Units amidst the rapid evolution of AI can be challenging. In this installment of TPU Mythbusting, I tackle two common misconceptions about their cost and usage. If you are new to TPUs, check out the &lt;a href="https://dev.to/googleai/tpu-mythbusting-the-general-perception-5585"&gt;previous post&lt;/a&gt; for an introduction to these application-specific integrated circuits (&lt;a href="https://en.wikipedia.org/wiki/Application-specific_integrated_circuit" rel="noopener noreferrer"&gt;ASIC&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 3: You need to have lots of money to start using TPUs
&lt;/h2&gt;

&lt;p&gt;If you are curious about TPU performance, how to program applications that use them, or simply testing a concept, you don’t need a deep wallet or a large investment to get started. TPUs are available, in a limited capacity, for free on two popular platforms.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://colab.google/" rel="noopener noreferrer"&gt;Google Colab&lt;/a&gt; — You can configure your runtime to use a single v5e TPU. This environment is ideal for familiarizing yourself with the required libraries, application organization, and running basic benchmarks. While a single accelerator won’t tackle massive problems, it’s the perfect first step before moving to a paid solution.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.kaggle.com/discussions/product-announcements/607202" rel="noopener noreferrer"&gt;Kaggle Notebooks&lt;/a&gt; — Kaggle provides access to an instance with 8 v5e chips, which is significantly more powerful than Colab and sufficient for running many mainstream LLMs. The primary restriction is the quota: 20 hours per month with a 9-hour daily limit, which cannot be increased.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With those free options, you can experiment with TPUs before you make any investments on Google Cloud Platform!&lt;/p&gt;

&lt;p&gt;As a &lt;a href="https://edu.google.com/programs/credits/teaching/?modal_active=none" rel="noopener noreferrer"&gt;student&lt;/a&gt; and/or &lt;a href="https://edu.google.com/programs/credits/research/?modal_active=none" rel="noopener noreferrer"&gt;researcher&lt;/a&gt;, you may also apply for &lt;a href="https://cloud.google.com/edu/higher-education?utm_campaign=CDR_0x73f0e2c4_default_b464264269&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud for Education&lt;/a&gt; GCP credits. This way, you can access the power of TPUs through Google Cloud Platform — without tight limitations enforced by Colab or Kaggle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 4: You can use TPUs only through Compute Engine and GKE
&lt;/h2&gt;

&lt;p&gt;The use of TPU is getting friendlier over time. It’s no longer true that you can only use them through a manually managed Compute Instance or through Kubernetes Engine. Today, the main managed solution to make use of TPUs is Vertex AI with its three functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/docs/training/overview?utm_campaign=CDR_0x73f0e2c4_default_b464264269&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI Training&lt;/a&gt;:&lt;/strong&gt; You can submit “Custom Training Jobs” that run on TPU workers. You simply select the TPU type (e.g., v5e, v4) in your job configuration. The service provisions the TPUs, runs your code, and shuts them down automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/docs/training/training-with-tpu-vm?utm_campaign=CDR_0x73f0e2c4_default_b464264269&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI Pipelines&lt;/a&gt;:&lt;/strong&gt; You can define pipeline steps (components) that specifically request TPU accelerators. This is ideal for MLOps workflows where training is just one step in a larger process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.cloud.google.com/vertex-ai/generative-ai/docs/model-garden/deploy-and-inference-tutorial-tpu?utm_campaign=CDR_0x73f0e2c4_default_b464264269&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI Prediction (Online Inference)&lt;/a&gt;:&lt;/strong&gt; You can deploy trained models to &lt;strong&gt;endpoints&lt;/strong&gt; backed by TPU nodes. This is one of the few ways to get “serverless-like” real-time inference on TPUs without managing a permanent VM, although you are billed for the node while the endpoint is active.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These managed solutions minimize expenditure by charging only for the resources consumed, unlike GCE or GKE where infrastructure can sit idle and generate unnecessary cost. Furthermore, Vertex AI simplifies operations management, substantially reducing the human-hours (and therefore cost) required to run and maintain your ML tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coming next
&lt;/h2&gt;

&lt;p&gt;I’m not done with the myths that you can find around the TPUs. I still want to discuss the subject of vendor lock-in and that developing for TPUs makes your application incompatible with other platforms. The times of incompatibility are gone, as software solutions abstract away the differences between the two platforms.&lt;/p&gt;

&lt;p&gt;To stay up to date with everything happening in the Google Cloud ecosystem, keep an eye on the official &lt;a href="https://cloud.google.com/blog?utm_campaign=CDR_0x73f0e2c4_default_b464264269&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; blog and &lt;a href="https://www.youtube.com/@googlecloudtech" rel="noopener noreferrer"&gt;GCP YouTube channel&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>googlecloud</category>
      <category>kaggle</category>
      <category>tpu</category>
    </item>
    <item>
      <title>TPU Mythbusting: the general perception</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Thu, 16 Apr 2026 18:50:29 +0000</pubDate>
      <link>https://forem.com/googleai/tpu-mythbusting-the-general-perception-5585</link>
      <guid>https://forem.com/googleai/tpu-mythbusting-the-general-perception-5585</guid>
      <description>&lt;p&gt;The IT world has been deeply immersed in the AI revolution over the past two years. Terms like &lt;a href="https://cloud.google.com/generative-ai-studio?utm_campaign=CDR_0x73f0e2c4_default_b464231968&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GenAI&lt;/a&gt;, accelerators, diffusion, and inference are now common, and the understanding that GPUs are valuable beyond video games is well-established. However, certain specialized topics within AI and ML, such as the TPU, remain less understood. What, after all, does thermoplastic polyurethane have to do with Artificial Intelligence? (Just kidding 😉) In the realm of AI and computing, TPU stands for &lt;a href="https://docs.cloud.google.com/tpu/docs/intro-to-tpu?utm_campaign=CDR_0x73f0e2c4_default_b464231968&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Tensor Processing Unit&lt;/a&gt;. This series of articles aims to address and clarify popular myths and misconceptions surrounding this highly specialized technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 1: A TPU is just Google’s brand name for a GPU
&lt;/h2&gt;

&lt;p&gt;It is easy to understand where this misconception comes from. The TPU and GPU are often referred to as the engines of Artificial Intelligence. So, if it walks like a duck, it quacks like a duck… it’s a duck, right? Not in this case. TPUs and GPUs do serve a similar purpose in this case, however they are far from being the same. The GPUs are far more versatile in terms of what they can compute. After all, they are also used for processing graphics, rendering 3D models and so on. Have you ever heard someone mention a TPU in this context? A simple venn diagram can help here, it will show the range of tasks a specific chip can handle:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf3cezpn3gw8sl2rwxxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf3cezpn3gw8sl2rwxxt.png" width="502" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;&lt;small&gt;Different chip architectures and their range of use cases.&lt;/small&gt;&lt;/center&gt;

&lt;p&gt; &lt;br&gt;
It all comes down to the purpose of the different architectures in those chips.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Central Processing Unit (CPU)&lt;/strong&gt;: This is a &lt;em&gt;general-purpose processor&lt;/em&gt;, designed with a few powerful cores to handle a diverse range of tasks &lt;strong&gt;sequentially&lt;/strong&gt; and quickly, from running an operating system to a word processor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graphics Processing Unit (GPU)&lt;/strong&gt;: This is a &lt;em&gt;specialized processor&lt;/em&gt; originally designed for the &lt;strong&gt;highly parallel&lt;/strong&gt; task of rendering graphics. Researchers later discovered that this parallel architecture — thousands of simpler cores — was highly effective for the parallel mathematics of AI. The GPU was adapted or co-opted for AI, evolving into a GPGPU, a general-purpose parallel computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tensor Processing Unit (TPU)&lt;/strong&gt;: This is an &lt;a href="https://en.wikipedia.org/wiki/Application-specific_integrated_circuit" rel="noopener noreferrer"&gt;ASIC&lt;/a&gt; (Application-Specific Integrated Circuit). It was not adapted from another purpose; it was &lt;em&gt;architected from the ground up&lt;/em&gt; for one specific application: accelerating neural network operations. Its silicon is dedicated only to the massive matrix and tensor operations fundamental to AI. It is, by design, an inflexible chip; it can’t run word processors or render graphics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This architectural difference highlights why directly comparing GPU and TPU performance is often problematic. It’s challenging to compare devices not designed for identical tasks — perhaps less like comparing apples to oranges, and more like comparing apples to pears, each optimized for different purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Myth 2: TPUs are always cheaper/TPUs are always more expensive than GPU
&lt;/h2&gt;

&lt;p&gt;The comparison of TPU pricing versus GPU pricing is a popular point of confusion. Determining which offers superior cost-effectiveness — which one “gives you more bang for the buck” — is far from a straightforward answer.&lt;/p&gt;

&lt;p&gt;While numerous claims suggest TPUs are significantly cheaper than various GPUs, these assertions invariably come with caveats: they often apply only to specific models, certain tasks, or particular configurations. The reality is, there’s no simple formula to determine how one TPU compares in cost-effectiveness to another accelerator.&lt;/p&gt;

&lt;p&gt;To find out the real performance of a TPU system, &lt;strong&gt;you will need to run experiments&lt;/strong&gt;. This also applies to GPU systems — the whole system depends on much more than just accelerator performance, that’s why it’s important to compare very specific scenarios, including the storage, networking and the type of workload you want to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  More to come
&lt;/h2&gt;

&lt;p&gt;These were the first two common myths about TPUs. I hope this explanation has provided some clarity, even if the answers aren’t always straightforward. In the next article, I will delve deeper into TPU costs, as the topic extends beyond a simple ‘it depends.’ To stay updated on the latest TPU news and other exciting announcements, be sure to follow the official &lt;a href="https://cloud.google.com/blog?utm_campaign=CDR_0x73f0e2c4_default_b464231968&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud blog&lt;/a&gt; and the &lt;a href="https://www.youtube.com/@googlecloudtech" rel="noopener noreferrer"&gt;GCP YouTube channel&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>googlecloud</category>
      <category>kaggle</category>
      <category>tpu</category>
    </item>
    <item>
      <title>Cloud Run Jobs vs. Cloud Batch: Choosing Your Engine for Run-to-Completion Workloads</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Tue, 31 Mar 2026 12:19:29 +0000</pubDate>
      <link>https://forem.com/googleai/cloud-run-jobs-vs-cloud-batch-choosing-your-engine-for-run-to-completion-workloads-56eo</link>
      <guid>https://forem.com/googleai/cloud-run-jobs-vs-cloud-batch-choosing-your-engine-for-run-to-completion-workloads-56eo</guid>
      <description>&lt;p&gt;Google Cloud offers plenty of different products and services, some of which seem to be covering overlapping needs. There are multiple storage solutions (&lt;a href="https://cloud.google.com/storage?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Storage&lt;/a&gt;, &lt;a href="https://cloud.google.com/filestore?&amp;amp;utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Filestore&lt;/a&gt;), database products (&lt;a href="https://cloud.google.com/sql?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud SQL&lt;/a&gt;, &lt;a href="https://cloud.google.com/spanner?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Spanner&lt;/a&gt;, &lt;a href="https://cloud.google.com/bigquery?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;BigQuery&lt;/a&gt;) or ways to run containerized applications (&lt;a href="https://cloud.google.com/run?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run&lt;/a&gt; and &lt;a href="https://cloud.google.com/kubernetes-engine?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GKE&lt;/a&gt;). The breadth of options to choose from can be overwhelming and lead to situations where it’s not obvious which way to go to achieve your goal.&lt;/p&gt;

&lt;p&gt;Similar situation applies to offline processing (aka batch processing). This is a situation where you have some data and want to run the same operation on each piece of this data. For example: transcoding a big video collection, resizing an image gallery or running inference against a prepared set of prompts. The recommended way to handle such situations is to use proper tools that will automatically scale, handle errors and guarantee that all data has been processed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/batch?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Batch&lt;/a&gt; and &lt;a href="https://docs.cloud.google.com/run/docs/create-jobs?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run Jobs&lt;/a&gt; are two of the options to consider when you want to handle an offline processing task. In this article, I’ll explain what those two products have in common and what are their main differences. We will finish with a couple of examples showing when to best use each of these products.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Similarities
&lt;/h2&gt;

&lt;p&gt;Cloud Batch and Cloud Run Jobs are fundamentally aligned in their purpose and share many core features, making them both excellent choices for asynchronous, run-to-completion tasks like data conversion, media processing, and offline processing. &lt;/p&gt;

&lt;p&gt;Both services allow you to run your code in standard &lt;a href="https://opencontainers.org/" rel="noopener noreferrer"&gt;Open Container Initiative (OCI)&lt;/a&gt; images, completely abstracting away the operational headache of managing permanent clusters. They share critical ecosystem features: both can be triggered for periodic execution using &lt;a href="https://docs.cloud.google.com/scheduler/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Scheduler&lt;/a&gt; and orchestrated into complex, multi-step data pipelines via &lt;a href="https://cloud.google.com/workflows?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Workflows&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Security is standardized, with both offering native integration with &lt;a href="https://cloud.google.com/security/products/secret-manager?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Secret Manager&lt;/a&gt; to keep credentials safe, and both fully supporting &lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;VPC Service Controls (VPC-SC)&lt;/a&gt; to define security perimeters. &lt;/p&gt;

&lt;p&gt;Furthermore, the services are designed for workload portability through a compatible task indexing system; both inject environment variables like &lt;code&gt;CLOUD_RUN_TASK_INDEX&lt;/code&gt; and &lt;code&gt;BATCH_TASK_INDEX&lt;/code&gt; to partition data across parallel tasks. This engineering choice allows container images optimized for Cloud Run to be seamlessly migrated and executed on Cloud Batch. &lt;/p&gt;

&lt;p&gt;Finally, both offer native support for mounting Google Cloud Storage buckets (using &lt;a href="https://docs.cloud.google.com/storage/docs/cloud-storage-fuse/overview?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Storage FUSE&lt;/a&gt;) and NFS network shares to efficiently handle large-scale data ingestion and output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Differences
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Core Architectural Paradigms&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The fundamental choice between Cloud Run Jobs and Google Cloud Batch often comes down to the desired level of abstraction versus the required level of infrastructure control. Cloud Run Jobs represents the serverless ideal, prioritizing developer velocity and rapid scaling by entirely abstracting the underlying hardware platform. In contrast, Google Cloud Batch operates as a highly configurable orchestration layer sitting directly atop &lt;a href="https://cloud.google.com/products/compute?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Compute Engine&lt;/a&gt;, granting granular control over virtual machine (VM) shapes and deep hardware integrations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GPU Ecosystem and Support&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cloud Run Jobs supports a curated, fully managed GPU experience optimized for inference and video transcoding, though it strictly enforces a limit of one GPU per instance and a 1-hour maximum timeout for GPU-based tasks. Google Cloud Batch unlocks the entire Compute Engine accelerator portfolio, allowing users to attach multiple GPUs (up to 8 per VM) and supporting multi-day training runs with advanced interconnects like &lt;a href="https://en.wikipedia.org/wiki/NVLink" rel="noopener noreferrer"&gt;NVLink&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Task Communication&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The architectural divergence between the two services is further highlighted by their approach to inter-task communication. Cloud Run Jobs operates on a "shared nothing" architecture, where parallel tasks are entirely isolated and possess no native mechanism to communicate with one another directly. This is in stark contrast to Google Cloud Batch, which is specifically engineered to support "tightly coupled" workloads, such as multi-physics simulations or complex weather forecasting. Batch facilitates high-performance communication by supporting &lt;a href="https://en.wikipedia.org/wiki/Message_Passing_Interface" rel="noopener noreferrer"&gt;Message Passing Interface (MPI)&lt;/a&gt; libraries and provisioning compute clusters with &lt;a href="https://docs.cloud.google.com/vpc/docs/rdma-network-profiles?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud RDMA (Remote Direct Memory Access)&lt;/a&gt; technology. This allows nodes to exchange state data with ultra-low latency and high bandwidth, making Batch the requisite choice for sophisticated &lt;a href="https://cloud.google.com/discover/what-is-high-performance-computing?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;high-performance computing (HPC)&lt;/a&gt; scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Financial Models and Billing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cloud Run Jobs utilizes instance-based billing, measured in 100-millisecond increments with a generous recurring free tier for vCPU and memory. Google Cloud Batch has no base service fee; users are billed strictly for the underlying Compute Engine infrastructure consumed. Batch offers significant financial leverage through Spot VMs, providing big discounts for fault-tolerant workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Constraints, Limits, and Maximum Scalability&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The fundamental difference in architecture directly impacts the scale, concurrency, and duration of workloads each service can handle. Cloud Run Jobs is optimized for relatively bounded workloads, while Google Cloud Batch is engineered for massive, unbounded computational scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Execution and Task Limits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A single &lt;strong&gt;Cloud Run job&lt;/strong&gt; is limited to a maximum of 10,000 independent tasks per execution. The maximum execution length for a standard CPU-based task is 168 hours (7 days), but any task utilizing a GPU is severely restricted to a 1-hour maximum timeout. Fault tolerance allows up to 10 retries per failed task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Cloud Batch&lt;/strong&gt; is built for a significantly larger scale. A single job definition can encompass up to 100,000 tasks within a task group and supports executing up to 5,000 of these tasks in parallel. Execution duration is highly permissive; a Batch task can remain in the RUNNING state for up to 14 days by default. This extended timeout applies even to GPU-based tasks, making Batch mandatory for multi-day distributed training runs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Cloud Run Jobs&lt;/th&gt;
&lt;th&gt;Google Cloud Batch&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Max Tasks Per Job&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max Parallel Tasks&lt;/td&gt;
&lt;td&gt;Regional Quota Dependent&lt;/td&gt;
&lt;td&gt;5,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max CPU Task Timeout&lt;/td&gt;
&lt;td&gt;168 Hours (7 Days)&lt;/td&gt;
&lt;td&gt;14 Days (Default limit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max GPU Task Timeout&lt;/td&gt;
&lt;td&gt;1 Hour&lt;/td&gt;
&lt;td&gt;14 Days (Default limit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max Retries Per Task&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Configurable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max Concurrent VMs&lt;/td&gt;
&lt;td&gt;N/A (Serverless)&lt;/td&gt;
&lt;td&gt;2,000 (single-zone) or 4,000 (multi-zone)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Use Case Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example 1: Administrative Automation and Nightly ETL&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Recommended Service:&lt;/strong&gt; Cloud Run Jobs&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scenario:&lt;/em&gt; A SaaS platform must execute a nightly script to migrate localized data into a central BigQuery warehouse, generate daily PDF invoices for thousands of clients, and perform routine database schema migrations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Justification:&lt;/em&gt; These tasks are typically I/O bound, complete within a few minutes or hours (well under the 168-hour limit), and do not require specialized CPU instruction sets. Cloud Run Jobs excels here because it requires zero infrastructure scaffolding; the team simply containerised scripts and schedules them via Cloud Scheduler.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example 2: Massively Parallel Document and Media Processing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Recommended Service:&lt;/strong&gt; Cloud Run Jobs (with GPU if visual processing is required)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scenario:&lt;/em&gt; A media or e-commerce company must process thousands of user-uploaded videos or images daily, requiring video transcoding via FFmpeg or lightweight AI inference (e.g., YOLO object detection).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Justification:&lt;/em&gt; This represents an extremely parallel problem where each file can be processed independently using the task index to assign files. Cloud Run can spin up hundreds of L4-backed containers in seconds and scale to zero immediately upon completion.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example 3: High-Performance Computing (HPC) and Multi-Physics Simulation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Recommended Service:&lt;/strong&gt; Google Cloud Batch&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scenario:&lt;/em&gt; A climate research institute runs physics-based simulations for weather forecasting, or a pharmaceutical company performs massive simulations for drug discovery.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Justification:&lt;/em&gt; These are "tightly coupled" workloads where parallel processes must exchange state data. Batch is mandatory as it supports MPI configurations and Cloud RDMA for ultra-low latency inter-node communication.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example 4: Distributed Machine Learning Training&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Recommended Service:&lt;/strong&gt; Google Cloud Batch&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scenario:&lt;/em&gt; An AI laboratory pre-training a 70-billion parameter model or performing extensive fine-tuning across terabytes of data over several days.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Justification:&lt;/em&gt; Cloud Run Jobs is disqualified due to the 1-hour GPU timeout and 1-GPU-per-instance limit. Batch allows provisioning A3 or A4 machine series with up to 8 GPUs per VM interconnected via NVLink for multi-day training runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fheu9czfozccesvsr4drr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fheu9czfozccesvsr4drr.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Happy Processing!
&lt;/h2&gt;

&lt;p&gt;I hope this article has helped you better understand the difference between Cloud Batch and Cloud Run Jobs - the two products designed for processing tasks to completion. Lightweight Cloud Run containers and heavy-duty Cloud Batch machines will definitely help you with all the computations tasks you may have. Try them out by &lt;a href="https://codelabs.developers.google.com/codelabs/cloud-starting-cloudrun-jobs?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;creating a Cloud Run Job (code lab)&lt;/a&gt; or by &lt;a href="https://docs.cloud.google.com/batch/docs/create-run-example-job?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;scheduling a Cloud Batch job&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;To stay up to date with all that's happening in the &lt;a href="https://cloud.google.com/?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; world keep an eye on &lt;a href="https://cloud.google.com/blog/?utm_campaign=CDR_0x73f0e2c4_default_b496192395&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud blog&lt;/a&gt; and &lt;a href="https://www.youtube.com/googlecloudplatform" rel="noopener noreferrer"&gt;Google Cloud YouTube channel&lt;/a&gt; to not miss any updates!&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>gcp</category>
      <category>devops</category>
    </item>
    <item>
      <title>Inference on GKE Private Clusters</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Thu, 12 Mar 2026 12:52:00 +0000</pubDate>
      <link>https://forem.com/googlecloud/inference-on-gke-private-clusters-35i8</link>
      <guid>https://forem.com/googlecloud/inference-on-gke-private-clusters-35i8</guid>
      <description>&lt;h2&gt;
  
  
  Setting up inference service without access to Internet
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/tutorials/serve-with-gke-inference-gateway?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Deploying an inference service&lt;/a&gt; on your &lt;a href="https://cloud.google.com/kubernetes-engine?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GKE&lt;/a&gt; cluster in 2026 is a fairly simple task. With a short Deployment definition making use of a &lt;a href="https://docs.vllm.ai/en/latest/" rel="noopener noreferrer"&gt;vLLM&lt;/a&gt; image (&lt;a href="https://docs.cloud.google.com/tpu/docs/intro-to-tpu?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;TPU&lt;/a&gt; or &lt;a href="https://cloud.google.com/gpu?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GPU&lt;/a&gt;) and a Service definition, you have the basic setup ready to go! vLLM grabs the model of your choosing from &lt;a href="https://huggingface.co/" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; during its startup. It’s all nicely automated. However, this setup requires your GKE nodes to have access to the Internet. What should you do when there’s no Internet connection? I will discuss the options in this article, but first, let’s start with a short analysis of how and why you may want to have no Internet connection for your nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  GKE Private Nodes
&lt;/h2&gt;

&lt;p&gt;One situation where your vLLM pod might not be able to download a model from the Internet is when you decide to use &lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/how-to/legacy/network-isolation?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GKE Private Cluster&lt;/a&gt;. When you choose this option, the nodes in your cluster are assigned only a private IP from your VPC network. With only a private IP address, it’s impossible to reach them from outside of your network, but they also lose the default way to communicate with the outside world. This feature is great for increasing the security of your system, but it has obvious drawbacks, like this lack of connectivity to the world.&lt;/p&gt;

&lt;p&gt;One easy solution to the private nodes situation is to configure &lt;a href="https://docs.cloud.google.com/nat/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud NAT&lt;/a&gt; for the region your cluster is in. That will create a way for the nodes and pods running on them to access the Internet, while keeping them protected from any attempt to establish new connections from outside of the network. However, if you want your pods to be unable to connect to the Internet, we need another way to get the model for vLLM to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Providing images to the pods
&lt;/h2&gt;

&lt;p&gt;One other problem you might encounter when choosing to use Private Cluster without access to the Internet is the fact that your nodes won’t have access to the default source of Docker images: &lt;a href="https://hub.docker.com/" rel="noopener noreferrer"&gt;Docker Hub&lt;/a&gt;. The simple &lt;code&gt;vllm/vllm-openai:latest&lt;/code&gt; image specification will not work. You will need to copy the images you want to use to the &lt;a href="https://docs.cloud.google.com/artifact-registry/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Artifact Registry&lt;/a&gt;—this way GKE Nodes will be able to download the images and run them. This gives you additional control over your environment; you can carefully control which versions of the images to download and allow cluster users to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Providing the LLM
&lt;/h2&gt;

&lt;p&gt;vLLM can run a model stored in a local directory if you pass it as the &lt;code&gt;--model&lt;/code&gt; argument value. To make use of this ability in your private GKE cluster, you will have to somehow provide the model to the vLLM through a mounted directory. The easiest way to do this is through &lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GCS FUSE&lt;/a&gt;, which allows you to simply mount a &lt;a href="https://docs.cloud.google.com/storage/docs/buckets?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GCS bucket&lt;/a&gt; as a folder in your Pod. You just need to remember that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The GKE Cluster must have the &lt;code&gt;GcsFuseCsiDriver&lt;/code&gt; add-on enabled.
&lt;/li&gt;
&lt;li&gt;You should use &lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/workload-identity?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Workload Identity&lt;/a&gt; and a dedicated &lt;a href="https://docs.cloud.google.com/iam/docs/service-account-overview?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;service account&lt;/a&gt; to allow the pod to access the bucket. The &lt;code&gt;roles/storage.objectViewer&lt;/code&gt; role should work just fine for read-only access.
&lt;/li&gt;
&lt;li&gt;It’s important to host the model in the same region as the nodes of your cluster to ensure the fastest transfers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Serving LLMs from a mounted directory speeds up the startup process of your inference service, as it doesn’t have to download the model each time a new pod is started.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Alternative to mounting GCS Bucket - persistent disks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;An alternative to mounting a bucket is to use a zonal or regional &lt;a href="https://docs.cloud.google.com/compute/docs/disks/persistent-disks?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;persistent disk&lt;/a&gt; or &lt;a href="https://docs.cloud.google.com/compute/docs/disks/hyperdisks?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;hyperdisk&lt;/a&gt;. A single disk can be mounted by multiple pods at once if using read-only mode. Creating a disk to store a model is a bit more time consuming than using a GCS bucket, but might provide better performance (depending on the disk type) and be cheaper, as GCS and disk billing is structured differently.&lt;/p&gt;

&lt;p&gt;To create a disk storing a model, you will need a temporary &lt;a href="https://docs.cloud.google.com/compute/docs/instances?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Compute Instance&lt;/a&gt;, where you will mount, format and fill the disk with data (&lt;a href="https://huggingface.co/docs/huggingface_hub/guides/cli" rel="noopener noreferrer"&gt;&lt;code&gt;hf download&lt;/code&gt;&lt;/a&gt; works just fine for this). Once the disk is ready, the VM can be deleted and the disk attached to the vLLM pods.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Using GKE without Internet access can be a good practice, providing you with additional security and control. As you can see, the additional work required to get your inference service running in this case is not negligible, but it is also not a deal-breaker. It’s up to you to decide if it’s a configuration you would like to use in your setup. Using a GCS Bucket or persistent disk to store a model is also a very good idea to simply cut down on the startup time of your services, especially with larger models.&lt;/p&gt;

&lt;p&gt;The ecosystem of AI is changing at a rapid pace and it’s important to stay up to date with all the latest news. Follow the official &lt;a href="https://cloud.google.com/blog?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud blog&lt;/a&gt;, &lt;a href="https://developers.googleblog.com/?utm_campaign=CDR_0x73f0e2c4_default_b491386531&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Developers blog&lt;/a&gt; and &lt;a href="https://www.youtube.com/googlecloudplatform" rel="noopener noreferrer"&gt;Google Cloud Tech YouTube channel&lt;/a&gt; to not miss any updates!&lt;/p&gt;

</description>
      <category>gke</category>
      <category>gcp</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>AI deployment: to host or not to host?</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Tue, 10 Mar 2026 23:28:46 +0000</pubDate>
      <link>https://forem.com/googlecloud/ai-deployment-to-host-or-not-to-host-4p2</link>
      <guid>https://forem.com/googlecloud/ai-deployment-to-host-or-not-to-host-4p2</guid>
      <description>&lt;p&gt;So you’ve built your AI application prototype. You used your own local GPU to run the AI model, or just used the &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;free AI Studio tier&lt;/a&gt; to power your clever program. The app is ready, the world is ready, time to deploy your production instance! In the case of traditional, non-AI powered apps and services, the choice of deployment platform is based on personal preference, what you are familiar with, how much control over fine details you want to have etc. Cost is usually not the most important factor, as for a new service, that’s just going to start gaining a userbase, the first usage bills won’t be that high anyway. The situation is different when it comes to running services that make use of AI. Here, you need to make two separate decisions. First is how to deploy your application, this is the same as for a vanilla non-AI app. Second is how you are going to provision the AI capabilities. This second decision will most likely be responsible for a big chunk of your bill and it shouldn’t be made without proper consideration. In this article, I will try to help you make the right decision for your use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless vs hosted inference service
&lt;/h2&gt;

&lt;p&gt;There are two ways of provisioning AI for a production-grade application: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Serverless&lt;/strong&gt; - where you pay for the tokens your application sends and receives.This is sometimes called Model as a Service (MaaS). In Google Cloud, this approach is available in &lt;a href="https://cloud.google.com/vertex-ai?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI&lt;/a&gt; and &lt;a href="https://ai.google.dev/gemini-api/docs?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google AI Studio (Gemini API)&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted&lt;/strong&gt; - where you pay for the time you use the infrastructure running an LLM. In Google Cloud, this model is available through multiple services like: &lt;a href="https://cloud.google.com/products/compute?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Compute&lt;/a&gt; (through certain &lt;a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;machine types&lt;/a&gt;), &lt;a href="https://cloud.google.com/vertex-ai?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI&lt;/a&gt;, &lt;a href="https://cloud.google.com/kubernetes-engine?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GKE&lt;/a&gt; or &lt;a href="https://docs.cloud.google.com/run/docs/ai/overview?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Run&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on your situation, you may not have an option to choose between the two, because only one would be possible. For example, if you have to use one of the &lt;a href="https://ai.google.dev/gemini-api/docs/gemini-3?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Gemini models&lt;/a&gt;, there’s no way to host it yourself and the MaaS (pay per token) approach is the only one available. Similarly, if you have to use a custom model that is not available as a service, you just have to go down the hosted path.&lt;/p&gt;

&lt;p&gt;In cases where you do have a choice between the two paths you need to understand how they will affect your budget.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Serverless (pay per token)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Paying only for the tokens your application uses is a fair and easy to understand setup. It works exactly like any other paid service on Google Cloud - you pay for what you use. &lt;/p&gt;

&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;It scales to zero, when you don’t use the AI,
&lt;/li&gt;
&lt;li&gt;you don’t have to worry about scaling,
&lt;/li&gt;
&lt;li&gt;Configuration and maintenance are extremely simple,&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Less predictable for your budget
&lt;/li&gt;
&lt;li&gt;You may reach service quota, either when your application experiences a rush-hour or when you reach some total monthly usage quota
&lt;/li&gt;
&lt;li&gt;In case your application is hacked, your bill might skyrocket
&lt;/li&gt;
&lt;li&gt;Once your application gets popular, the bill will grow with your active userbase&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Hosted (pay per second)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Hosting an LLM on infrastructure that you pay for is extremely predictable cost-wise. As long as you know how long you are going to hold on to that GPU or &lt;a href="https://cloud.google.com/tpu?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;TPU&lt;/a&gt; accelerated instance, you know exactly how much you are going to pay.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Extremely predictable cost
&lt;/li&gt;
&lt;li&gt;Many ways to lower your bill: &lt;a href="https://docs.cloud.google.com/docs/cuds?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;CUDs&lt;/a&gt;, &lt;a href="https://cloud.google.com/solutions/spot-vms?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Spot Instances&lt;/a&gt;, choosing a cheaper zone or choosing the right &lt;a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;instance and/or accelerator type&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;No quota on how much tokens your application consumes
&lt;/li&gt;
&lt;li&gt;Full control over hardware and software inference configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Big initial cost
&lt;/li&gt;
&lt;li&gt;Doesn’t scale as smoothly as serverless
&lt;/li&gt;
&lt;li&gt;Configuration and maintenance is more complicated&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Couple of considerations
&lt;/h2&gt;

&lt;p&gt;To help you out a bit further, here are some questions you should ask yourself, before deciding on one of the deployment options.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much traffic do I expect?
&lt;/h3&gt;

&lt;p&gt;With low traffic, the choice is almost obvious - serverless is cheaper and easier. However, as your usage grows, the number of tokens consumed will add up to a considerable amount. In such a case, using a self-hosted solution might save you from unexpected bills at the end of the month.&lt;/p&gt;

&lt;h3&gt;
  
  
  Am I legally bound to keep user data in certain region?
&lt;/h3&gt;

&lt;p&gt;In some cases, like with medical or financial data, you might be required by local regulations or your own contracts to ensure your user data doesn’t leave a certain location, or will not be sent to service you don’t control. This might be a situation where no matter the cost effectiveness self-hosting an AI model is the only possible solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Am I likely to hit the hourly/monthly quota?
&lt;/h3&gt;

&lt;p&gt;All API Services have some usage quotas, that includes AI services. If you expect your application may reach this quota, it’s a big hint that you should consider self-hosting your model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mixed-approach
&lt;/h2&gt;

&lt;p&gt;It is also worth noting that you don’t have to limit your architecture to using only one AI Model with one deployment option. Imagine your application offers multiple AI-powered features - some of them might be simple enough for a small model to handle, while others require full power of Gemini. It is perfectly fine to have for example a &lt;a href="https://ai.google.dev/gemma/docs/core?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Gemma 3&lt;/a&gt; running on a VM, handling the easier tasks, while you delegate the harder/bigger tasks to Gemini API.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not an irrevocable decision
&lt;/h2&gt;

&lt;p&gt;Even after careful consideration, the decision might still not be a simple one, especially if you’re starting with a new idea and simply don’t know how popular it’ll get. Luckily, with good architecture of your application, it is not that difficult to prepare for changing the AI API endpoint. It’s reasonable to start with a serverless solution, where you will often make great use of the fact that no traffic = zero cost. Once your application takes off and the Vertex AI or AI Studio bill reaches levels comparable to running a self-hosted model, you should reevaluate your situation and perhaps switch to the more predictable approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep up!
&lt;/h2&gt;

&lt;p&gt;The ecosystem of AI is changing at a rapid pace and it’s important to stay up to date with all the latest news. Follow the official &lt;a href="https://cloud.google.com/blog?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Cloud blog&lt;/a&gt;, &lt;a href="https://developers.googleblog.com/?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Developers blog&lt;/a&gt; and &lt;a href="https://www.youtube.com/@googlecloudtech" rel="noopener noreferrer"&gt;Google Cloud Tech YouTube channel&lt;/a&gt; to not miss any updates!&lt;/p&gt;

&lt;p&gt;P.S. Did you know that Google Cloud now offers &lt;a href="https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/?utm_campaign=CDR_0x73f0e2c4_default_b485824284&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Developer Knowledge API and MCP server&lt;/a&gt; that can give your AI Agents access to always up-to-date knowledge straight from the official Google Cloud, Firebase and Android documentation?!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gcp</category>
      <category>vertexai</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>How to enable Secure Boot for your AI workloads</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Mon, 21 Jul 2025 14:43:09 +0000</pubDate>
      <link>https://forem.com/googlecloud/how-to-enable-secure-boot-for-your-ai-workloads-khm</link>
      <guid>https://forem.com/googlecloud/how-to-enable-secure-boot-for-your-ai-workloads-khm</guid>
      <description>&lt;p&gt;Written in cooperation with &lt;a href="https://www.linkedin.com/in/aroneidelman/" rel="noopener noreferrer"&gt;Aron Eidelman&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As organizations race to deploy powerful GPU-accelerated workloads, they might overlook a foundational step: ensuring the integrity of the system from the very moment it turns on. &lt;/p&gt;

&lt;p&gt;Threat actors, however, have not overlooked this. They increasingly target the boot process with sophisticated malware like bootkits, which seize control before any traditional security software can load and grant them the highest level of privilege to steal data or corrupt your most valuable AI models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; The most foundational security measure for any server is verifying its integrity the moment it powers on. This process, known as Secure Boot, is designed to stop deep-level malware that can hijack a system before its primary defenses are even awake.&lt;/p&gt;

&lt;p&gt;Secure Boot is part of Google Cloud’s &lt;a href="https://cloud.google.com/compute/shielded-vm/docs/shielded-vm?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Shielded VM&lt;/a&gt; offering, which allows you to verify the integrity of your Compute VM instances, including the VMs that handle your AI workloads. It’s the only major cloud offering of its kind that can track changes beyond initial boot out of the box and without requiring the use of separate tools or event-driven rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bottom line:&lt;/strong&gt; Organizations don't have to sacrifice security for performance. There is a clear, repeatable process to sign your own GPU drivers, allowing you to lock down your infrastructure's foundation without compromising your AI workloads. &lt;/p&gt;

&lt;p&gt;Google Cloud’s Secure Boot capability can be opted into at no additional charge, and now there’s a new, easier way to set it up for your GPU-accelerated machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding the danger of bootkits&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It’s important to secure your systems from boot-level threats. Bootkits target the boot process, the foundation of an operating system. By compromising the bootloader and other early-stage system components, a bootkit can gain kernel-level control before the operating system and its security measures load. Malware can then operate with the highest privileges, bypassing traditional security software.&lt;/p&gt;

&lt;p&gt;This technique falls under the Persistence and Defense Evasion tactics in the &lt;a href="https://attack.mitre.org/techniques/T1542/003/" rel="noopener noreferrer"&gt;MITRE ATT&amp;amp;CK framework&lt;/a&gt;. Bootkits are difficult to detect and remove due to their low-level operation. They hide by intercepting system calls and manipulating data, persisting across reboots, stealing data, installing malware, and disabling security features. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-336a" rel="noopener noreferrer"&gt;Bootkits and rootkits&lt;/a&gt; pose a persistent, embedded threat, and have been observed as part of current threat actor trends from &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/china-nexus-espionage-targets-juniper-routers?e=48754805&amp;amp;utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Google Threat Intelligence Group&lt;/a&gt;, the &lt;a href="https://www.welivesecurity.com/2023/03/01/blacklotus-uefi-bootkit-myth-confirmed/" rel="noopener noreferrer"&gt;European Union Agency for Cybersecurity&lt;/a&gt; (ENISA), and the U.S. &lt;a href="https://www.cisa.gov/news-events/analysis-reports/ar25-087a" rel="noopener noreferrer"&gt;Cybersecurity and Infrastructure Security Agency&lt;/a&gt; (CISA). Google Cloud always works on improving the security of our solutions by strengthening our products and providing tools you can use yourself. In this article, we would like to demonstrate a new, easier way of setting up Secure Boot for your GPU-accelerated machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Limitations of Secure Boot with GPUs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/compute/shielded-vm/docs/shielded-vm?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Shielded VMs&lt;/a&gt; employ a &lt;a href="https://en.wikipedia.org/wiki/Trusted_Platform_Module" rel="noopener noreferrer"&gt;TPM&lt;/a&gt; 2.0-compliant &lt;a href="https://cloud.google.com/vmware-engine/docs/vmware-ecosystem/howto-vtpm?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;virtual Trusted Platform Module&lt;/a&gt; (vTPM) as their root of trust, protected by Google Cloud's virtualization and isolation powered by &lt;a href="https://cloud.google.com/docs/security/titan-hardware-chip?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Titan chips&lt;/a&gt;. While Secure Boot enforces signed software execution, &lt;a href="https://cloud.google.com/docs/security/boot-integrity#measured-boot-process?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Measured Boot&lt;/a&gt; logs boot component measurements to the vTPM for remote attestation and integrity verification. &lt;/p&gt;

&lt;p&gt;Limitations start when you want to use a kernel module that is not part of the official distribution of your operating system. That is especially problematic for AI workloads, which rely on GPUs whose drivers are usually not part of official distributions. If you want to manually install GPU drivers on a system with Secure Boot, the system will refuse to use them because they won’t be properly signed. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to use Secure Boot on GPU-accelerated machines&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are two ways you can tell Google Cloud to trust your signature when it confirms the GPU driver validity with Secure Boot: with an automated script, or manually. &lt;/p&gt;

&lt;p&gt;The script that can help you prepare a Secure Boot compatible image is open-source and is available in our &lt;a href="https://github.com/GoogleCloudPlatform/compute-gpu-installation/tree/main/linux" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;. Here’s how you can use it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download the newest version of the script:&lt;/span&gt;
curl &lt;span class="nt"&gt;-L&lt;/span&gt; https://storage.googleapis.com/compute-gpu-installation-us/installer/latest/cuda_installer.pyz &lt;span class="nt"&gt;--output&lt;/span&gt; cuda_installer.pyz

&lt;span class="c"&gt;# Make sure you are logged in with gcloud&lt;/span&gt;
gcloud auth login

&lt;span class="c"&gt;# Check available option for the build process&lt;/span&gt;
python3 cuda_installer.pyz build_image &lt;span class="nt"&gt;--help&lt;/span&gt;

&lt;span class="c"&gt;# Use the script to build an image based on Ubuntu 24.04&lt;/span&gt;
PROJECT &lt;span class="o"&gt;=&lt;/span&gt; your_project_name
ZONE &lt;span class="o"&gt;=&lt;/span&gt; zone_you_want_to_use
SECURE_BOOT_IMAGE &lt;span class="o"&gt;=&lt;/span&gt; name_of_the_final_image

python3 cuda_installer.pyz build_image &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="nv"&gt;$PROJECT&lt;/span&gt; &lt;span class="nt"&gt;--vm-zone&lt;/span&gt; &lt;span class="nv"&gt;$ZONE&lt;/span&gt; &lt;span class="nt"&gt;--base-image&lt;/span&gt; ubuntu-24 &lt;span class="nv"&gt;$SECURE_BOOT_IMAGE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script will execute each of the five steps described below for you. It may take up to 30 minutes, as the installation process takes this much time. We’ve also detailed how to use the building script in &lt;a href="https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#self-signing-automated?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;our documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To manually tell Google Cloud to trust your signature, follow these five steps (also available in &lt;a href="https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#self-signing-manual?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;our documentation&lt;/a&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate your own certificate to be used for signing the driver.
&lt;/li&gt;
&lt;li&gt;Create a fresh VM with the OS of your choice (Secure Boot disabled, GPU not required).
&lt;/li&gt;
&lt;li&gt;Install and sign the GPU driver (and optionally CUDA toolkit).
&lt;/li&gt;
&lt;li&gt;Create a new Disk Image based on the machine with a self-signed driver, &lt;a href="https://cloud.google.com/compute/shielded-vm/docs/creating-shielded-images#adding-shielded-image?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;adding your certificate to the list of trusted certificates&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;The new image can be now used with Secure Boot enabled VMs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Whether you used the script or performed the task manually, you’ll want to verify that the process worked. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Start a new GPU accelerated VM using the created image&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To verify that everything worked, we can create a new VM using the new disk image with the following command (we enable the Secure Boot option to verify that our process worked).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a new VM with T4 GPU to verify that everything works. Note that here ZONE needs to have T4 GPUs available.&lt;/span&gt;
TEST_INSTANCE_NAME &lt;span class="o"&gt;=&lt;/span&gt; name_of_the_test_instance

gcloud compute instances create &lt;span class="nv"&gt;$TEST_INSTANCE_NAME&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PROJECT&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$ZONE&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--machine-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;n1-standard-4 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--accelerator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1,type&lt;span class="o"&gt;=&lt;/span&gt;nvidia-tesla-t4 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--create-disk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto-delete&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;yes&lt;/span&gt;,boot&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;yes&lt;/span&gt;,device-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$TEST_INSTANCE_NAME&lt;/span&gt;,image&lt;span class="o"&gt;=&lt;/span&gt;projects/&lt;span class="nv"&gt;$PROJECT&lt;/span&gt;/global/images/&lt;span class="nv"&gt;$SECURE_BOOT_IMAGE&lt;/span&gt;,mode&lt;span class="o"&gt;=&lt;/span&gt;rw,size&lt;span class="o"&gt;=&lt;/span&gt;100,type&lt;span class="o"&gt;=&lt;/span&gt;pd-balanced &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--shielded-secure-boot&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--shielded-vtpm&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--shielded-integrity-monitoring&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--maintenance-policy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;TERMINATE

&lt;span class="c"&gt;# gcloud compute ssh to run nvidia-smi and see the output&lt;/span&gt;
gcloud compute ssh &lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PROJECT&lt;/span&gt; &lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$ZONE&lt;/span&gt; &lt;span class="nv"&gt;$TEST_INSTANCE_NAME&lt;/span&gt; &lt;span class="nt"&gt;--command&lt;/span&gt; &lt;span class="s2"&gt;"nvidia-smi"&lt;/span&gt;

&lt;span class="c"&gt;# If you decided to also install CUDA, you can verify it with the following command&lt;/span&gt;
gcloud compute ssh &lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PROJECT&lt;/span&gt; &lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$ZONE&lt;/span&gt; &lt;span class="nv"&gt;$TEST_INSTANCE_NAME&lt;/span&gt; &lt;span class="nt"&gt;--command&lt;/span&gt; &lt;span class="s2"&gt;"python3 cuda_installer.pyz verify_cuda"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Clean up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you verify that the new image works, there’s no need to keep the verification VM around. You can delete it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud compute instances delete &lt;span class="nt"&gt;--zone&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$ZONE&lt;/span&gt; &lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PROJECT&lt;/span&gt; &lt;span class="nv"&gt;$TEST_INSTANCE_NAME&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Enabling Secure Boot&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now that you have built a Secure Boot compatible base image for your GPU-based workloads, remember to actually enable Secure Boot on your VM instances when you use those images! Secure Boot is disabled by default, so it needs to be explicitly enabled for Compute Engine instances.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;When creating new instances&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you create a new instance using Cloud Console, the checkbox to enable Secure Boot can be found in the Security tab of the creation page, under the Shielded VM section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepx2y5a8j7gta8cn5tqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepx2y5a8j7gta8cn5tqz.png" alt="Google Compute Instance creation interface with " width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the gcloud enthusiasts, there’s &lt;code&gt;--shielded-secure-boot&lt;/code&gt; flag available for the &lt;a href="https://cloud.google.com/sdk/gcloud/reference/compute/instances/create#--shielded-secure-boot?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;gcloud compute instances create&lt;/a&gt; command.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Updating existing instances&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You can also enable Secure Boot for instances that already exist, however, make sure that they are running a compatible system. If the driver installed on those machines is not signed with a properly configured key, the driver will not be loaded. To update Secure Boot configuration for existing VMs, you’ll have to follow the stop, update and restart procedure, as described in this &lt;a href="https://cloud.google.com/compute/shielded-vm/docs/modifying-shielded-vm?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;documentation page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Get started&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Make sure to visit our &lt;a href="https://cloud.google.com/compute/docs/gpus/install-drivers-gpu#self-signing-automated?utm_campaign=CDR_0x73f0e2c4_default_b407730070&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;documentation page&lt;/a&gt; to learn more about the process and follow our &lt;a href="https://github.com/GoogleCloudPlatform/compute-gpu-installation" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to stay up to date with other GPU automation news.&lt;/p&gt;

</description>
      <category>security</category>
      <category>googlecloud</category>
      <category>nvidia</category>
      <category>gpu</category>
    </item>
    <item>
      <title>Understanding Google Cloud’s Dynamic Workload Scheduler</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Tue, 01 Jul 2025 11:53:04 +0000</pubDate>
      <link>https://forem.com/googlecloud/understanding-google-clouds-dynamic-workload-scheduler-5p</link>
      <guid>https://forem.com/googlecloud/understanding-google-clouds-dynamic-workload-scheduler-5p</guid>
      <description>&lt;p&gt;In the age of artificial intelligence and machine learning, there is a constant need for powerful hardware like &lt;a href="https://cloud.google.com/compute/docs/gpus?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GPUs&lt;/a&gt; and &lt;a href="https://cloud.google.com/tpu?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;TPUs&lt;/a&gt;. Ideally, access to this hardware should be predictable and reliable. Resource availability shouldn’t be a blocker for your projects. If customers want to use a GPU, they should be provided with a GPU! After all, this is supposed to be one of the ideas behind cloud computing: to have resources available on demand. But with a limited supply of hardware, there is a need for a solution more sophisticated than simple “first come, first serve.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing DWS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Workload Scheduler (DWS)&lt;/strong&gt; is Google Cloud's innovative solution designed to optimize the allocation of high-demand, finite resources like GPUs and TPUs, ensuring that customer workloads can access the necessary hardware when needed. It directly addresses the supply and demand imbalance problem. On one hand, Google Cloud has customers asking for GPUs and TPUs to run their workloads. On the other hand, there’s a limited number of hardware resources that can be assigned to the customers. DWS is what balances customer demands against the finite resources of the cloud (which wants to &lt;em&gt;feel&lt;/em&gt; infinite).&lt;/p&gt;

&lt;p&gt;To the traditional model of on-demand provisioning, &lt;a href="https://cloud.google.com/solutions/spot-vms?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Spot instances&lt;/a&gt; and &lt;a href="https://cloud.google.com/compute/docs/instances/reservations-overview?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;reservations&lt;/a&gt;, DWS adds two simple, yet powerful provisioning methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/dws?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Flex Start mode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/compute/docs/instances/future-reservations-calendar-mode-overview?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Calendar mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, I’ll explain the benefits of each of these DWS methods and provide practical scenarios for when you might want to use them, helping you choose the best provisioning strategy for your specific workloads. Both methods are still in preview, so you can expect their availability and scope to improve once they enter general availability later this year.&lt;/p&gt;

&lt;p&gt;If you’d rather watch a video about Dynamic Workloads Scheduler — I’ve got you covered:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/uWiO00RVQP4"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Calendar mode
&lt;/h2&gt;

&lt;p&gt;Let’s start with &lt;a href="https://cloud.google.com/compute/docs/instances/create-future-reservations-calendar-mode?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Calendar mode&lt;/a&gt;, which is a bit simpler to understand. DWS Calendar Mode allows you to create &lt;a href="https://cloud.google.com/compute/docs/instances/future-reservations-overview?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;future reservations&lt;/a&gt; for the hardware you know you will need in advance. Booking rooms in a hotel is a great analogy here. You specify the &lt;strong&gt;range of dates&lt;/strong&gt;, &lt;strong&gt;location&lt;/strong&gt;, &lt;strong&gt;type&lt;/strong&gt; and &lt;strong&gt;quantity&lt;/strong&gt; of the hardware you need and you submit your request. Like a hotel, the system checks resource availability. It then books the resources you want to reserve. Once your future reservation is approved, all you need to do is wait for the starting date. Google Cloud creates a reservation for you on the start date that you can then consume however you want (&lt;a href="https://cloud.google.com/compute/docs/instances/reservations-consume?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GCE&lt;/a&gt;, &lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/consuming-reservations?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GKE&lt;/a&gt;, &lt;a href="https://cloud.google.com/vertex-ai/docs/training/use-reservations?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI&lt;/a&gt;, &lt;a href="https://cloud.google.com/vertex-ai/docs/workbench/instances/reservations?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Vertex AI Workbench&lt;/a&gt; and &lt;a href="https://cloud.google.com/batch/docs/create-run-job-reservation?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Batch&lt;/a&gt; - they can all consume reservations).&lt;/p&gt;

&lt;p&gt;Once the reservation time runs out, the system will reclaim the resources, so they can be allocated to other customers. Just like in a hotel, you pay for the time you had your reservation, even if you didn’t use it 100% of the time.&lt;/p&gt;

&lt;p&gt;Here are some facts about the DWS Calendar Mode reservations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The reservation period has a fixed length of 1 to 90 days.
&lt;/li&gt;
&lt;li&gt;Currently, GPUs require a 4 day lead time before the reservation can start. TPU reservations can be submitted 24 hours in advance of the desired start time.
&lt;/li&gt;
&lt;li&gt;Once your request is accepted, you will have to pay for the full reservation period, even if not used.
&lt;/li&gt;
&lt;li&gt;Once the reservation period ends, the resources are reclaimed.
&lt;/li&gt;
&lt;li&gt;Reserved resources are &lt;a href="https://cloud.google.com/ai-hypercomputer/docs/terminology#dense-deployment?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;physically close to each other&lt;/a&gt; to minimize network latency.
&lt;/li&gt;
&lt;li&gt;Calendar Mode reservations can be &lt;a href="https://cloud.google.com/compute/docs/instances/reservations-shared?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;shared&lt;/a&gt; with other projects.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/products/dws/pricing?e=48754805&amp;amp;utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;DWS has its own pricing&lt;/a&gt;, separate from other provisioning methods. (Usually cheaper than on-demand pricing).
&lt;/li&gt;
&lt;li&gt;No quota is consumed while using resources booked through Calendar Mode reservations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, what are the best scenarios for Calendar mode? If you…&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know how much resources you need
&lt;/li&gt;
&lt;li&gt;Know how long you need them for
&lt;/li&gt;
&lt;li&gt;Know when you want to start and finish your project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then DWS Calendar Mode is the solution for you. Whether it’s an ML training job, HPC simulation or expected spike in the number of inference requests (isn’t Black Friday great?) - the Calendar Mode has you covered.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;So what’s the difference between regular future reservations and Calendar Mode?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You might have seen that in Google Cloud, there are also &lt;a href="https://cloud.google.com/compute/docs/instances/future-reservations-overview?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;future reservations&lt;/a&gt; that are not related to DWS Calendar Mode. You can think of Calendar Mode reservations as a subset of the more generic future reservations. Every Calendar Mode reservation is a Future Reservation, but for a Future Reservation to be a Calendar Mode reservation, it needs to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured to auto-delete the reservation on expiry, even if it’s not consumed.
&lt;/li&gt;
&lt;li&gt;No longer than 90 days.
&lt;/li&gt;
&lt;li&gt;Limited to certain types of resources (see &lt;a href="https://cloud.google.com/compute/docs/instances/create-future-reservations-calendar-mode?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for up to date list)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally,  Calendar Mode comes with a handy assistant that helps you find available capacity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5lp241c2om9izr80kd6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5lp241c2om9izr80kd6.png" alt="Calendar Mode Assistant"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Flex start mode
&lt;/h2&gt;

&lt;p&gt;With Calendar mode being so great, what more may you need? Well, you don’t always have a schedule you need to keep. Sometimes you want your job finished as soon as possible. At other times, you don’t know how long it will take to complete the work. This is where Flex Start mode comes in. If Calendar mode works similar to a hotel, you can compare Flex Start mode to a restaurant.&lt;/p&gt;

&lt;p&gt;How does it work? You tell DWS that you need hardware, let’s say &lt;strong&gt;10x A4 machines&lt;/strong&gt;, to run a job that will take &lt;strong&gt;at most 6 days&lt;/strong&gt;. With that knowledge, DWS goes out to the Cloud to get you your 10 A4 machines. After some time (this is where the “flex” part comes from - it’s a flexible process) the system has the 10 A4 machines you need and provides them to you all at once. This 'all-or-nothing' approach ensures you receive the full requested capacity simultaneously. This way, you don’t have to worry about paying for unused 7 machines while you wait to create 3 more. You get all 10 at the same time. Once they are delivered to you, they will be yours until the specified time runs out, or you’re done with your task. If you release the resources before the time runs out, you pay only for the time you actually used them. Since there is no provisioning notification, ensure your workloads can start automatically upon machine creation.&lt;/p&gt;

&lt;p&gt;While Calendar mode was similar to booking rooms in a hotel, Flex Start is more akin to waiting for your order in a restaurant. You wait until your “order” is served and eat until you’re done, or the restaurant closes. If you change your mind before the order is fulfilled, you can cancel your request without any consequences. &lt;/p&gt;

&lt;p&gt;To summarize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flex Start mode requests hardware for specified periods of time from 1 minute to 7 days.
&lt;/li&gt;
&lt;li&gt;Requests are fulfilled as soon as possible. (Shorter requests tend to be fulfilled quicker)
&lt;/li&gt;
&lt;li&gt;You can cancel your request at any time; you only pay for what you used.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/products/dws/pricing?e=48754805#how-dws-pricing-works&amp;amp;utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;DWS Flex Start pricing&lt;/a&gt; offers discounts compared to on-demand provisioning.
&lt;/li&gt;
&lt;li&gt;Once the time limit of your request is reached, the resources are reclaimed.
&lt;/li&gt;
&lt;li&gt;Resources acquired through Flex Start mode consume the &lt;a href="https://cloud.google.com/compute/resource-usage#preemptible-quotas?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;preemptible quota&lt;/a&gt;, which is usually a lot higher than on-demand quota.
&lt;/li&gt;
&lt;li&gt;Works only for &lt;a href="https://cloud.google.com/compute/docs/accelerator-optimized-machines?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Accelerator-optimized machine series&lt;/a&gt; and &lt;a href="https://cloud.google.com/compute/docs/gpus/create-gpu-vm-general-purpose?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;N1 virtual machine (VM) instances with GPUs attached&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;You can't stop, suspend, or recreate the instances you create through Flex Start mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flex start mode works best if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You have a short (&amp;lt; 7 days) need for resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You want your job started as soon as possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You don’t know how long your task will take, and appreciate the flexibility to release resources early and only pay for actual usage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How to use it?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Flex Start mode works a bit differently in every supported product.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For &lt;strong&gt;Compute Engine&lt;/strong&gt;, it comes in the form of an all-or-nothing Managed Instance Group &lt;a href="https://cloud.google.com/compute/docs/instance-groups/create-resize-requests-mig?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;resize request&lt;/a&gt; with the maximum run duration specified.
&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Google Kubernetes Engine (GKE)&lt;/strong&gt;, it’s specified for a &lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/dws?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;workload or through scheduling tool&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Cloud&lt;/strong&gt; &lt;strong&gt;Batch&lt;/strong&gt;, it’s available for jobs running on &lt;a href="https://cloud.google.com/batch/docs/create-run-job-gpus#select-provisioning-method?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;specific machine types&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;For Vertex AI, specify FLEX_START as your scheduling strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Happy computing!
&lt;/h2&gt;

&lt;p&gt;When it comes to getting your hands on high-demand hardware for your advanced workloads, Google Cloud's Dynamic Workload Scheduler has you covered. With its Calendar and Flex Start modes, you get powerful and flexible solutions that truly fit your needs. By digging into these new provisioning methods, you can count on predictable, reliable, and efficient access to essential resources like GPUs and TPUs. This means your AI, ML, and HPC projects will run smoother than ever. &lt;a href="https://console.cloud.google.com/compute/futureReservations/add?utm_campaign=CDR_0x73f0e2c4_default_b423037559&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Try booking some powerful machines for your next project now&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>googlecloud</category>
      <category>tpu</category>
      <category>gpu</category>
    </item>
    <item>
      <title>Developing in the (Google) Cloud</title>
      <dc:creator>Maciej Strzelczyk</dc:creator>
      <pubDate>Thu, 26 Jun 2025 13:46:24 +0000</pubDate>
      <link>https://forem.com/googlecloud/developing-in-the-google-cloud-57c6</link>
      <guid>https://forem.com/googlecloud/developing-in-the-google-cloud-57c6</guid>
      <description>&lt;p&gt;As I entered the office today, it was clear that physical desktop computers are becoming a rarity. Most desks were equipped only with monitors, reflecting a significant shift in how many organizations, including Google, are approaching employee workstations. Historically, developers might have received both a desktop and a laptop. However, the trend is now towards providing only high-tier laptops, with heavy workloads and software development tasks offloaded to virtual workstations hosted in the cloud. This approach offers enhanced control over assets, improved security, and streamlined management for organizations.&lt;/p&gt;

&lt;p&gt;This cloud-centric approach offers substantial benefits for organizations aiming to equip their employees with powerful development environments without the complexities of procuring and maintaining physical desktops. Beyond the immediate advantage of remote work flexibility, where employees can be fully productive with just a laptop and a stable internet connection, cloud-based workstations offer significant scalability. They allow organizations to rapidly provision and de-provision resources as needed, ensuring developers always have access to the optimal computing power, including high-end GPU-accelerated environments that traditional laptops simply cannot provide for demanding industry needs.&lt;/p&gt;

&lt;p&gt;There are two ways your organization can leverage this model using Google Cloud Platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Compute Engine
&lt;/h2&gt;

&lt;p&gt;Google Compute Engine (GCE) provides an Infrastructure as a Service (IaaS) approach to creating virtual workstations through highly configurable virtual machines. This solution offers unparalleled flexibility, granting you complete control over virtually every aspect of your development environment. You can choose your preferred operating system, machine type (including CPU, memory, and specialized hardware), storage solutions, and install any software or tools required. This level of customization makes GCE an excellent choice for a variety of use cases, including:&lt;/p&gt;

&lt;h3&gt;
  
  
  Heavy graphics
&lt;/h3&gt;

&lt;p&gt;Once you create a virtual machine equipped with a powerful GPU, you can work with demanding graphical applications. Designing complicated systems and models, programming games or rendering videos - all this heavy lifting can happen in the datacenter, while your computer only has to handle the decoding of the remote desktop stream. To fully leverage the remote desktop experience of those setups, you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick a GPU that supports &lt;a href="https://cloud.google.com/compute/docs/gpus#gpu-virtual-workstations?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;NVIDIA RTX Virtual Workstations (vWS) for graphics workloads&lt;/a&gt;. That means L4, T4, P4 or P100 accelerators. A new &lt;a href="https://cloud.google.com/blog/products/compute/introducing-g4-vm-with-nvidia-rtx-pro-6000?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;G4 machine type&lt;/a&gt; hosting NVIDIA RTX PRO 6000 Blackwell cards should be available by the end of 2025.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/compute/docs/gpus/install-grid-drivers?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Install RTX-compatible GPU drivers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select the remote desktop software you want to use to access the machines. There are many available options like &lt;a href="https://anyware.hp.com/" rel="noopener noreferrer"&gt;HP Anywhere&lt;/a&gt;, &lt;a href="https://parsec.app/" rel="noopener noreferrer"&gt;Parsec&lt;/a&gt; or &lt;a href="https://moonlight-stream.org/" rel="noopener noreferrer"&gt;Moonlight&lt;/a&gt; to name a few.
&lt;/li&gt;
&lt;li&gt;Ensure the Internet connection on your client side is fast and reliable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Computation intensive (like AI)
&lt;/h3&gt;

&lt;p&gt;Google Cloud offers really powerful GPUs that can empower your team to effortlessly tackle many AI challenges. With no need for high-quality graphical interface, access to machines in this category can be even limited to an SSH tunnel. The developer can run their favourite IDE on their laptop, while executing the code remotely in the cloud. Depending on the GPU you pick, the pricing of such workstations will vary greatly. Good news though, a single machine can be easily shared between multiple developers with proper configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  General development
&lt;/h3&gt;

&lt;p&gt;Developers who don’t need GPU-powered machines to do their jobs, still can benefit from a remote, powerful environment. More RAM, CPUs and storage is really easy to obtain to exceed what even the best laptops can provide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerations
&lt;/h3&gt;

&lt;p&gt;When working with GCE VMs, it is crucial to pay special attention to both the security and cost optimization of these machines. Failing to properly configure these aspects can lead to vulnerabilities or unnecessary expenses. Here are some key considerations (this list is &lt;strong&gt;not exhaustive&lt;/strong&gt;):&lt;/p&gt;

&lt;h4&gt;
  
  
  Security Best Practices
&lt;/h4&gt;

&lt;p&gt;1) &lt;strong&gt;Service Accounts&lt;/strong&gt;: Avoid using the &lt;a href="https://cloud.google.com/compute/docs/access/service-accounts#compute_engine_service_account?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;default compute Service Account&lt;/a&gt;, which comes with an overly permissive Editor role. Instead, create new service accounts with the principle of least privilege, assigning only the minimal required permissions for your workloads. For individual users, consider creating dedicated service accounts.&lt;br&gt;&lt;br&gt;
2) &lt;strong&gt;Network Access&lt;/strong&gt;: Consider disabling external IPs for your VMs. For internet access, configure &lt;a href="https://cloud.google.com/nat/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud NAT&lt;/a&gt;. For secure remote access, leverage &lt;a href="https://cloud.google.com/network-connectivity/docs/vpn/concepts/overview?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud VPN&lt;/a&gt; or &lt;a href="https://cloud.google.com/security/products/iap?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Identity-Aware Proxy (IAP)&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
3) &lt;strong&gt;Firewall Policies&lt;/strong&gt;: Implement stringent &lt;a href="https://cloud.google.com/firewall/docs/firewall-policies-overview?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;firewall policies&lt;/a&gt; to control inbound and outbound traffic, ensuring only necessary ports and protocols are open.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cost Optimization Strategies
&lt;/h4&gt;

&lt;p&gt;1) &lt;strong&gt;Commitment-based Discounts&lt;/strong&gt;: Take advantage of &lt;a href="https://cloud.google.com/docs/cuds?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Committed Use Discounts (CUDs)&lt;/a&gt; for predictable workloads, which can substantially reduce costs over long-term commitments.&lt;br&gt;&lt;br&gt;
2) &lt;strong&gt;Automated Scheduling&lt;/strong&gt;: Implement &lt;a href="https://cloud.google.com/compute/docs/instances/schedule-instance-start-stop?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;VM instance scheduling&lt;/a&gt; to automatically stop workstations during off-hours (e.g., overnight or weekends), minimizing resource consumption when not in use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Cloud Workstations
&lt;/h2&gt;

&lt;p&gt;If all your team needs is the computation power of cloud instances and not a full graphical connection, then &lt;a href="https://cloud.google.com/workstations?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Workstations&lt;/a&gt; might be just for you (&lt;a href="https://www.youtube.com/watch?v=E1cblFqb8nk" rel="noopener noreferrer"&gt;video explainer&lt;/a&gt;). It’s a managed solution, which allows you to create virtual workstations that your team can connect to and use for development. Those instances can be based on many different &lt;a href="https://cloud.google.com/workstations/docs/available-machine-types?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;machine types&lt;/a&gt;, including &lt;a href="https://cloud.google.com/workstations/docs/available-gpus?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;GPU-accelerated ones&lt;/a&gt;. You can choose to use them through Code OSS (Visual Studio), multiple JetBrains IDEs through JetBrains Gateway or Posit Workbench (with RStudio Pro).&lt;/p&gt;

&lt;p&gt;Workstations allow you to &lt;a href="https://cloud.google.com/workstations/docs/customize-container-images?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;customize the developer environments&lt;/a&gt;, so that each new instance comes with all the necessary tools preinstalled. Users can be allowed to create and destroy their own environments, while you retain the control over the allowed configurations of those environments.&lt;/p&gt;

&lt;p&gt;Despite being a bit more expensive than “raw” Compute Engine instances, the managed Workstations might turn out to be cheaper in use than Compute Instances, as they allow you to &lt;a href="https://cloud.google.com/workstations/docs/create-configuration#define_machine_settings?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;configure&lt;/a&gt; auto-sleep and auto-shutdown settings, so resources are not wasted when the workstations are not used.&lt;/p&gt;

&lt;p&gt;Cloud Workstations offer a wide variety of &lt;a href="https://cloud.google.com/workstations/docs/customize-development-environment?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;customization options&lt;/a&gt; and &lt;a href="https://cloud.google.com/workstations/docs/set-up-security-best-practices?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;security configurations&lt;/a&gt;. While not as flexible as simple Virtual Machines, the Workstations might be more attractive due to easier management, strict control and out-of-the-box compatibility with popular coding solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  In summary
&lt;/h2&gt;

&lt;p&gt;Google Cloud offers virtual workstation solutions for all kinds of developer needs. Here’s a short summary table, highlighting various applications of GCE and Workstations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;
&lt;a href="https://cloud.google.com/products/compute?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Compute Engine&lt;/a&gt; (unmanaged VMs)&lt;/th&gt;
&lt;th&gt;&lt;a href="https://cloud.google.com/workstations/docs/overview?utm_campaign=CDR_0x73f0e2c4_default_b427179257&amp;amp;utm_medium=external&amp;amp;utm_source=blog" rel="noopener noreferrer"&gt;Cloud Workstations&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Graphical-heavy work&lt;/strong&gt; Designing Gaming Game development Video editing&lt;/td&gt;
&lt;td&gt;GPU-accelerated VMs offer great performance when paired with proper virtual workspace software.&lt;/td&gt;
&lt;td&gt;N/A - Cloud Workstations don’t support this kind of work.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;AI and HPC workloads&lt;/strong&gt; AI training AI inference GPU-powered simulations&lt;/td&gt;
&lt;td&gt;GPU-accelerated VMs can make use of every GPU-type available in Google Cloud. Sharing a big VM between multiple developers is a valid approach.&lt;/td&gt;
&lt;td&gt;Cloud Workstations support GPU-accelerated machine types, allowing developers to work on software that requires GPU-acceleration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;General workloads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;While regular VMs can work for hosting a workstation for this kind of applications, it might not be worth the management effort.&lt;/td&gt;
&lt;td&gt;Cloud Workstations work great as a platform for developers who need a remote cloud-based environment to work on their projects. With the majority of management hassle taken care of, you are free to just work on your project.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Embrace the future of development today by exploring the powerful virtual workstation solutions offered by Google Cloud. While Compute Engine provides unbridled flexibility, Cloud Workstations offer streamlined efficiency. Unlock enhanced productivity and simplified asset management for your team. Start your cloud development journey now and discover the perfect environment for your needs.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>remote</category>
      <category>gcp</category>
    </item>
  </channel>
</rss>
