Instructions to use nvidia/Nemotron-Mini-4B-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use nvidia/Nemotron-Mini-4B-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="nvidia/Nemotron-Mini-4B-Instruct")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("nvidia/Nemotron-Mini-4B-Instruct", dtype="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use nvidia/Nemotron-Mini-4B-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "nvidia/Nemotron-Mini-4B-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "nvidia/Nemotron-Mini-4B-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/nvidia/Nemotron-Mini-4B-Instruct
- SGLang
How to use nvidia/Nemotron-Mini-4B-Instruct with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "nvidia/Nemotron-Mini-4B-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "nvidia/Nemotron-Mini-4B-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "nvidia/Nemotron-Mini-4B-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "nvidia/Nemotron-Mini-4B-Instruct", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use nvidia/Nemotron-Mini-4B-Instruct with Docker Model Runner:
docker model run hf.co/nvidia/Nemotron-Mini-4B-Instruct
Minor issues with the chat template during fine-tuning
I attempted to do LoRA fine-tuning of this model and noticed some minor issues with the chat template that I had to work around.
For creating training samples, I did:
text = tokenizer.apply_chat_template(
[
system_role,
{"role": "user", "content": question},
{"role": "assistant", "content": output},
],
tokenize=False,
add_generation_prompt=False,
)
Unexpectedly I noticed an extra <extra_id_1>Assistantbeing added to the end. It's as if the logic thought I had set add_generation_prompt=True. This caused the trained model model to keep outputting <extra_id_1>Assistant after every line.
I assume instead of <extra_id_1>Assistantit should have appended the end of sentence token instead? (i.e. </s>).
Looking at the jinja template, it wasn't immediately obvious to me what happened. At the end of this line, there is an extra {{'<extra_id_1>Assistant\n'}} which may be the culprit.
Let me know if I can provide more details.
We had not considered the last turn being from "assistant" in the messages when designing the jinja template. We expect the last turn in the messages to be from "user", in which case <extra_id_1>Assistant\n is correctly appended at the end as model is trained to respond after that
For LoRA fine-tuning the model with question/response pairs, isn’t what I mentioned above the correct approach?
Basically the model sees question/response pairs in training, then for inference, the last turn is the user, where we add the extra_id_1Assistant token in the end so the model starts generating.