Model-Specific Deployment Considerations#
Some NIM LLM and VLM containers, including the Model-Free NIMs, need extra profile selection or startup settings beyond the standard Get Started path. Use this page for those models.
Important
Check the version of the NIM you are deploying. This page only covers NIMs for the current release version. Refer to the previous versions of the documentation for NIMs that have already been released.
For generic profile selection, refer to Model Profiles and Selection. For validated GPU and precision combinations, refer to the Support Matrix for NIMs. Check the Release Notes for the requirements that apply to your image version.
Muse Glimmer#
muse-glimmer reasons before it answers every request, and its container
enforces the cache-directory permission step that the Get Started path lists as
optional. Account for both before you follow the standard quickstart.
Cache Permissions Are Required#
The muse-glimmer container checks the mounted cache directory during startup
and exits if the directory is not writable by the container user. A cache
created with mkdir -p alone fails that check about one second after the
container starts:
ERROR: Cache directory /opt/nim/.cache is not accessible by the container user (UID=1000, GID=0).
Apply the cache-permission step from configuration
before you start the container. For muse-glimmer, this step is required:
export LOCAL_NIM_CACHE=~/.cache/nim/muse-glimmer
mkdir -p "$LOCAL_NIM_CACHE"
chmod -R a+rwxt "$LOCAL_NIM_CACHE"
As an alternative that needs no chmod, run the container as your own user in
the root group by adding -u $(id -u):0 to the docker run command.
Reasoning Is Always On#
muse-glimmer emits a reasoning section on every request. For
/v1/chat/completions, read reasoning text from message.reasoning_content,
or from delta.reasoning_content when streaming, and read the answer from
message.content. This container uses SGLang’s reasoning_content field
instead of the reasoning field shown in vLLM examples. For the Messages
response format, refer to Messages (Anthropic-compatible).
Reasoning cannot be turned off. chat_template_kwargs.enable_thinking,
thinking, and reasoning_effort: "none" have no effect on this model.
To reduce the amount of reasoning, set reasoning_strength in
chat_template_kwargs. The packaged chat template accepts low, medium,
high, and xhigh, and defaults to high.
Budget Enough Output Tokens#
Reasoning tokens count against max_tokens. A request with a small budget
spends the whole budget inside the reasoning section and returns an empty
content with finish_reason: "length". Chat examples elsewhere in this
documentation that use 64 to 256 output tokens return no answer text on
muse-glimmer for this reason.
Use a max_tokens value of at least 1024 for chat and Messages requests, or
lower reasoning_strength when the budget must stay small. The following
request sets both and reads the two fields separately:
curl -s http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "meta/muse-glimmer",
"messages": [{"role": "user", "content": "Hello! How are you?"}],
"max_tokens": 1024,
"chat_template_kwargs": {"reasoning_strength": "low"}
}' | jq '.choices[0] | {content: .message.content, reasoning_content: .message.reasoning_content, finish_reason}'
Use the served model name that GET /v1/models reports for your image in the
model field.
A stop sequence is matched inside the reasoning section as well as in the
answer, so a short stop string can end the response before any answer text is
produced. Constrained output has its own limitations with this model. Refer to
the muse-glimmer entries in the Release Notes.
Nemotron 3.5 Bolt E4B#
The nvcr.io/nim/nvidia/nemotron-3.5-bolt-e4b-4gb:2.1.4 image sets NIM_PASSTHROUGH_ARGS
to the following value, which turns on tool calling, reasoning parsing, and
reasoning by default:
--enable-auto-tool-choice --tool-call-parser gemma4 --reasoning-parser gemma4 --default-chat-template-kwargs {\"enable_thinking\":true}
If you set NIM_PASSTHROUGH_ARGS, your value replaces this one. Include these
flags in your value to keep these features. Refer to
Advanced Configuration for argument precedence and
Custom Parsers and Chat Templates for parser options. To turn off reasoning
for a request, set "chat_template_kwargs": {"enable_thinking": false}.
The profile includes a DFlash draft model and enables speculative decoding by default. To turn it off or change its settings, refer to Speculative Decoding.
If you start the container from a model store, which you create with
create-model-store and pass in NIM_MODEL_PATH, NIM 2.1.4 does not apply
the DFlash and batching settings of the profile. To keep them, save the
following content as runtime_config.json at the root of the model store
before you start the container:
{"speculative_config": {"method": "dflash", "model": "dflash", "num_speculative_tokens": 7, "attention_backend": "flash_attn"}, "max_num_seqs": 256, "max_num_batched_tokens": 2048}
When you select the profile with NIM_MODEL_PROFILE, including from the
offline cache, NIM applies these settings without this step. Refer to
Air-Gap Deployment for both methods.
On NVIDIA RTX PRO 4500 Blackwell Server Edition (32 GB), keep concurrency at 16 or lower for prompts of about 8,000 tokens. At 32 concurrent requests, time to first token increases sharply.
With audio input, include a text instruction such as “Transcribe the speech”. Without one, the model responds to the spoken content itself, and the reply varies between requests. For the request format, refer to Image, Audio, and Video Input.