Skip to content
Back to skills

Distributed Tuning

ASecurity

"Routes KerasTuner's chief/worker Oracle coordination over gRPC

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
businesspythonrustgorailsapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill distributed-tuning --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Distributed Tuning?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Distributed Tuning
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-distributed-tuning/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-distributed-tuning)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: distributed-tuning
id: distributed-tuning
description: "Routes KerasTuner's chief/worker Oracle coordination over gRPC
  using the KERASTUNER_ORACLE_IP, KERASTUNER_ORACLE_PORT, and
  KERASTUNER_TUNER_ID environment contract."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Distributed Tuning

Use this sub-skill when a KerasTuner search must coordinate multiple tuner
processes through a chief Oracle, or when a `KERASTUNER_ORACLE_*`/
`KERASTUNER_TUNER_ID` deployment is failing.

## Scope

- Configure the three distributed Oracle environment variables as one unit.
- Assign chief and worker roles, launch the gRPC service, and diagnose network
  and shared-storage prerequisites.
- Understand OracleClient request, status, reporting, and shutdown behavior.
- Keep distributed Oracle coordination separate from the model/search-space
  design handled by the main KerasTuner workflow.

Do not use this route for a local single-process search, CloudOracle-managed
distribution, or general `HyperParameters`/tuner selection. In particular,
the `Tuner` public contract supports only **single-worker** distribution
strategies; Oracle-level parallel tuning over its chief/worker RPC protocol is
not a promise that a multi-worker `distribution_strategy` is supported.

## Route in this order

1. Read [api-reference.md](references/api-reference.md) for the verified
   environment contract, role detection, RPC surface, and reporting semantics.
2. From the skill root, run `python sub-skills/distributed-tuning/scripts/check_distributed_env.py` before importing or constructing a
   distributed tuner. It only inspects environment variables; it never starts
   a server or opens a socket.
3. Follow [workflows.md](references/workflows.md) for the launch sequence,
   shared project directory, status handling, and orderly shutdown.
4. Use [troubleshooting.md](references/troubleshooting.md) for missing
   variables, accidental roles, connection stalls, filesystem divergence, and
   cleanup failures.

## Non-negotiable launch contract

Set all of these together on every participating process:

- `KERASTUNER_ORACLE_IP`: the address used both to bind the chief service and
  to reach it from workers.
- `KERASTUNER_ORACLE_PORT`: the same available TCP port for the chief service.
- `KERASTUNER_TUNER_ID`: a deliberate identifier, unique at the independent
  tuner/group coordination scope.

An ID containing the case-sensitive substring `chief` is treated as the chief
side. The chief starts `OracleServicer`; other IDs construct `OracleClient` and
proxy Oracle calls. A partial environment is invalid: KerasTuner raises
`RuntimeError` when the IP is set without the port or tuner ID. The bundled
checker is intentionally stricter and treats empty/whitespace values as
missing, including port/ID values supplied without an IP; do not bypass this
preflight because runtime role detection is key-presence based.

Use a reachable non-loopback address for different hosts, an open and reserved
port, the same `directory`/`project_name` on a shared writable filesystem, and
an environment where the `grpcio` runtime dependency is installed. The RPC
transport is insecure gRPC, so keep the address on a trusted network or behind
an appropriate network control; this protocol does not provide TLS.

## Role and lifecycle guardrails

- Start the same tuner program with the chief environment on exactly one
  process/group. Its `search()` path saves the Oracle and starts the
  `OracleServicer` server, which otherwise would not block the process.
- Start workers with the same Oracle IP/port and non-chief IDs. Clients wait
  for the chief service with `wait_for_ready=True` for up to 60 minutes per
  RPC; this tolerates startup races but does not repair a wrong address,
  blocked port, or an absent chief.
- Give independent tuner processes/groups distinct IDs. If a training backend
  groups processes into one multi-worker strategy, preserve that backend's
  required ID convention rather than inventing a second Oracle group.
- Keep the project directory shared and writable until all workers have
  finished. Do not let multiple processes independently delete it with
  `overwrite=True`.
- Let workers observe `STOPPED` and exit their search loop; do not kill the
  chief before ongoing trials and registered tuner IDs have drained. The
  chief's server wait loop exits after its stop signal and drain condition.

The test helper `keras_tuner.test_utils.mock_distribute` is evidence for the
environment protocol only. It patches `os.environ`, creates threads, and
picks a port for tests; it is not a production launcher or runtime dependency.

## Verification focus

A useful check must show: an entirely absent environment remains valid ordinary
local mode, no partial environment is accepted as ordinary local mode, and a
complete set is accepted without a socket or server; a chief ID is not confused
with a worker ID; and all participants refer to one reachable endpoint and one
shared project directory. Do not use the mock test helper as proof that a real
cross-host network or filesystem is configured.

Files in this skill

  • SKILL.md5 KB
  • references/api-reference.md6.5 KB
  • references/troubleshooting.md6.6 KB
  • references/workflows.md7.2 KB
  • scripts/check_distributed_env.py2.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.