• Compute
  • Customers
  • Pricing
Sign In
More Blog Posts
XDiscordLinkedInYouTube

Products

  • GPUs
  • Inference
  • Studio

Developers

  • Model library
  • Documentation
  • Glossary

Company

  • About Us
  • Blog
  • Events
  • Partnership
  • Scale
  • Career
  • Ambassador program
  • Mission & Vision

Popular models

    Stay in the loop

    By submitting, you acknowledge that we may collect and use the information you provide, which may include personal information.

    XDiscordLinkedInYouTube

    Copyright ©2026 All rights reserved.

    Privacy PolicyTerms of UseLegal Documentation
    More Blog Posts
    Other

    How Can You Test Whether a Provider Can Move Queued Jobs to Cloud GPUs When Your Own GPUs Are Full, Including Data Transfer and Failure Handling?

    November 01, 2026

    A queued job that leaves a full on-prem cluster passes five marks: it starts waiting, its data and image land in the cloud, it starts on cloud GPUs, it finishes, and its results are back where your team reads them. Testing a provider means timing all five on real jobs, then breaking the path on purpose to see where each job ends up. GMI Cloud's Managed GPU Cluster, now in early access, is built for organizations in this position: it lets teams scale across GMI Cloud or private infrastructure, runs managed clusters in both GMI Cloud and BYOS environments under one management experience, and puts dedicated H200 worker nodes on the cloud side.

    A passing drill has three outcomes. The moved job finishes sooner than it would have by waiting locally, with transfer time counted. Its outputs agree with a local run of the same job. And each injected failure leaves the job in a state you can explain, whether finished, retrying under a cap, or back in the local queue, with its output committed once. GMI support reviews and provisions cluster and node requests, so the drill runs against a standing cloud pool sized ahead of your peaks, on owned nodes that are already onboarded. That makes GMI a fit for teams with their own GPUs who need extra capacity for independent, containerized jobs.

    Decide what "full" means and who acts on it

    Write the trigger as a rule before the drill starts. "Full" can mean a queue wait above a threshold for a job class, no free GPUs of a required type, or a deadline that local capacity cannot meet. Then record who acts when the rule fires, because the test differs by dispatch path:

    Dispatch path Who moves the job What the drill measures
    Operator-driven An engineer resubmits the job to the cloud pool after checking the trigger Decision time, resubmission steps, and handling errors
    Policy-driven A scheduler or workflow rule you configure places eligible jobs on the cloud pool when the trigger fires Placement accuracy, ineligible jobs never moving, and behavior when both pools are busy

    Score the two paths separately and label every result by path, so a smooth manual run is never read as evidence for automated placement, or the reverse. On the policy-driven path, the rule lives in whatever job queue or workflow orchestrator you already use, set up to submit to a second Kubernetes cluster; the drill tests that rule, not the tool that holds it.

    On both paths, the local queue entry is held or withdrawn before the cloud submission goes out, keeps the same job ID, and is released back to the local queue only when the cloud side has rejected the submission or shows no job under that ID. If the submission response is lost, the entry stays held until the cloud job's state is known. Include one run where local GPUs free up at the moment of dispatch and one where the submission response is dropped, and confirm the job executes only once in both.

    Choose jobs that can travel

    Overflow works for jobs that are independent once started: batch inference, evaluation runs, data preprocessing, hyperparameter sweeps, and single-node fine-tunes. Synchronous multi-node training split between your site and the cloud is a poor candidate, since every step would wait on a wide-area link. A whole training run can move, but as a unit on one side.

    For each candidate class, record input and output size, image size, typical runtime, and whether the data may leave your site. Pick three classes for the drill: one with small inputs, one with large inputs, and one tagged restricted that must never move. The restricted job is your control.

    Stage data and images before the clock matters

    Transfer time decides whether overflow pays off, so measure it rather than estimating it.

    1. Images. Pull the job image on a cloud node ahead of time and compare its digest with the on-prem copy. A cold pull of a large image belongs in the timeline if it happens during the drill.
    2. Inputs. Copy inputs to cloud storage with checksums, record sustained throughput rather than peak on the link production transfers will use (VPN or private circuit), and note how the job reads them, whether from a mounted volume or by copying to local disk at start.
    3. Shared datasets. Data that many jobs read is best kept warm in cloud storage and refreshed on a schedule, so each moved job carries only its own inputs.
    4. Outputs. Agree where results land and how they come back: copied to on-prem storage, verified by checksum, then marked complete in your job tracker.

    Run the job, return the results, release the capacity

    Run each moved job with the same image, inputs, parameters, and precision as a local reference run. Compare outputs by checksum for jobs that are deterministic across both environments, and by your evaluation metric within a set tolerance for the rest. Then check that the result arrived on-prem, the tracker shows one committed output for the job, and the cloud resources it used are released or back in the pool.

    Managed clusters on GMI Cloud are requested in the console, and extra worker nodes for an existing cluster go through Node Requests. Size the standing pool from your peak queue history, and place node requests ahead of known peaks such as release deadlines. Billing is pay-as-you-go by the minute, or prepaid.

    Break it on purpose

    Failure handling is the part a smooth demo never shows. Two preconditions come first. Once a cloud run starts, it should not depend on on-prem services such as data mounts or authentication. And whoever returns a job to the local queue, your scheduler or an operator, stops the cloud attempt first so it cannot commit a result later. Then inject each failure once in an isolated drill and compare what happened with the target outcome:

    Injected failure Target outcome Evidence to keep
    Link drops during input transfer Transfer resumes or restarts against checksums; the job never starts on partial data Transfer log, checksum results
    Link drops while the job runs The job keeps running in the cloud, and results wait for return until the link is back Job log, return timestamps
    Cloud pool is busy The job waits in a visible queue or stays local, without repeated dispatch attempts Queue state on both sides
    Job fails in the cloud It retries per policy up to a cap, then your scheduler or operator returns it to the local queue with its error Retry count, error, final state
    Result return fails Results stay in cloud storage until a verified copy exists on-prem Copy log, checksums, cleanup time
    Restricted job meets the trigger It never moves Scheduler or operator decision record

    After each drill, trace every job ID through its attempts. A pass means each job reached a final state you can explain and its output was committed exactly once. A job with no completion that is still queued or retrying is not lost, so read its attempt log before calling it one. Two committed outputs for one ID fail the drill, and the attempt IDs, commit timestamps, and logs show whether a second attempt kept running or a single attempt repeated its commit.

    Score time and cost

    Compare completion time from the moment the trigger fires, not run time. For a single job:

    • Local path: remaining local queue wait + local run time
    • Cloud path: dispatch time + input transfer + image pull and startup + cloud queue wait + cloud run time + result return

    Assume an effective link of 5 Gbps, a 4-hour run on either side, 9 hours of remaining local wait, 15 minutes of cloud queue wait, 10 minutes to dispatch, and an image already cached on the cloud pool, with container startup, checksums, and tracker commits small enough to leave out. With 2 TB of inputs, transfer takes about 53 minutes and a 40 GB result returns in about a minute, so the cloud path finishes in roughly 5.3 hours against 13 hours locally. With 40 TB of inputs, transfer alone takes about 18 hours, and that job is better left waiting unless its data already sits in cloud storage. Running the same arithmetic over a week of real queue history shows which job classes belong in the overflow rule.

    For cost, put every component on one row: cloud GPU time while the job runs and while a warm pool waits, cloud storage for staged data and network transfer as their own lines next to GPU time, engineering time for operator-driven moves, and retries. Divide by jobs completed and returned, not jobs dispatched.

    FAQ

    How many jobs should the drill include?

    Run each chosen job class several times on both paths, until the spread in transfer and queue times stops shifting as you add runs, and include at least one real peak period. Inject each failure at least once for every class it affects.

    Can a moved job's checkpoint resume on-prem?

    It can when the checkpoint holds the full training state, including model and optimizer state, scheduler state, step count, and random number generator state, and the local hardware and software stack can load it. A checksum on return shows the file arrived intact. Test it in the drill: stop a moved job partway, return its last checkpoint, resume locally, and compare the loss or metric curve with an uninterrupted run against a tolerance set beforehand.

    Plan an overflow drill with our engineers

    Send GMI Cloud's team your queue history, candidate job classes, and data sizes to scope a standing cloud pool and an overflow drill around them during early access. You can see how cluster and node requests are tracked on the Requests page in the console.

    Colin Mo

    Build AI Without Limits

    GMI Cloud helps you architect, deploy, optimize, and scale your AI strategies

    FAQ

    Run each chosen job class several times on both paths, until the spread in transfer and queue times stops shifting as you add runs, and include at least one real peak period. Inject each failure at least once for every class it affects.

    Ready to build?

    Explore powerful AI models and launch your project in just a few clicks.

    Get Started