Create a future reservation request in calendar mode Stay organized with collections Save and categorize content based on your preferences.
This document explains how to create a future reservation request in calendarmode to reserve GPU, H4D, or TPU resources for your virtual machine (VM)instances. Use these requests to obtain high-demand resources for creating VMsthat you plan to run for up to 90 days.
You can use future reservation requests in calendar mode to reserve resources torun the following workloads:
Model pre-training jobs
Model fine-tuning jobs
High performance computing (HPC) simulation workloads
Short-term increases in inference workloads
After Google Cloud approves your request, your reserved resources becomeavailable for you to create GPU, H4D, or TPU VMs on your specified delivery dateand time. For the duration of your reservation period, only your project, andany projects that you specify when you create the request, have access to thereserved resources. You can share the reserved resources with up to 100 projectsthat are within the same organization as your project. To learn more about therequirements and limitations that you apply when you create a request incalendar mode, seeFuture reservation requests in calendar mode overview.
Important: You can reserve up to 80 GPU VMs or 256 H4D VMs in a singlerequest in calendar mode. To reserve more than the maximum number of VMs or toreserve the resources for longer than 90 days, contact youraccount team or thesales team.Before you begin
- If you can't use future reservation requests in calendar mode, then youmight not be eligible to access and use this feature. In this case, contact youraccount team or thesales team.
- To share your reserved capacity with other projects within yourorganization, verify that the project in which you want to create futurereservation requests in calendar mode isallowed to create shared reservations. Otherwise, you will encounter errors.
- If you haven't already, set upauthentication. Authentication verifies your identity for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
Install the Google Cloud CLI. After installation,initialize the Google Cloud CLI by running the following command:
gcloudinit
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI. After installation,initialize the Google Cloud CLI by running the following command:
gcloudinit
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.For more information, seeAuthenticate for using REST in the Google Cloud authentication documentation.
Required roles
To get the permissions that you need to create a future reservation request in calendar mode, ask your administrator to grant you theCompute Future Reservation User (roles/compute.futureReservationUser) IAM role on the project. For more information about granting roles, seeManage access to projects, folders, and organizations.
This predefined role contains the permissions required to create a future reservation request in calendar mode. To see the exact permissions that are required, expand theRequired permissions section:
Required permissions
The following permissions are required to create a future reservation request in calendar mode:
- To create a future reservation request:
compute.futureReservations.createon the project - To let Compute Engine automatically create reservations:
compute.reservations.createon the project - To view the availability of resources on a future date:
compute.advice.calendarModeon the project
You might also be able to get these permissions withcustom roles or otherpredefined roles.
Create a future reservation request in calendar mode
To create a future reservation request in calendar mode, complete the followingsteps:
View resource future availability. View future availability for the GPUVMs, H4D VMs, or TPUs that you want to reserve. Then, when you create arequest, specify the number, type, and reservation duration of the resourcesthat you confirmed as available. Google Cloud is more likely to approve yourrequest if you supply this information.
Note: If you create a request by using the Google Cloud console, then skip thisstep. You can view GPU VM, H4D VM, or TPU future availability while youcreate the request.For instructions, seeView resource future availability.
Create a reservation request. Create and submit a future reservationrequest in calendar mode for GPU VMs, H4D VMs, or TPUs. If you cansuccessfully create a request, then Google Cloud approves it within aminute.
For instructions, seeCreate a request for GPU VMs, H4D VMs, or TPUs.
View resource future availability
Preview — View future availability for GPU VMs, H4D VMs, or TPUs
This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of theService Specific Terms. Pre-GA features are available "as is" and might have limited support. For more information, see thelaunch stage descriptions.
You can view future availability for GPU VMs, H4D VMs, or TPUs in a region asfollows:
For GPU or H4D VMs, up to 60 days in advance
For TPUs, up to 120 days in advance
To view GPU VM, H4D VM, or TPU future availability in a region, select one ofthe following options:
Console
You can view GPU VM, H4D VM, or TPU future availability in a region when youcreate a future reservation request in calendar mode. For more information,seeCreate a request for GPU VMs, H4D VMs, or TPUs in thisdocument.
gcloud
To view GPU VM, H4D VM, or TPU future availability in a region, use thegcloud beta compute advice calendar-mode command.Based on the resources that you want to view, include the following flags:
To view GPU VM or H4D VM availability, include the
--vm-countand--machine-typeflags:gcloud beta compute advice calendar-mode \--vm-count=NUMBER_OF_VMS \--machine-type=MACHINE_TYPE \ --region=REGION \ --start-time-range=from=FROM_START_TIME,to=TO_START_TIME \ --end-time-range=from=FROM_END_TIME,to=TO_END_TIMETo view TPU availability, include the
--chip-countand--tpu-versionflags:gcloud beta compute advice calendar-mode \--chip-count=NUMBER_OF_CHIPS \--tpu-version=TPU_VERSION \ --region=REGION \ --start-time-range=from=FROM_START_TIME,to=TO_START_TIME \ --end-time-range=from=FROM_END_TIME,to=TO_END_TIME
Replace the following:
NUMBER_OF_VMS: the number of VMs to reserve. Thevalue must be at least1and no greater than80for GPU VMs or256for H4D VMs.MACHINE_TYPE: the GPU or H4D machine type to reserve.Specify one of the following values:For A4 machine types:
a4-highgpu-8gFor A3 Ultra machine types:
a3-ultragpu-8gFor A3 Mega machine types:
a3-megagpu-8gFor A3 High machine types with 8 GPUs:
a3-highgpu-8gFor H4D HPC machine types: SeeH4D machine types
NUMBER_OF_CHIPS: the number of TPU chips to reserve.The value must be1,4,8,16,32,64,128,256,512,or1024.TPU_VERSION: the TPU version to reserve. Specify oneof the following values:For TPU7x:
TPU7XFor TPU v6e:
V6EFor TPU v5p:
V5PFor TPU v5e:
V5E
If you specify a TPU v5e, then you must include the
--workload-typeflag.Set this flag to the type of workloads that you want to run on the TPUs:For workloads that handle large amounts of data in single ormultiple operations, such as machine learning (ML) trainingworkloads, specify
BATCH.For workloads that handle concurrent requests and require minimalnetwork latency, such as ML inference workloads, specify
Note: If you specifySERVING.SERVING, then you can only reserve 1, 4, or 8TPU v5e chips.
REGION: the region where to reserve GPU VMs, H4D VMs,or TPUs. To check which regions and zones are supported, seeLimitations.FROM_START_TIMEandTO_START_TIME:the earliest and latest dates that you want to reserve capacity on.Format these dates as RFC 3339 timestamps:YYYY-MM-DDTHH:MM:SSOFFSETReplace the following:
YYYY-MM-DD: a date formatted as a four-digityear, two-digit month, and a two-digit day, separated by hyphens(-).HH:MM:SS: a time formatted as a two-digit hourusing a 24-hour time, two-digit minutes, and two-digit seconds,separated by colons (:).OFFSET: the time zone formatted as an offset ofCoordinated Universal Time (UTC).For example, to use the Pacific Standard Time (PST), specify-08:00. To use no offset, specifyZ.
FROM_END_TIMEandTO_END_TIME: theearliest and latest dates that you want your capacity reservation to endon. Format these dates as RFC 3339 timestamps. If you want to specify arange of durations for your reservation period instead of end times,then replace the--end-time-rangeflag with the--duration-rangeflag.
The output is similar to the following:
- recommendationsPerSpec: spec:endTime: '2026-02-10T00:00:00Z'location: zones/us-central1-a otherLocations: zones/us-central1-b: details: Recommendation in this zone is possible. status: RECOMMENDED zones/us-central1-c: details: Temporarily no free capacity in this zone in the requested time window. status: NO_CAPACITY zones/us-central1-f: details: This machine family is not supported in this zone. status: NOT_SUPPORTED recommendationId: 0d3f005d-f952-4fce-96f2-6af25e1591eb recommendationType: FUTURE_RESERVATIONstartTime: '2026-02-07T00:00:00Z'If your requested resources are available, then the output contains thestartTime,endTime, andlocation fields. These fields specify theearliest start time, the latest end time, and the zones when resources areavailable.
REST
To view GPU VM, H4D VM, or TPU future availability in a region, make aGETrequest to thebetaadvice.calendarMode method.Based on the resources that you want to view, include the following fieldsin the request body:
To view GPU VM or H4D VM availability, include the
instanceCountandmachineTypefields:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/calendarMode{ "futureResourcesSpecs": { "spec": { "targetResources": { "specificSkuResources": {"instanceCount": "NUMBER_OF_VMS","machineType": "MACHINE_TYPE" } }, "timeRangeSpec": { "startTimeNotEarlierThan": "FROM_START_TIME", "startTimeNotLaterThan": "TO_START_TIME", "endTimeNotEarlierThan": "FROM_END_TIME", "endTimeNotLaterThan": "TO_END_TIME" } } }}To view TPU availability, include the
acceleratorCountandvmFamilyfields:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/calendarMode{ "futureResourcesSpecs": { "spec": { "targetResources": { "aggregateResources": {"acceleratorCount": "NUMBER_OF_CHIPS","vmFamily": "TPU_VERSION" } }, "timeRangeSpec": { "startTimeNotEarlierThan": "FROM_START_TIME", "startTimeNotLaterThan": "TO_START_TIME", "endTimeNotEarlierThan": "FROM_END_TIME", "endTimeNotLaterThan": "TO_END_TIME" } } }}
Replace the following:
PROJECT_ID: the ID of the project where you want toreserve resources.REGION: the region where you want to reserve GPU VMs,H4D VMs, or TPUs. To check the regions and zones that are supported, seeLimitations.NUMBER_OF_VMS: the number of GPU or H4D VMs toreserve. For GPU VMs, the value must be between1and80.For H4D VMs, the value must be between1and256.MACHINE_TYPE: the GPU or H4D machine type to reserve.Specify one of the following values:For A4 machine types:
a4-highgpu-8gFor A3 Ultra machine types:
a3-ultragpu-8gFor A3 Mega machine types:
a3-megagpu-8gFor A3 High machine types with 8 GPUs:
a3-highgpu-8gFor H4D HPC machine types: SeeH4D machine types
NUMBER_OF_CHIPS: the number of TPU chips to reserve.The value must be1,4,8,16,32,64,128,256,512,or1024.TPU_VERSION: the TPU version to reserve. Specify oneof the following values:For TPU7x:
VM_FAMILY_CLOUD_TPU_POD_SLICE_TPU7XFor TPU v6e:
VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6EFor TPU v5p:
VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5PFor TPU v5e:
VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP
If you specify a TPU v5e, then, in the
aggregateResourcesfield, youmust include theworkloadTypefield.Set this field to the type of workloads that you want to run on theTPUs:For workloads that handle large amounts of data in single ormultiple operations, such as machine learning (ML) trainingworkloads, specify
BATCH.For workloads that handle concurrent requests and require minimalnetwork latency, such as ML inference workloads, specify
Note: If you specifySERVING.SERVING, then you can only reserve 1, 4, or 8TPU v5e chips.
FROM_START_TIMEandTO_START_TIME:the earliest and latest dates that you want to reserve capacity on.Format these dates as RFC 3339 timestamps:YYYY-MM-DDTHH:MM:SSOFFSETReplace the following:
YYYY-MM-DD: a date formatted as a 4-digityear, 2-digit month, and a 2-digit day, separated by hyphens(-).HH:MM:SS: a time formatted as a 2-digit hourusing a 24-hour time, 2-digit minutes, and 2-digit seconds,separated by colons (:).OFFSET: the time zone formatted as an offset ofCoordinated Universal Time (UTC).For example, to use the Pacific Standard Time (PST), specify-08:00. To use no offset, specifyZ.
FROM_END_TIMEandTO_END_TIME: theearliest and latest dates that you want your capacity reservation to endon. Format these dates as RFC 3339 timestamps. If you want to specify arange of durations for your reservation period instead of end times,then replace theendTimeNotEarlierThanandendTimeNotLaterThanfields with theminDurationandmaxDurationfields.
The output is similar to the following:
{ "recommendations": [ { "recommendationsPerSpec": { "spec": { "recommendationId": "a21a2fa0-72c7-4105-8179-88de5409890b", "recommendationType": "FUTURE_RESERVATION","startTime": "2026-02-07T00:00:00Z","endTime": "2026-02-10T00:00:00Z", "otherLocations": { "zones/us-central1-b": { "status": "RECOMMENDED", "details": "Recommendation in this zone is possible." }, "zones/us-central1-c": { "status": "NO_CAPACITY", "details": "Temporarily no free capacity in this zone in the requested time window." }, "zones/us-central1-f": { "status": "NOT_SUPPORTED", "details": "This machine family is not supported in this zone." } },"location": "zones/us-central1-a" } } } ]}If your requested resources are available, then the output contains thestartTime,endTime, andlocation fields. These fields specify theearliest start time, the latest end time, and the zones when resources areavailable.
Create a request for GPU VMs, H4D VMs, or TPUs
When you create a future reservation request in calendar mode, you can onlyspecify a reservation period as follows:
Start time: based on the resources that you want to reserve, you mustspecify a start time that is at least one of the following values from whenyou create and submit a request:
For GPU and H4D VMs, 87 hours (3 days and 15 hours)
For TPUs, 6 hours
Duration: you can reserve resources for a minimum of 24 hours and amaximum of 90 days.
To create a request by using an existing GPU or H4D VM as reference, use theGoogle Cloud console. Otherwise, select one of the following options:
Console
In the Google Cloud console, go to theReservations page.
Click theFuture reservations tab.
ClickCreate future reservation. TheCreate a future reservation pageappears and theHardware configuration pane is selected.
In theConfigurations section, specify the properties of theGPU VMs, H4D VMs, or TPUs that you want to reserve by doing one of thefollowing:
To specify GPU VM, H4D VM, or TPU properties directly, complete thefollowing steps:
SelectSpecify machine type.
Click theGPUs,TPUs, orCompute-optimized tab, andthen select asupportedGPU machine type, H4D machine type, or TPU version.
To specify GPU or H4D VM properties by using an existing VM asreference, selectUse existing VM, and then select the VM.
If you specified a TPU v5e (CT5LP) in the previous step, then, intheTPU v5 workload type list, select one of the following options:
To run workloads on the TPUs that handle large amounts of data insingle or multiple operations, such as ML training workloads, selectBatch.
To run workloads on the TPUs that handle concurrent requests andrequire minimal network latency, such as ML inference workloads,selectServing.
Note: If you selectServing, then you can only reserve 1, 4, or8 TPU v5e chips.
In theSearch for capacity section, complete the following steps:
In theRegion andZone lists, select the region and zonewhere you want to reserve resources.
In theTotal capacity needed field (when reserving GPU or H4DVMs) orNumber of chips list (when reserving TPUs), specify thenumber of GPU VMs, H4D VMs, or TPU chips to reserve. You can specifythe following values:
For GPU VMs, a value between
1and80For H4D VMs, a value between
1and256For TPU chips, a value of
1,4,8,16,32,64,128,256,512, or1024
In theStart time list, select the start time for your request.
Optional: In theChoose your start date flexibility list, selecthow exact your start date needs to be.
In theReservation duration field, specify for how long you wantto reserve resources.
ClickSearch for capacity. Then, in theAvailable capacitytable, select one of the available options that contain the type,number, and reservation period of the GPU VMs, H4D VMs, or TPUs toreserve.
ClickNext.
In theShare type section, select the projects to share yourrequested capacity with:
To use the reserved capacity only within your project, selectLocal.
To share the reserved capacity with other projects, selectShared, clickAdd projects, and then follow the prompts to select theprojects.
ClickNext.
In theFuture reservation name field, enter a name for the request.
In theReservation name field, enter the name of the reservationthat Compute Engine automatically creates to provision yourrequested capacity.
ClickCreate.
gcloud
To create a future reservation request in calendar mode and submit it forreview, use thegcloud compute future-reservations create command.Based on the resources that you want to reserve, include the followingflags:
To reserve GPU or H4D VMs, include the
--total-count,--machine-type, and--deployment-type=DENSEflags:gcloud compute future-reservations createFUTURE_RESERVATION_NAME \ --auto-delete-auto-created-reservations \--total-count=NUMBER_OF_VMS \--machine-type=MACHINE_TYPE \--deployment-type=DENSE \ --planning-status=SUBMITTED \ --require-specific-reservation \ --reservation-mode=CALENDAR \ --reservation-name=RESERVATION_NAME \ --share-setting=SHARE_TYPE \ --start-time=START_TIME \ --end-time=END_TIME \ --zone=ZONETo reserve TPUs, include the
--chip-countand--tpu-versionflags:gcloud compute future-reservations createFUTURE_RESERVATION_NAME \ --auto-delete-auto-created-reservations \--chip-count=NUMBER_OF_CHIPS \--tpu-version=TPU_VERSION \ --planning-status=SUBMITTED \ --require-specific-reservation \ --reservation-mode=CALENDAR \ --reservation-name=RESERVATION_NAME \ --share-setting=SHARE_TYPE \ --start-time=START_TIME \ --end-time=END_TIME \ --zone=ZONE
Replace the following:
FUTURE_RESERVATION_NAME: the name of the request.NUMBER_OF_VMS: the number of GPU or H4D VMs toreserve:For GPU VMs, the value must be between
1and80.For H4D VMs, the value must be between
1and256.
Specify a number of VMs that is equal or lower than the number of VMsthat youconfirmed as available.
MACHINE_TYPE: the GPU or H4D machine type to reserve.NUMBER_OF_CHIPS: the number of TPU chips to reserve.Specify a value equal to or lower than the number of chips that youconfirmed as available. The value must be one ofthe following:1,4,8,16,32,64,128,256,512, or1024.TPU_VERSION: the TPU version to reserve. If youspecify a TPU v5e (V5E), then you must include the--workload-typeflagto specify type of workloads to run on the TPUs.RESERVATION_NAME: the name of the reservation thatCompute Engine automatically creates to provision your requestedcapacity.SHARE_TYPE: whether other projects in yourorganization can consume the reserved capacity. Specify one of thefollowing values:To use capacity only within your project:
localTo share capacity with other projects:
projects
If you specify
Important: You can only specify the share type and shared projects whenyou create a request. You can't modify these settings after submission.projects, then you must include the--share-withflagset to a comma-separated list of project IDs—for example,project-1,project-2. You can specify up to 100 projects within yourorganization. Don't include your project ID in this list. You canconsume the reserved capacity by default.START_TIME: the start time of the request, which youmust format as an RFC 3339 timestamp.END_TIME: the end time of your reservation period,which you must format as an RFC 3339 timestamp. If you want to specify aduration, in seconds, for your reservation period instead of an endtime, then replace the--end-timeflag with the--durationflag.ZONE: the zone where you want to reserve resources.
REST
To create a future reservation request in calendar mode and submit it forreview, make aPOST request to thefutureReservations.insert method.Based on the resources that you want to reserve, include the followingfields in the request body:
To reserve GPU or H4D VMs, include the
totalCountandmachineTypefields, as well as thedeploymentTypefield set toDENSE:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{ "name": "FUTURE_RESERVATION_NAME", "autoDeleteAutoCreatedReservations": true,"deploymentType": "DENSE", "planningStatus": "SUBMITTED", "reservationMode": "CALENDAR", "reservationName": "RESERVATION_NAME", "shareSettings": { "shareType": "SHARE_TYPE" }, "specificReservationRequired": true, "specificSkuProperties": {"totalCount":NUMBER_OF_VMS,"instanceProperties": { "machineType": "MACHINE_TYPE" } }, "timeWindow": { "startTime": "START_TIME", "endTime": "END_TIME" }}To reserve TPUs, include the
acceleratorCountandvmFamilyfields:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{ "name": "FUTURE_RESERVATION_NAME", "autoDeleteAutoCreatedReservations": true, "planningStatus": "SUBMITTED", "reservationMode": "CALENDAR", "reservationName": "RESERVATION_NAME", "shareSettings": { "shareType": "SHARE_TYPE" }, "specificReservationRequired": true, "aggregateReservation": { "reservedResources": [ { "accelerator": {"acceleratorCount":NUMBER_OF_CHIPS } } ],"vmFamily": "TPU_VERSION" }, "timeWindow": { "startTime": "START_TIME", "endTime": "END_TIME" }}
Replace the following:
PROJECT_ID: the ID of the project where you want tocreate the request.ZONE: the zone where you want to reserve resources.FUTURE_RESERVATION_NAME: the name of the request.RESERVATION_NAME: the name of the reservation thatCompute Engine automatically creates to provision your requestedcapacity.SHARE_TYPE: whether other projects in yourorganization can consume the reserved capacity. Specify one of thefollowing values:To use capacity only within your project:
LOCALTo share capacity with other projects:
SPECIFIC_PROJECTS
If you specify
Important: You can only specify the share type and shared projects whenyou create a request. You can't modify these settings after submission.SPECIFIC_PROJECTS, then, in theshareSettingsfield,you must include theprojectMapfieldto specify the projects to share the capacity with. You can specify upto 100 projects within your organization. Don't specify your project ID.You can consume the reserved capacity by default.For example, to share the requested capacity with two other projects,include the following:
"shareSettings": { "shareType": "SPECIFIC_PROJECTS","projectMap": { "CONSUMER_PROJECT_ID_1": { "projectId": "CONSUMER_PROJECT_ID_1" }, "CONSUMER_PROJECT_ID_2": { "projectId": "CONSUMER_PROJECT_ID_2" } }}Replace
CONSUMER_PROJECT_ID_1andCONSUMER_PROJECT_ID_2with the IDs of two projectsthat you want to allow to consume the requested capacity.NUMBER_OF_VMS: the number of GPU or H4D VMs toreserve:For GPU VMs, the value must be between
1and80.For H4D VMs, the value must be between
1and256.
Specify a number of VMs that is equal or lower than the number of VMsthat youconfirmed as available.
MACHINE_TYPE: the GPU or H4D machine type to reserve.NUMBER_OF_CHIPS: the number of TPU chips to reserve.Specify a value equal to or lower than the number of chips that youconfirmed as available. The value must be one ofthe following:1,4,8,16,32,64,128,256,512, or1024.TPU_VERSION: the TPU version to reserve. If youspecify a TPU v5e (VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP), then, intheaggregateResourcesfield, you must include theworkloadTypefield to specify the type of workloads to run on the TPUs.START_TIME: the start time of the request, which youmust format as an RFC 3339 timestamp.END_TIME: the end time of your reservation period,which you must format as an RFC 3339 timestamp. If you want to specify aduration, in seconds, for your reservation period instead of an endtime, then replace theendTimefield with thedurationfield.
What's next
For GPU or H4D VMs, consume an auto-created reservation in Compute Engine:
Consume an auto-created reservation for GPU VMs or TPUs inVertex AI:
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-17 UTC.