Repository navigation
Berth v0.3.5
A box with two NVIDIA cards can pass one card to a VM while the other keeps serving: berthd follows its
card by PCI address (--gpu 0000:02:00.0), starts while that card is in the VM, and berth vfio run no
longer counts engines on the other card as holders. Multi-GPU stays experimental, one berthd per card.
Hermes Agent joins the agents berth skill install covers, with a setup page, and the skill now teaches
any agent to run workflows across engines on one card. On Windows, logon tasks start without a console
window and berth service status reads them right, both reported by @azrael-229. Run berth service install again on Windows to switch existing tasks.
Added
- The Berth skill teaches an agent to run workflows across engines through the gateway: hand a task to
another model by name, give the card back with/v1/berth/stopwhen that part is done, render with
ComfyUI and collect the result from/history, and run unattended work atbatch. A gateway test runs
that loop (an agent's model, strata, ComfyUI, the agent's model again) and checks three clean handoffs. berth skill install --target hermesinstalls the Berth skill for Hermes Agent, in
$HERMES_HOME/skills/mlops/berth/(~/.hermeswhenHERMES_HOMEis unset).--target allincludes
Hermes when its home exists, and never creates it. Hermes Agent shows Hermes's
config.yamlfor the gateway and why its auxiliary tasks should stay on the main model.berth daemon --gpuandberth service install --gputake an NVIDIA card's PCI address
(--gpu 0000:02:00.0) as well as an index. berthd follows that card from the first reading, and it
starts while the card is bound tovfio-pci: it shows the card as passed through and governs it once
the card is back. With an index, berthd still refuses to start without its card.
Fixed
- On Windows, the logon tasks
berth service installcreates start without a console window. Each
task runs a small wscript launcher in the state directory (units\<unit>.vbs), which starts berth
hidden with its output on the unit's log. Runberth service installagain to switch existing tasks
(#165, reported by @azrael-229). - On Windows,
berth service statusshows a running task as running. It read the next run time, which
is N/A for a logon task, instead of the status (#166,
reported by @azrael-229). - A berthd that starts with its card already in a VM names the card by its PCI address in
berth status
and in what waiting requests read. Before, both said gpu0, which on a two-card box can be the other card. - On a box with two NVIDIA cards,
berth vfio runno longer refuses because an engine on the other card
is running. The holder check counts the switched card's own/dev/nvidiaNand DRM nodes, and counts
the shared/dev/nvidiactland/dev/nvidia-uvmonly for a process that holds no other card. An
engine started withoutCUDA_VISIBLE_DEVICESopens both cards, so it is still named, and the refusal
says how to pin it. - On a box with more than one NVIDIA card, berthd keeps governing its own card when another card is passed
through to a VM. nvidia-smi renumbers the cards that stay, so--gpu Nnow picks the card on the first reading
only, and from then on berthd follows that card's PCI address. Before, the daemon for the card left on the host
read a frozen copy of its old index, and the daemon for the card in the VM could read the other card as its own.