Skip to main content

Fan-out / fan-in

Submit many jobs at once with submit_many() and have them all write to one shared output bucket (fan-in). Submission.replace() varies a single field off a shared base, so a sweep stays concise.

import anycloud
from anycloud import Submission

ac = anycloud.Client()
results = ac.bucket("sweep-results") # shared output bucket (fan-in)

base = Submission(image="worker:latest", gpu="h100:8", output=results)
jobs = ac.submit_many([
base.replace(env={"SHARD": str(i)}) for i in range(8)
])
jobs.wait() # raises JobGroupError if any job fails
print(jobs.ids)

Heterogeneous fan-out — different images writing to the same bucket:

jobs = ac.submit_many([
Submission(image="features:latest", output=results),
Submission(image="labels:latest", output=results),
])
jobs.wait()

Handle partial failures instead of raising:

submissions = [base.replace(env={"SHARD": str(i)}) for i in range(8)]
jobs = ac.submit_many(submissions, return_exceptions=True)
jobs.wait() # awaits only the successful jobs
for index, exc in jobs.errors:
print(f"submission {index} failed: {exc}")

See submit_many() Parameters, JobGroup, and Partial failures.