Instructions to use VertexAGI/amethyst-1.5-mini with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use VertexAGI/amethyst-1.5-mini with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="VertexAGI/amethyst-1.5-mini") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("VertexAGI/amethyst-1.5-mini") model = AutoModelForMultimodalLM.from_pretrained("VertexAGI/amethyst-1.5-mini", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - MLX
How to use VertexAGI/amethyst-1.5-mini 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("VertexAGI/amethyst-1.5-mini") 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
- llama.cpp
How to use VertexAGI/amethyst-1.5-mini with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf VertexAGI/amethyst-1.5-mini:Q4_K_M # Run inference directly in the terminal: llama cli -hf VertexAGI/amethyst-1.5-mini:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf VertexAGI/amethyst-1.5-mini:Q4_K_M # Run inference directly in the terminal: llama cli -hf VertexAGI/amethyst-1.5-mini:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf VertexAGI/amethyst-1.5-mini:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf VertexAGI/amethyst-1.5-mini:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf VertexAGI/amethyst-1.5-mini:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf VertexAGI/amethyst-1.5-mini:Q4_K_M
Use Docker
docker model run hf.co/VertexAGI/amethyst-1.5-mini:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use VertexAGI/amethyst-1.5-mini with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "VertexAGI/amethyst-1.5-mini" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "VertexAGI/amethyst-1.5-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/VertexAGI/amethyst-1.5-mini:Q4_K_M
- SGLang
How to use VertexAGI/amethyst-1.5-mini 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 "VertexAGI/amethyst-1.5-mini" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "VertexAGI/amethyst-1.5-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "VertexAGI/amethyst-1.5-mini" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "VertexAGI/amethyst-1.5-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use VertexAGI/amethyst-1.5-mini with Ollama:
ollama run hf.co/VertexAGI/amethyst-1.5-mini:Q4_K_M
- Unsloth Desktop
- MLX LM
How to use VertexAGI/amethyst-1.5-mini with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "VertexAGI/amethyst-1.5-mini"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "VertexAGI/amethyst-1.5-mini" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "VertexAGI/amethyst-1.5-mini", "messages": [ {"role": "user", "content": "Hello"} ] }' - Docker Model Runner
How to use VertexAGI/amethyst-1.5-mini with Docker Model Runner:
docker model run hf.co/VertexAGI/amethyst-1.5-mini:Q4_K_M
- Lemonade
How to use VertexAGI/amethyst-1.5-mini with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull VertexAGI/amethyst-1.5-mini:Q4_K_M
Run and chat with the model
lemonade run user.amethyst-1.5-mini-Q4_K_M
List all available models
lemonade list
- Atomic Chat
Amethyst 1.5 Mini
Amethyst 1.5 Mini is a general-purpose chat model fine-tuned from Gemma 3 4B IT, expanding on 1 Mini's plain-chat focus with reliable web-search tool-calling: knowing when to call a search tool, when not to, how to decompose multi-part questions into multiple queries, how to refine a query after a bad result, and how to summarize retrieved snippets into a grounded, cited answer.
Part of the Amethyst family of chat-optimized models.
Model Details
| Developed by | Independent research project |
| Base model | google/gemma-3-4b-it |
| Fine-tuning base checkpoint | mlx-community/gemma-3-4b-it-qat-4bit |
| Architecture | Gemma 3, 4B parameters (dense, decoder-only transformer) |
| Fine-tuning method | LoRA (rank 8, scale 20.0, 16 layers) |
| Fine-tuning framework | MLX / mlx-lm, on Apple Silicon |
| Language | English |
| License | Gemma Terms of Use |
Training Data
Amethyst 1.5 Mini was fine-tuned on 4,987 examples (4,589 train / 398 validation) synthetically generated via knowledge distillation from a mix of nvidia/nemotron-3-super-120b-a12b and nvidia/nemotron-3-ultra-550b-a55b through the NVIDIA NIM API — 5x the training data of 1 Mini's original 1,122 examples.
Category breakdown:
| Category | Count | Purpose |
|---|---|---|
| General chat | 3,264 | Explanation, reasoning, code, planning, creative writing, extraction, brainstorming, math, sentiment, translation |
| Follow-up | 438 | Multi-turn conversations with elliptical second turns ("what about the other one?") |
| Summarize | 374 | Grounded, cited answers synthesized from retrieved search snippets |
| Single-query search | 305 | One user question -> one web_search call |
| Refine-after-bad-result | 183 | Query -> weak results -> refined follow-up query |
| Multi-query decomposition | 149 | One question requiring multiple distinct search queries |
| No-search (negative class) | 274 | Answerable from knowledge alone — teaches the model not to search for everything |
The no-search category is the key addition over a naive "always search" approach: without negative examples, a tool-calling model tends to reach for search even on trivial questions like "what's 7*8".
Training Procedure
- Method: Supervised fine-tuning via LoRA (rank 8, scale 20.0, dropout 0.0, 16 layers)
- Optimizer: Adam, learning rate 1e-5 (constant schedule)
- Sequence length: 2,048 tokens
- Batch size: 2 (reduced from 4 mid-run after peak memory climbed to 13GB+ on a 16GB machine; the smaller batch keeps training stable and unattended-safe)
- Gradient checkpointing: enabled
- Training steps: 3,250 iterations, with validation every 200 steps
- Final validation loss: 0.652 (down from 0.807 at the point training was resumed with the reduced batch size)
Evaluation
A hand-authored held-out set (26 prompts spanning general chat and explicit tool-call correctness, zero overlap with the training scenario bank) compared base Gemma 3 4B IT against Amethyst 1.5 Mini:
| Metric | Base Gemma 3 4B IT | Amethyst 1.5 Mini |
|---|---|---|
| Tool-call correctness (16 prompts: 8 should-call, 8 should-not-call) | 5/16 (31%) | 16/16 (100%) |
| General chat quality (10 prompts, blind pairwise judge) | 2 wins | 2 wins, 6 ties |
The base model calls web_search inconsistently — sometimes searching for things it already knows ("what's the boiling point of water"), sometimes failing to search for genuinely current information ("is there a new iPhone this year"). Amethyst 1.5 Mini gets this right on every held-out prompt, while general chat quality holds steady rather than regressing.
Tool-calling format
The model was trained to emit tool calls in this format:
<tool_call>
{"name": "web_search", "arguments": {"queries": ["query text"]}}
</tool_call>
A tool result is expected back as a <tool_result> block; the model then produces a grounded, cited final answer.
Intended Use
Amethyst 1.5 Mini is intended as a lightweight, general-purpose conversational assistant with tool-use awareness — for experimentation, research into small-scale distillation pipelines, and hobbyist deployment with a search backend wired up. It is not intended for high-stakes, safety-critical, or production use.
Limitations
- Trained on a moderately sized (~5,000-example) synthetic dataset — behavior can be inconsistent outside the categories represented in training.
- Inherits the general limitations and knowledge cutoff of its base model, Gemma 3 4B IT.
- Distilled from Nemotron teacher models without human review of every example; synthetic-data artifacts may be present.
- Tool-calling was trained against a single tool (
web_search) with a fixed schema — behavior with other tool schemas is untested.
Formats available
This repo includes both:
| Format | File | Notes |
|---|---|---|
| MLX (4-bit) | model.safetensors + config |
For Apple Silicon via mlx-lm |
| GGUF (Q4_K_M) | amethyst_1_5_mini_Q4_K_M.gguf |
For llama.cpp and compatible runtimes (LM Studio, Ollama, etc.) |
Usage — MLX
from mlx_lm import load, generate
model, tokenizer = load("VertexAGI/amethyst-1.5-mini")
messages = [{"role": "user", "content": "What's the current inflation rate in the US?"}]
text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
response = generate(model, tokenizer, prompt=text, max_tokens=500)
print(response)
Usage — GGUF (llama.cpp)
llama-cli -hf VertexAGI/amethyst-1.5-mini -m amethyst_1_5_mini_Q4_K_M.gguf -p "Explain how vaccines train the immune system, in simple terms."
Citation
If you reference this model, please cite it as:
@misc{amethyst15mini,
title = {Amethyst 1.5 Mini},
author = {Independent research project},
year = {2026},
note = {LoRA fine-tune of Gemma 3 4B IT with web-search tool-calling, distilled from a Nemotron-3-Super/Ultra mix}
}
This model is built on Gemma and subject to the Gemma Terms of Use.
- Downloads last month
- -
4-bit