Text Generation
MLX
Safetensors
English
NemotronH_Nano_Omni_Reasoning_V3
nemotron
multimodal
mamba2
Mixture of Experts
quantized
turboquant
apple-silicon
mlx-lm
text-tower-only
conversational
custom_code
3-bit
Instructions to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit
Run Hermes
hermes
- OpenClaw new
How to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- MLX LM
How to use majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "majentik/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-TurboQuant-MLX-3bit", "messages": [ {"role": "user", "content": "Hello"} ] }'
| # Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. | |
| # | |
| # NVIDIA CORPORATION and its licensors retain all intellectual property | |
| # and proprietary rights in and to this software, related documentation | |
| # and any modifications thereto. Any use, reproduction, disclosure or | |
| # distribution of this software and related documentation without an express | |
| # license agreement from NVIDIA CORPORATION is strictly prohibited. | |
| from dataclasses import dataclass | |
| from typing import Optional, NamedTuple, Union, List, Dict | |
| from transformers import PretrainedConfig | |
| class Resolution(NamedTuple): | |
| height: int | |
| width: int | |
| class RadioResource: | |
| url: str | |
| patch_size: int | |
| max_resolution: int | |
| preferred_resolution: Resolution | |
| vitdet_num_windowed: Optional[int] = None | |
| vitdet_num_global: Optional[int] = None | |
| RESOURCE_MAP = { | |
| # RADIOv2.5 | |
| "radio_v2.5-b": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio-v2.5-b_half.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=(768, 768), | |
| vitdet_num_global=4, | |
| ), | |
| "radio_v2.5-l": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio-v2.5-l_half.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=(768, 768), | |
| vitdet_num_global=4, | |
| ), | |
| "radio_v2.5-h": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v2.5-h.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=(768, 768), | |
| vitdet_num_global=4, | |
| ), | |
| "radio_v2.5-h-norm": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v2.5-h-norm.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=(768, 768), | |
| vitdet_num_global=4, | |
| ), | |
| "radio_v2.5-g": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v2.5-g.pth.tar?download=true", | |
| patch_size=14, | |
| max_resolution=1792, | |
| preferred_resolution=(896, 896), | |
| vitdet_num_global=8, | |
| ), | |
| # RADIO | |
| "radio_v2.1": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v2.1_bf16.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=Resolution(432, 432), | |
| vitdet_num_windowed=5, | |
| ), | |
| "radio_v2": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v2.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=Resolution(432, 432), | |
| vitdet_num_windowed=5, | |
| ), | |
| "radio_v1": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/radio_v1.pth.tar?download=true", | |
| patch_size=14, | |
| max_resolution=1050, | |
| preferred_resolution=Resolution(378, 378), | |
| ), | |
| # E-RADIO | |
| "e-radio_v2": RadioResource( | |
| "https://huggingface.co/nvidia/RADIO/resolve/main/eradio_v2.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=Resolution(512, 512), | |
| ), | |
| # C-RADIO | |
| "c-radio_v2.5-g": RadioResource( | |
| "https://huggingface.co/nvidia/C-RADIOv2-g/resolve/main/c-radio_v2-g_half.pth.tar", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=(768, 768), | |
| vitdet_num_global=8, | |
| ), | |
| "c-radio_v3-l": RadioResource( | |
| # NOTE: Currently, this model cannot be loaded via TorchHub. Instead, use the transformers API at https://huggingface.co/nvidia/C-RADIOv3-L | |
| # and accept the license terms. | |
| "https://huggingface.co/nvidia/C-RADIOv3-L/resolve/main/c-radio-v3_l_half.pth.tar?download=true", | |
| patch_size=16, | |
| max_resolution=2048, | |
| preferred_resolution=Resolution(512, 512), | |
| ), | |
| } | |
| DEFAULT_VERSION = "radio_v2.5-h" | |
| class RADIOConfig(PretrainedConfig): | |
| """Pretrained Hugging Face configuration for RADIO models.""" | |
| def __init__( | |
| self, | |
| args: Optional[dict] = None, | |
| version: Optional[str] = DEFAULT_VERSION, | |
| patch_size: Optional[int] = None, | |
| max_resolution: Optional[int] = None, | |
| preferred_resolution: Optional[Resolution] = None, | |
| adaptor_names: Union[str, List[str]] = None, | |
| adaptor_configs: Dict[str, Dict[str, int]] = None, | |
| vitdet_window_size: Optional[int] = None, | |
| feature_normalizer_config: Optional[dict] = None, | |
| inter_feature_normalizer_config: Optional[dict] = None, | |
| **kwargs, | |
| ): | |
| self.args = args | |
| for field in ["dtype", "amp_dtype"]: | |
| if self.args is not None and field in self.args: | |
| # Convert to a string in order to make it serializable. | |
| # For example for torch.float32 we will store "float32", | |
| # for "bfloat16" we will store "bfloat16". | |
| self.args[field] = str(args[field]).split(".")[-1] | |
| self.version = version | |
| resource = RESOURCE_MAP[version] | |
| self.patch_size = patch_size or resource.patch_size | |
| self.max_resolution = max_resolution or resource.max_resolution | |
| self.preferred_resolution = ( | |
| preferred_resolution or resource.preferred_resolution | |
| ) | |
| self.adaptor_names = adaptor_names | |
| self.adaptor_configs = adaptor_configs | |
| self.vitdet_window_size = vitdet_window_size | |
| self.feature_normalizer_config = feature_normalizer_config | |
| self.inter_feature_normalizer_config = inter_feature_normalizer_config | |
| super().__init__(**kwargs) |