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.
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.
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.
Transfer time decides whether overflow pays off, so measure it rather than estimating it.
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.
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.
Compare completion time from the moment the trigger fires, not run time. For a single job:
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.
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.
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.
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
GMI Cloud helps you architect, deploy, optimize, and scale your AI strategies
