Skip to content

Berth v0.3.5

Choose a tag to compare

@github-actions github-actions released this 23 Oct 03:39
· 333 commits to main since this release
15da8c4

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/stop when that part is done, render with
    ComfyUI and collect the result from /history, and run unattended work at batch. 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 hermes installs the Berth skill for Hermes Agent, in
    $HERMES_HOME/skills/mlops/berth/ (~/.hermes when HERMES_HOME is unset). --target all includes
    Hermes when its home exists, and never creates it. Hermes Agent shows Hermes's
    config.yaml for the gateway and why its auxiliary tasks should stay on the main model.
  • berth daemon --gpu and berth service install --gpu take 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 to vfio-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 install creates 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. Run berth service install again to switch existing tasks
    (#165, reported by @azrael-229).
  • On Windows, berth service status shows 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 run no longer refuses because an engine on the other card
    is running. The holder check counts the switched card's own /dev/nvidiaN and DRM nodes, and counts
    the shared /dev/nvidiactl and /dev/nvidia-uvm only for a process that holds no other card. An
    engine started without CUDA_VISIBLE_DEVICES opens 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 N now 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.