|
| 1 | +# Docker validation scope |
| 2 | + |
| 3 | +Results apply to the named revision/image and environment. Use |
| 4 | +[docker.md](docker.md) for setup and test commands. No Cosmos or LIBERO assets |
| 5 | +were downloaded for the 2026-09-11 checks below. |
| 6 | + |
| 7 | +## Current checks (2026-09-11) |
| 8 | + |
| 9 | +The standard Wan image was built from `24d88ec6712f53e6c925d8ada7a50badbfbd6811`. |
| 10 | +Its local image ID was |
| 11 | +`sha256:4a7059711b90df4fd0c8ef757fa675d6061b48ebe91bfcbbaf1d5081ff3952d5`. |
| 12 | + |
| 13 | +| Check | Result and scope | |
| 14 | +| --- | --- | |
| 15 | +| Build and CPU checks | Actual CUDA image built; pip, serve CLI and Ruff passed. **1,990 CPU tests** passed; **12 Docker integration tests** passed separately. | |
| 16 | +| Additional CPU tests | All **38** non-GPU tests in `test_tri_system_smoke.py`, excluded by `docker-check`, passed separately. | |
| 17 | +| Dependency locking | `make docker-lock` resolved 118 packages and reproduced the committed file exactly in an isolated checkout. `--upgrade` resolved/wrote successfully; three changed packages were installed in a disposable container and passed pip/Ruff and 1,990 CPU tests. The repository lock stayed unchanged; no full upgraded-image build was claimed. | |
| 18 | +| Full offline delivery | The complete 9 GB compressed CUDA bundle was exported using schema 3, transferred to the offline H100 and loaded with its bundled importer. Checksums and image layers/config matched across Docker 29.8/containerd and 28.1.1/overlay2. | |
| 19 | +| Runtime compatibility | Real GPU compiler/backward/FusedAdam checks passed via `docker exec` before and after restart with `OPENWAM_CUDA_COMPAT=1`. | |
| 20 | +| GPU regressions | **7** lightweight GPU-related cases passed with the RAS adjustment below: five use real CUDA tensors and two use simulated dispatch inputs. These cover attention dispatch, train/deploy consistency and RoPE migration without downloaded checkpoints. | |
| 21 | +| Serving | Existing RoboTwin checkpoint: container-local bridge health/prediction/reset passed. Host-to-bridge access timed out on this server. The documented host-network overlay passed real ping/prediction/reset from the development machine over an SSH tunnel, including `OPENWAM_SERVER_URL`; predictions contained 20 action values. | |
| 22 | +| Training/resume | Four H100s and four existing real RoboTwin episodes: initial training used the source-mounted development shell entrypoint; a new image-only container restored completed step-10 state, ran steps 11–20 and exited 0. Both phases explicitly used `NCCL_RAS_ENABLE=0` and `NCCL_NVLS_ENABLE=0`. | |
| 23 | + |
| 24 | +The H100 host used driver 550.54.14, Toolkit 1.18.1 and kernel 5.4.0. |
| 25 | +Training used 583 timesteps / 579 windows, about 6.02B trainable parameters, |
| 26 | +BF16, ZeRO-2, batch size 1 per GPU, gradient checkpointing, CPU initialization |
| 27 | +and no optimizer offload. Four optimizer shards and four RNG files were |
| 28 | +verified; full state was 102.3 GiB. Final weights were 23.1 GiB and differed |
| 29 | +from step 10; losses and gradient norms were finite. Debug mode used constant LR. |
| 30 | + |
| 31 | +**Logging limitation:** the first container completed unsaved step 11 before |
| 32 | +receiving the stop signal. Resume correctly restarted at 11, but the append-only |
| 33 | +CSV retained both step-11 records. The strict no-duplicate-log assertion failed; |
| 34 | +an independent artifact verifier confirmed recovery while retaining this |
| 35 | +limitation. This does not establish clean, deduplicated metrics after rollback. |
| 36 | + |
| 37 | +## RAS shutdown fix found by GPU testing |
| 38 | + |
| 39 | +With NSS user/group lookup preloaded, both GPU workers completed the smoke |
| 40 | +calculations, then rank 0 exited with SIGSEGV. Disabling NVLS or enabling CUDA |
| 41 | +compatibility alone did not fix it. Disabling either NSS preload or NCCL RAS |
| 42 | +allowed a clean exit. The image now retains NSS and defaults `NCCL_RAS_ENABLE=0`. |
| 43 | + |
| 44 | +The locally rebuilt fix image `openwam:24d88ec-ras-fix`, ID |
| 45 | +`sha256:ab59032106f82f8f7df914298367fc0d6e5e38025a765f869c131460e7cc034b`, |
| 46 | +passed pip/Ruff, 1,990 CPU tests and 12 Docker integration tests. The actual |
| 47 | +rebuilt image was then transferred to H100 over an SSH-forwarded local registry; |
| 48 | +its filesystem layers and runtime configuration matched the local build. With |
| 49 | +no RAS override, the default two-GPU smoke completed BF16, compiled backward, |
| 50 | +FusedAdam and NCCL all-reduce, and the launcher exited **0**. This verifies the |
| 51 | +image default, including process shutdown. Earlier GPU regression and training |
| 52 | +checks used an equivalent ENV-only image or an explicit RAS setting. |
| 53 | + |
| 54 | +## CI and remaining scope |
| 55 | + |
| 56 | +The original revision's [PR Docker CI](https://github.com/OpenWAM-Official/OpenWAM/actions/runs/34576398602) |
| 57 | +passed. Its [push run](https://github.com/OpenWAM-Official/OpenWAM/actions/runs/34576395292) |
| 58 | +first failed during Ubuntu index download with `Hash Sum mismatch`, before tests; |
| 59 | +its second attempt passed. These CI runs predate the RAS fix. |
| 60 | + |
| 61 | +Not validated: Cosmos image/GPU execution, LIBERO download-to-training workflow, |
| 62 | +full-dataset or long-running training, convergence/benchmark quality, changing-LR |
| 63 | +scheduler recovery, bitwise equality to uninterrupted training, multi-node/RDMA, |
| 64 | +or a broader GPU/driver matrix. CPU CI cannot establish these properties. |
| 65 | + |
| 66 | +The earlier `9ef0cd9` H100 acceptance and local review-image records remain in |
| 67 | +Git history; [its original CUDA CI](https://github.com/KraHsu/OpenWAM-Official/actions/runs/34466639632) |
| 68 | +also passed. Two H100s ran out of memory for the historical training setup; |
| 69 | +four-GPU initialization required the host-specific NVLS workaround. |
0 commit comments