docs: add self-hosted B300 devnote#213
Conversation
Signed-off-by: lipikaramaswamy <lramaswamy@nvidia.com>
636c458 to
15e13db
Compare
Signed-off-by: lipikaramaswamy <lramaswamy@nvidia.com>
Greptile SummaryThis PR adds a new developer note documenting how to run NeMo Anonymizer fully self-hosted on a single Brev B300 instance, covering the local vLLM Qwen endpoint, GLiNER reference server setup, Anonymizer Replace/Substitute configuration, and measured warm-batch throughput and cost results. It also adds a hero image and an entity-density distribution chart.
Confidence Score: 3/5The devnote content is generally solid, but two concrete defects need fixing before the page is reliably usable as a reproducibility guide. The sidebar nav title and the page H1 use different words, which readers will notice immediately. More consequentially, the bash startup command omits VLLM_DISABLED_KERNELS=FlashInferFP8ScaledMMLinearKernel even though the surrounding prose explicitly states the successful run required this flag on the B300; someone copying the command verbatim could end up with a different kernel path than was tested. Both mkdocs.yml (nav title) and docs/devnotes/posts/self-hosted-anonymizer-b300.md (bash startup command) need targeted fixes before merging. Important Files Changed
|
| - Developer Notes: | ||
| - devnotes/index.md | ||
| - "Introducing NeMo Anonymizer": devnotes/posts/anonymizer-intro.md | ||
| - "Running NeMo Anonymizer Fully Self-Hosted on One B300": devnotes/posts/self-hosted-anonymizer-b300.md |
There was a problem hiding this comment.
Nav title doesn't match page H1
The mkdocs.yml entry reads "Running NeMo Anonymizer Fully Self-Hosted on One B300" but the document's H1 is "Running NeMo Anonymizer Fully Contained on One B300". The word "Self-Hosted" vs "Contained" produces a visible mismatch: a reader sees one title in the sidebar and a different one when they land on the page. Given the file name (self-hosted-anonymizer-b300.md), the PR title, and the PR description all use "self-hosted", aligning the H1 to match the nav title (or vice-versa) would remove the inconsistency.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| ```bash | ||
| mkdir -p logs | ||
|
|
||
| CUDA_ROOT="$PWD/.venv/lib/python3.12/site-packages/nvidia/cu13" | ||
|
|
||
| CUDA_HOME="$CUDA_ROOT" \ | ||
| PATH="$CUDA_ROOT/bin:$PWD/.venv/bin:$PATH" \ | ||
| LD_LIBRARY_PATH="$CUDA_ROOT/lib:$CUDA_ROOT/lib64:${LD_LIBRARY_PATH:-}" \ | ||
| VLLM_USE_FLASHINFER_SAMPLER=0 \ | ||
| nohup .venv/bin/vllm serve nvidia/Qwen3.6-35B-A3B-NVFP4 \ | ||
| --served-model-name qwen-prod \ | ||
| --host 127.0.0.1 \ | ||
| --port 8001 \ | ||
| --max-model-len 8192 \ | ||
| --gpu-memory-utilization 0.45 \ | ||
| --max-num-seqs 32 \ | ||
| --attention-backend FLASH_ATTN \ | ||
| --trust-remote-code \ | ||
| > logs/qwen-vllm.log 2>&1 & | ||
| ``` |
There was a problem hiding this comment.
VLLM_DISABLED_KERNELS missing from reproducible command
The "Blackwell serving note" at line 149 states the successful run "also set VLLM_DISABLED_KERNELS=FlashInferFP8ScaledMMLinearKernel to avoid the FlashInfer FP8 scaled-MM path." That variable does not appear in the bash snippet above, so a reader following the command verbatim on a B300 may hit the FlashInfer FP8 path and get the run configuration that was explicitly avoided. Adding the variable to the snippet (alongside the existing VLLM_USE_FLASHINFER_SAMPLER=0) keeps the presented command consistent with what was actually executed.
Summary
Adds a developer note for running NeMo Anonymizer fully self-hosted on one Brev B300. The post covers the local vLLM Qwen endpoint, local GLiNER reference server, Anonymizer Replace/Substitute configuration, warm-batch throughput and cost results, and reproducibility notes. It also adds a hero image and entity-density chart.
Type of Change
Testing
make testpasses locallymake checkpasses locally (format + lint + typecheck + lock-check)Docs-only change; no tests were added.
make checkexited 0; its advisorytystep emitted existing diagnostics and is ignored by the make target.Documentation
make docs-buildpasses locallyRelated Issues
Depends on #203