Repository navigation
fix(server): declare the H100 class NV-Embed-v2 needs - #817
Merged
Merged
Conversation
NV-Embed-v2 runs out of memory on an L4 and on an A100 40GB and serves on an H100. The checkpoint's code builds its Mistral body from a float32 text config, so its weights take about 28 GB on the GPU, and a forward pass under the checkpoint's float16 autocast adds about 14 GB. The compatibility matrix reads a profile's GPU class from its name, and the bare model's default profile carries none. Add an h100 profile that extends default, with the memory measured through sie-server on one H100 80GB recorded beside it, so the matrix and GPU smoke tests have a declared class for the shape. The served shape is unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
nvidia/NV-Embed-v2runs out of memory on an L4 and on an A100 40GB in the published 0.10.1cuda12-defaultimage, and serves on an H100 80GB. The catalog gives no hint that it needs a large card. The compatibility matrix reads a profile's GPU class from hardware names in the profile name, and the bare model'sdefaultprofile has none, so the model shows asunspecified.Why it needs 80 GB. The checkpoint's code builds its Mistral body from
text_config, whosetorch_dtypeisfloat32. The weights therefore occupy about 28 GB on the GPU even though the checkpoint is stored in float16. Each forward pass under the checkpoint's float16 autocast adds about 14 GB.Measurements. These were taken through
sie-serveron one H100 80GB, with torch 2.9.1, transformers 4.57.6 and sentence-transformers 5.7.0, the versions in the 0.10.1 image. Values arenvidia-smimemory used.This matches the published-image runs:
Change. The PR adds an
h100profile that extendsdefaultand records these numbers beside it. The matrix and GPU smoke tests can then place the shape on its class.nvidia/NV-Embed-v2:h100appears with GPU classh100, and the matrix test asserts it. The served shape and thedefaultprofile are unchanged. As with the other hardware-named profiles, the name records the tested pairing and does not select a machine.Limit. The bare
nvidia/NV-Embed-v2route keeps an unspecified GPU class, because a profile nameddefaultcannot carry a hardware hint (gpu_class("default")isNoneby design). Giving a bare route its own class needs an explicit profile field. That is out of scope here.Validation.
KeyError: ('cuda12-default', 'nvidia/NV-Embed-v2:h100'). After it, the assertion passes.test_compatibility_matrix.py,test_bundle_coverage.py, thepackages/sie_server/tests/configsuite, the loader tests andtools/test_yaml_compatibility.pypass.Summary by CodeRabbit