How to use from
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 "arjhinety/onebee-gf-dpo-v0" \
    --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": "arjhinety/onebee-gf-dpo-v0",
		"messages": [
			{
				"role": "user",
				"content": [
					{
						"type": "text",
						"text": "Describe this image in one sentence."
					},
					{
						"type": "image_url",
						"image_url": {
							"url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg"
						}
					}
				]
			}
		]
	}'
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 "arjhinety/onebee-gf-dpo-v0" \
        --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": "arjhinety/onebee-gf-dpo-v0",
		"messages": [
			{
				"role": "user",
				"content": [
					{
						"type": "text",
						"text": "Describe this image in one sentence."
					},
					{
						"type": "image_url",
						"image_url": {
							"url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg"
						}
					}
				]
			}
		]
	}'
Quick Links

onebee-gf-dpo-v0

Week-2 DPO checkpoint on top of sft-v0 (200 preference pairs, 1 epoch) — early-stage baseline, superseded by dpo-v1-scale.

Project

Model Overview

Early-scale DPO checkpoint on top of sft-v0, 200 preference pairs, 1 epoch. Kept published for reproducibility of the v0-scale preference-optimization results; superseded by dpo-v1-scale's 10x-larger dataset.

GGUF quantizations available: this project's current-best checkpoint is also published as [quantizations (F16 reference plus 12 quant levels)](https://huggingface.co/arjhinety/onebee-gf-dpo-v1-scale-gguf) for llama.cpp-based on-device inference (quantized from dpo-v1-scale, not this checkpoint).

Model Details

Property Details
Model onebee-gf-dpo-v0
Parameters ~2B effective (base) + LoRA rank 16 adapter
Architecture Gemma4 (multimodal, text + vision)
Base Model google/gemma-4-E2B-it
Language English
Context Length 131,072 tokens (inherited from base model)
Training Method LoRA DPO, 1 epoch, 200 preference pairs
License Apache-2.0 (inherited from base model)

Intended Use

Intended Use

Reproducing this project's v0-scale DPO results. Not recommended as a starting point for new work.

Out-of-Scope Use

Not evaluated or intended for: safety-critical decisions, medical/legal/financial advice, or any deployment where a wrong or overconfident answer causes real harm. This is a research artifact from an open-source project studying post-training and memory architecture on small models — see the project README for the full research framing before using it in any production context.

Capabilities

  • Companion-persona responses with early-stage preference alignment

Quick Start

Installation

pip install transformers torch

Usage

from transformers import AutoModelForCausalLM, AutoProcessor

model = AutoModelForCausalLM.from_pretrained("arjhinety/onebee-gf-dpo-v0")
processor = AutoProcessor.from_pretrained("arjhinety/onebee-gf-dpo-v0")

messages = [
    {"role": "system", "content": "You are a warm AI companion who remembers this user."},
    {"role": "user", "content": "What conference did I say I was attending?"},
]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=128)
print(processor.decode(output[0], skip_special_tokens=True))

Evaluation

Scored against PMB (Personalized Memory Benchmark), 688 adversarial probes across 8 categories, with an LLM judge under dual-order (position-bias-controlled) scoring plus a rule-based abstention detector.

See docs/dpo_results.md for the full v0-scale pairwise win-rate numbers.

Full methodology, all numbers, and honest limitations: docs/dpo_results.md.

Limitations

Small preference dataset (200 pairs) — superseded by dpo-v1-scale.

This project reports negative/inconclusive results as honestly as positive ones — read the linked docs before assuming any number here is a clean win.

Other Checkpoints From This Project

Repo Description
onebee-gf-sft-v0 Day 4 v0 SFT (202 examples)
onebee-gf-sft-v1 Proper-scale SFT (2232 examples)
onebee-gf-dpo-v0 Week 2 DPO v0 (200 pairs)
onebee-gf-dpo-v1-4epoch DPO overfitting experiment
onebee-gf-dpo-v1-scale Proper-scale DPO, pre-distillation
onebee-gf-distill-v1 SFT+DPO+distillation — current best overall
onebee-gf-dpo-v1-scale-gguf GGUF quantizations

Citation

@software{small_mind_companion,
  title  = {small-mind-companion: Post-training and cognitive architecture for a small multimodal companion LLM},
  author = {arjhinety},
  year   = {2026},
  url    = {https://github.com/arjhinety/small-mind-companion}
}

License

Apache-2.0, inherited from the base model (google/gemma-4-E2B-it).

Downloads last month
26
Safetensors
Model size
5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for arjhinety/onebee-gf-dpo-v0

Adapter
(188)
this model

Collection including arjhinety/onebee-gf-dpo-v0