mirror of
https://github.com/TaterTotterson/microWakeWord-Trainer-Nvidia-Docker.git
synced 2026-08-12 07:55:33 -06:00
Release NVIDIA WakeWord Trainer v17
This commit is contained in:
@@ -22,7 +22,7 @@ docker pull ghcr.io/tatertotterson/microwakeword:latest
|
||||
Tagged releases also publish matching immutable image tags:
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/tatertotterson/microwakeword:v16
|
||||
docker pull ghcr.io/tatertotterson/microwakeword:v17
|
||||
```
|
||||
|
||||
The release tag must match `VERSION`. Update `WHATS_NEW.md` before tagging; the Docker workflow prepends it to GitHub's automatically generated release notes.
|
||||
@@ -32,7 +32,7 @@ Python 3.13 TensorFlow build for `sm_120`:
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/tatertotterson/microwakeword:blackwell
|
||||
docker pull ghcr.io/tatertotterson/microwakeword:v16-blackwell
|
||||
docker pull ghcr.io/tatertotterson/microwakeword:v17-blackwell
|
||||
```
|
||||
|
||||
Use the Blackwell image only for RTX 50-series cards. It includes the
|
||||
@@ -53,9 +53,9 @@ docker run -d \
|
||||
ghcr.io/tatertotterson/microwakeword:latest
|
||||
```
|
||||
|
||||
Use a version tag such as `ghcr.io/tatertotterson/microwakeword:v16` when you want to pin a known release instead of tracking `latest`.
|
||||
Use a version tag such as `ghcr.io/tatertotterson/microwakeword:v17` when you want to pin a known release instead of tracking `latest`.
|
||||
For RTX 50-series cards, use `ghcr.io/tatertotterson/microwakeword:blackwell`
|
||||
or a pinned tag such as `ghcr.io/tatertotterson/microwakeword:v16-blackwell`
|
||||
or a pinned tag such as `ghcr.io/tatertotterson/microwakeword:v17-blackwell`
|
||||
in the same `docker run` command.
|
||||
|
||||
The flags:
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
- Fixed a startup crash caused by newer pip-installed NVIDIA cuBLAS and cuDNN namespace packages not providing a module file path.
|
||||
- CUDA library discovery now works across both the standard NVIDIA and Blackwell images and safely allows startup when the optional libraries are unavailable.
|
||||
- Fixed the training-status endpoint crashing after a training log was created because its log-tail limits were missing.
|
||||
- Restored bounded, incremental training-log updates so the UI can continue showing live progress without repeatedly reading the entire log.
|
||||
|
||||
@@ -425,6 +425,39 @@ class AutoTrainTests(unittest.TestCase):
|
||||
self.assertEqual(trainer.AUTO_TRAIN_STATE["last_stt_device"], "cuda")
|
||||
self.assertEqual(trainer.AUTO_TRAIN_STATE["last_stt_compute_type"], "float16")
|
||||
|
||||
def test_train_status_reads_and_increments_training_log_tail(self):
|
||||
log_path = Path(self.tempdir.name) / "training.log"
|
||||
log_path.write_text("first\nsecond\nthird\n", encoding="utf-8")
|
||||
with trainer.STATE_LOCK:
|
||||
original_training = dict(trainer.STATE["training"])
|
||||
trainer.STATE["training"].update(
|
||||
{
|
||||
"log_path": str(log_path),
|
||||
"last_sent_tail": [],
|
||||
"last_log_size": 0,
|
||||
}
|
||||
)
|
||||
|
||||
try:
|
||||
with (
|
||||
patch.object(trainer, "TRAIN_LOG_TAIL_LINES", 2),
|
||||
patch.object(trainer, "TRAIN_LOG_MAX_BYTES", 1024),
|
||||
):
|
||||
first_status = trainer.train_status()
|
||||
self.assertEqual(first_status["training"]["log_lines"], ["second", "third"])
|
||||
self.assertEqual(first_status["training"]["log_text"], "second\nthird")
|
||||
|
||||
with log_path.open("a", encoding="utf-8") as log_file:
|
||||
log_file.write("fourth\n")
|
||||
|
||||
next_status = trainer.train_status()
|
||||
self.assertEqual(next_status["training"]["log_lines"], ["third", "fourth"])
|
||||
self.assertEqual(next_status["training"]["log_text"], "fourth")
|
||||
finally:
|
||||
with trainer.STATE_LOCK:
|
||||
trainer.STATE["training"].clear()
|
||||
trainer.STATE["training"].update(original_training)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -70,6 +70,8 @@ PIPER_CATALOG_CACHE_FILE = Path(
|
||||
str(DATA_DIR / ".cache" / "piper_voices_catalog.json"),
|
||||
)
|
||||
).resolve()
|
||||
TRAIN_LOG_TAIL_LINES = int(os.environ.get("REC_TRAIN_LOG_TAIL_LINES", "400"))
|
||||
TRAIN_LOG_MAX_BYTES = int(os.environ.get("REC_TRAIN_LOG_MAX_BYTES", str(512 * 1024)))
|
||||
|
||||
DATASET_CLEANUP_ARCHIVES = os.environ.get("REC_DATASET_CLEANUP_ARCHIVES", "false").lower() in ("1", "true", "yes", "y")
|
||||
DATASET_CLEANUP_INTERMEDIATE = os.environ.get("REC_DATASET_CLEANUP_INTERMEDIATE_FILES", "false").lower() in ("1", "true", "yes", "y")
|
||||
|
||||
Reference in New Issue
Block a user