CertSafari
    Snowflake SnowPro Advanced: MLOps Engineer (MLA-B01)· Lessons

    Domain 5 · Lesson 17/17

    Sizing Warehouses and SPCS Compute Pools for ML Cost Efficiency

    Manage ML cost attribution and resource optimization.

    8 min read
    5.34% of exam
    6 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Choose between resizing, a Snowpark-optimized warehouse and other warehouse strategies for an ML workload
    • Explain per-second warehouse billing and its 60-second minimum
    • Size a compute pool with an instance family and MIN_NODES/MAX_NODES, and use AUTO_SUSPEND
    • Track compute pool credits and other SPCS costs in the ACCOUNT_USAGE and ORGANIZATION_USAGE views

    1.Warehouse sizing and billing for ML workloads

    Warehouse credits depend on three things: how many warehouses run, for how long, and at what size. Moving up one size roughly doubles both the compute and the hourly credit rate. Upsizing therefore only pays off if the job finishes in about half the time or less. Billing is per second with a 60-second minimum each time a warehouse starts or resumes. Suspended warehouses consume no credits. A warehouse that suspends and resumes within the first minute is charged again, because the 60-second minimum restarts on each resume.

    The performance guidance lists several warehouse strategies: reduce queues, resolve memory spillage, increase warehouse size, try query acceleration, optimize the warehouse cache, and limit concurrent queries. Memory spillage is the one that matters most for ML. When a warehouse runs out of memory, bytes spill onto storage and the query slows down considerably. A training stored procedure that runs on a single node is limited by memory rather than parallelism, and adding nodes does not help it.

    For that case, Snowflake offers Snowpark-optimized warehouses. Their default configuration provides 16x the memory per node of a standard warehouse. RESOURCE_CONSTRAINT selects the memory and CPU architecture, and higher memory tiers require a minimum warehouse size. These warehouses can take longer to create and resume, and workloads that don't use Snowpark may not benefit from them.

    Snowpark-optimized RESOURCE_CONSTRAINT options
    Memory (up to)RESOURCE_CONSTRAINT valuesMinimum warehouse size
    16GBMEMORY_1X, MEMORY_1X_x86XSMALL
    256GBMEMORY_16X, MEMORY_16X_x86M
    1TBMEMORY_64X, MEMORY_64X_x86L
    Creating a Snowpark-optimized warehousesql
    CREATE OR REPLACE WAREHOUSE snowpark_opt_wh WITH
      WAREHOUSE_SIZE = 'MEDIUM'
      WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED';

    Tuning is easier when each warehouse runs similar work. If a warehouse runs very different queries, the cost of a performance enhancement may be spent on queries that don't benefit from it. This is another reason to give ML training its own warehouse, and that separate warehouse can also carry its own cost tag.

    Checkpoint 1 of 5· Check yourself

    A single-node Snowpark training stored procedure on a standard warehouse spills heavily to storage. Which change is the documented fit?

    Checkpoint 2 of 5· Exam question

    A team sums `CREDITS_ATTRIBUTED_COMPUTE` from QUERY_ATTRIBUTION_HISTORY for a month on its ML warehouse and finds the total noticeably lower than the warehouse's credits in WAREHOUSE_METERING_HISTORY. What explains the gap?

    Sources123

    2.Sizing a compute pool: instance family and node limits

    A compute pool is the SPCS counterpart of a warehouse. It is an account-level collection of VM nodes. Instead of a size, you choose an instance family, which sets each node's vCPU, memory, storage and egress bandwidth, including whether the nodes have GPUs. You also set a minimum and maximum node count, and Snowflake autoscales between them. Cost follows directly from these settings: the number and type of nodes determine the credits consumed. Run SHOW COMPUTE POOL INSTANCE FAMILIES to see which families are available in your region.

    A one-node compute pool on the smallest CPU familysql
    CREATE COMPUTE POOL tutorial_compute_pool MIN_NODES = 1 MAX_NODES = 1 INSTANCE_FAMILY = CPU_X64_XS;

    The two node limits work in opposite directions. Raising MIN_NODES above 1 keeps nodes warm for bursty inference traffic, so you don't wait for autoscaling, but you pay for those nodes even when they are idle. MAX_NODES is a cost guardrail: it caps how far autoscaling can grow during a load spike or when a code bug requests more nodes than planned. Right-sizing the instance family has the biggest effect. A GPU family on a small model that barely uses the GPU costs GPU credits for CPU-sized work.

    Compute pool settings and their cost effect
    SettingWhat it controlsCost effect
    INSTANCE_FAMILYMachine type of each nodeSets the credit rate per node
    MIN_NODESNodes the pool launches withHigher values keep capacity ready but billed
    MAX_NODESCeiling for Snowflake autoscalingCaps runaway node growth
    AUTO_RESUMEStart a suspended pool when a service or job arrivesAllows the pool to stay suspended when unused

    Checkpoint 3 of 5· Match them up

    Match each compute pool setting to its role

    Tap a term, then the definition that fits it.

    Sources45

    3.Tracking and trimming SPCS compute pool costs

    A compute pool is billed whenever it is IDLE, ACTIVE, STOPPING or RESIZING. It is not billed while STARTING or SUSPENDED. A pool that sits idle overnight therefore keeps costing money, which is why the documentation's main optimization advice is to use AUTO_SUSPEND. AUTO_RESUME then starts the pool again when a service is created or called.

    To track pool credits, use ACCOUNT_USAGE.SNOWPARK_CONTAINER_SERVICES_HISTORY. It gives hourly credits per pool for the last 365 days, with up to 3 hours of latency. Because each row carries COMPUTE_POOL_NAME and CREDITS_USED, giving each team its own pool yields per-team credits directly. IS_EXCLUSIVE and APPLICATION_NAME identify pools created for an application. For combined reports, filter METERING_HISTORY or METERING_DAILY_HISTORY on service_type SNOWPARK_CONTAINER_SERVICES. At organization level, use the same filter on ORGANIZATION_USAGE METERING_DAILY_HISTORY.

    Compute is only one of three SPCS cost categories; the other two are storage and data transfer. Storage costs include the image repository (a stage), event-table logs, mounted stage volumes and block storage. Local node storage mounted as a volume costs nothing extra. Data transfer covers egress to other regions or the internet, which appears in DATA_TRANSFER_HISTORY under transfer_type SNOWPARK_CONTAINER_SERVICES. It also covers internal transfer between compute pools and warehouses caused by service functions, which appears in INTERNAL_DATA_TRANSFER_HISTORY. Data transfer is currently not billed on Google Cloud accounts.

    Checkpoint 4 of 5· Check yourself

    Finance wants monthly credits per ML team, and each team trains on its own compute pool. Which view gives this most directly?

    Checkpoint 5 of 5· Exam question

    A single application submits inference queries on behalf of marketing, risk, and support users, all using one application service user and one warehouse. Which technique lets cost reports separate the departments?

    Sources56

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.Suspending a warehouse quickly between short ML steps always saves credits.Why is that wrong?

      Each resume is billed for at least one minute, so suspending and resuming within the first minute leads to repeated minimum charges.

      Covered in Warehouse sizing and billing for ML workloads

    2. 2.A compute pool with no active services costs nothing.Why is that wrong?

      IDLE is a billed state. Only STARTING and SUSPENDED are free, so idle pools should use AUTO_SUSPEND.

      Covered in Tracking and trimming SPCS compute pool costs

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “approximately doubles the computing power and the number of credits billed per full hour that the warehouse runs”
      ↩︎ Warehouse sizing and billing for ML workloads
      “credits are billed per-second, with a 60-second (i.e. 1-minute) minimum”
      ↩︎ Warehouse sizing and billing for ML workloads
      “results in multiple charges because the 1-minute minimum starts over each time a warehouse is resumed”
      ↩︎ Exam trap 1
    2. 2.
      “a query runs substantially slower when a warehouse runs out of memory”
      ↩︎ Warehouse sizing and billing for ML workloads
      “the cost of a performance enhancement might be wasted on a query that does not benefit from the optimization”
      ↩︎ Warehouse sizing and billing for ML workloads
    3. 3.
      “The default configuration for a Snowpark-optimized warehouse provides 16x memory per node compared to a standard warehouse.”
      ↩︎ Warehouse sizing and billing for ML workloads
      “Snowpark-optimized warehouses are recommended for running Snowpark workloads such as code that has large memory requirements or dependencies on a specific CPU architecture.”
      ↩︎ Checkpoint
    4. 4.
      “Specifying an instance family when creating a compute pool is similar to specifying warehouse size”
      ↩︎ Sizing a compute pool: instance family and node limits
      “This approach ensures that additional nodes are readily available when needed, instead of waiting for autoscaling to start.”
      ↩︎ Sizing a compute pool: instance family and node limits
      “Setting a maximum node limit prevents an unexpectedly large number of nodes from being added to your compute pool by Snowflake autoscaling.”
      ↩︎ Checkpoint
    5. 5.
      “The number and type (instance family) of the nodes in the compute pool (see CREATE COMPUTE POOL) determine the credits it consumes”
      ↩︎ Sizing a compute pool: instance family and node limits
      “but not when it is in a STARTING or SUSPENDED state”
      ↩︎ Tracking and trimming SPCS compute pool costs
      “The costs associated with using Snowpark Container Services can be categorized into storage cost, compute pool cost, and data transfer cost.”
      ↩︎ Tracking and trimming SPCS compute pool costs
      “Data transfer costs are currently not billed for Snowflake accounts on Google Cloud.”
      ↩︎ Tracking and trimming SPCS compute pool costs
      “To optimize compute pool expenses, you should leverage the AUTO_SUSPEND feature”
      ↩︎ Exam trap 2
      “You incur charges for a compute pool in the IDLE, ACTIVE, STOPPING, or RESIZING state”
      ↩︎ Prediction
      “The SNOWPARK_CONTAINER_SERVICES_HISTORY view offers credit usage information (hourly consumption) exclusively for Snowpark Container Services.”
      ↩︎ Checkpoint

    Ready to test yourself?

    Practise the 19 questions on this subdomain.

    Spotted a mistake, or was something unclear? Tell us.