Show resources on the example's training node

The example's `fit` is what a real training node looks like, so it is where
`resources={"cpus": 2}` belongs -- beside the `device="gpu"` it already
carries, since the two answer different questions about the same node.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-26 21:46:27 +02:00
co-authored by Claude Opus 5
parent 15a3c2ce62
commit f2dd1ffc34
+7
View File
@@ -19,6 +19,7 @@ from fluksio import Port, node
device="gpu",
device_policy="prefer",
timeout=600,
resources={"cpus": 2},
)
def fit(dataset, lr, epochs=25):
"""Train, reporting the loss as it goes.
@@ -28,6 +29,12 @@ def fit(dataset, lr, epochs=25):
why there is no `log_metric()` to call. `device="gpu"` with
`device_policy="prefer"` sends this to a worker carrying that label when
one is attached, and runs it here when none is.
`resources` is what a real training node needs and the rest of a flow does
not: two cores held for the length of the call, and a worker started with
thread limits saying so — otherwise a numerical library sizes itself to
every core on the machine, and a sweep of these starves the engine. A GPU
one would say `{"gpus": 1}` and hold the card exclusively.
"""
rows = json.loads(open(fluksio.load_artifact(dataset)).read())["rows"]
loss = 1.0