Text Generation
Transformers
Safetensors
GGUF
Russian
English
Chinese
qwen3
russian
on-device
edge
mnn
keyboard
work-in-progress
conversational
text-generation-inference
Instructions to use Rahspide/MNN-Pocket-0.3B-RU with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Rahspide/MNN-Pocket-0.3B-RU with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Rahspide/MNN-Pocket-0.3B-RU") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Rahspide/MNN-Pocket-0.3B-RU") model = AutoModelForCausalLM.from_pretrained("Rahspide/MNN-Pocket-0.3B-RU", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.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=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Rahspide/MNN-Pocket-0.3B-RU 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 Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M # Run inference directly in the terminal: llama cli -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M # Run inference directly in the terminal: llama cli -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama cli -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Use Docker
docker model run hf.co/Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use Rahspide/MNN-Pocket-0.3B-RU with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Rahspide/MNN-Pocket-0.3B-RU" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Rahspide/MNN-Pocket-0.3B-RU", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
- SGLang
How to use Rahspide/MNN-Pocket-0.3B-RU 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 "Rahspide/MNN-Pocket-0.3B-RU" \ --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": "Rahspide/MNN-Pocket-0.3B-RU", "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 "Rahspide/MNN-Pocket-0.3B-RU" \ --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": "Rahspide/MNN-Pocket-0.3B-RU", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use Rahspide/MNN-Pocket-0.3B-RU with Ollama:
ollama run hf.co/Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
- Unsloth Desktop
- Pi
How to use Rahspide/MNN-Pocket-0.3B-RU with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Rahspide/MNN-Pocket-0.3B-RU with Docker Model Runner:
docker model run hf.co/Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
- Lemonade
How to use Rahspide/MNN-Pocket-0.3B-RU with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Run and chat with the model
lemonade run user.MNN-Pocket-0.3B-RU-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Rahspide/MNN-Pocket-0.3B-RU with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
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 Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Rahspide/MNN-Pocket-0.3B-RU with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M
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 "Rahspide/MNN-Pocket-0.3B-RU:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
docs: larger caption sizes for the card column
Browse files- assets/build_assets.py +11 -8
- assets/cover.png +2 -2
- assets/eval.png +2 -2
- assets/sizes.png +0 -0
- assets/tokenizer.png +0 -0
- assets/two_jobs.png +0 -0
assets/build_assets.py
CHANGED
|
@@ -42,6 +42,8 @@ def font(size, family="sans", weight=400):
|
|
| 42 |
|
| 43 |
def tw(s, size, family="sans", weight=400, ls=0.0):
|
| 44 |
"""Ширина строки в px: PIL + запас на letter-spacing."""
|
|
|
|
|
|
|
| 45 |
f = font(size, family, weight)
|
| 46 |
return f.getlength(s) + max(0, len(s) - 1) * ls
|
| 47 |
|
|
@@ -54,6 +56,8 @@ def esc(s):
|
|
| 54 |
def text(x, y, s, size=24, fill=MUTED, family="sans", weight=400, anchor="start",
|
| 55 |
ls=0.0, opacity=1.0, upper=False):
|
| 56 |
s = s.upper() if upper else s
|
|
|
|
|
|
|
| 57 |
fam = "Noto Sans Mono" if family == "mono" else "Noto Sans"
|
| 58 |
w = "700" if weight == 700 else "400"
|
| 59 |
return (f'<text x="{x:.1f}" y="{y:.1f}" font-family="{fam}" font-size="{size}" '
|
|
@@ -226,8 +230,7 @@ def chart_tokenizer():
|
|
| 226 |
W, H = 1600, 620
|
| 227 |
b = frame(W, H)
|
| 228 |
b.append(text(80, 140, "The tokenizer tax, measured", 44, INK, "sans", 700))
|
| 229 |
-
b.append(text(80, 180, "Cyrillic
|
| 230 |
-
"Russian validation text · higher is better", 19, DIM, "mono", 400))
|
| 231 |
|
| 232 |
bars = [("base\n65,536", 2.081, 0.30, None),
|
| 233 |
("+8,192 merges\n73,728", 3.096, 0.62, "×1.49"),
|
|
@@ -280,7 +283,7 @@ def diagram_two_jobs(accent="ru"):
|
|
| 280 |
W, H = 1600, 500
|
| 281 |
b = frame(W, H)
|
| 282 |
b.append(text(80, 126, "One base, two jobs", 44, INK, "sans", 700))
|
| 283 |
-
b.append(text(80, 164, "
|
| 284 |
19, DIM, "mono", 400))
|
| 285 |
|
| 286 |
def node(x, y, w, h, title, sub, hot=False, small=""):
|
|
@@ -291,15 +294,15 @@ def diagram_two_jobs(accent="ru"):
|
|
| 291 |
for i, line_ in enumerate(sub):
|
| 292 |
b.append(text(x + 22, y + 72 + i * 24, line_, 17, MUTED, "mono", 400))
|
| 293 |
if small:
|
| 294 |
-
b.append(text(x + w -
|
| 295 |
|
| 296 |
-
node(80, 210, 330,
|
| 297 |
small="taobao-mnn")
|
| 298 |
-
node(520, 192, 360,
|
| 299 |
hot=True, small="69 h on one T4")
|
| 300 |
-
node(1010,
|
| 301 |
hot=(accent == "ru"), small="this repo" if accent == "ru" else "sister")
|
| 302 |
-
node(1010,
|
| 303 |
hot=(accent == "chat"), small="this repo" if accent == "chat" else "sister")
|
| 304 |
|
| 305 |
b.append(line(410, 273, 516, 273, DIM, 1.5))
|
|
|
|
| 42 |
|
| 43 |
def tw(s, size, family="sans", weight=400, ls=0.0):
|
| 44 |
"""Ширина строки в px: PIL + запас на letter-spacing."""
|
| 45 |
+
if size <= 19:
|
| 46 |
+
size += 2
|
| 47 |
f = font(size, family, weight)
|
| 48 |
return f.getlength(s) + max(0, len(s) - 1) * ls
|
| 49 |
|
|
|
|
| 56 |
def text(x, y, s, size=24, fill=MUTED, family="sans", weight=400, anchor="start",
|
| 57 |
ls=0.0, opacity=1.0, upper=False):
|
| 58 |
s = s.upper() if upper else s
|
| 59 |
+
if size <= 19:
|
| 60 |
+
size += 2
|
| 61 |
fam = "Noto Sans Mono" if family == "mono" else "Noto Sans"
|
| 62 |
w = "700" if weight == 700 else "400"
|
| 63 |
return (f'<text x="{x:.1f}" y="{y:.1f}" font-family="{fam}" font-size="{size}" '
|
|
|
|
| 230 |
W, H = 1600, 620
|
| 231 |
b = frame(W, H)
|
| 232 |
b.append(text(80, 140, "The tokenizer tax, measured", 44, INK, "sans", 700))
|
| 233 |
+
b.append(text(80, 180, "Cyrillic merges added to the 65 k vocabulary · characters per token · Russian validation text", 19, DIM, "mono", 400))
|
|
|
|
| 234 |
|
| 235 |
bars = [("base\n65,536", 2.081, 0.30, None),
|
| 236 |
("+8,192 merges\n73,728", 3.096, 0.62, "×1.49"),
|
|
|
|
| 283 |
W, H = 1600, 500
|
| 284 |
b = frame(W, H)
|
| 285 |
b.append(text(80, 126, "One base, two jobs", 44, INK, "sans", 700))
|
| 286 |
+
b.append(text(80, 164, "Continuation and answering reward opposite behaviour",
|
| 287 |
19, DIM, "mono", 400))
|
| 288 |
|
| 289 |
def node(x, y, w, h, title, sub, hot=False, small=""):
|
|
|
|
| 294 |
for i, line_ in enumerate(sub):
|
| 295 |
b.append(text(x + 22, y + 72 + i * 24, line_, 17, MUTED, "mono", 400))
|
| 296 |
if small:
|
| 297 |
+
b.append(text(x + w - 18, y + h - 14, small, 15, DIM, "mono", 400, anchor="end"))
|
| 298 |
|
| 299 |
+
node(80, 210, 330, 140, "MNN-Pocket-0.3B-Base", ["en / zh · 65,536 tokens", "Qwen3 · Apache-2.0"],
|
| 300 |
small="taobao-mnn")
|
| 301 |
+
node(520, 192, 360, 176, "Continued pretraining", ["1.2 B tokens · 75 / 17 / 8", "ru / en / zh · 1 epoch"],
|
| 302 |
hot=True, small="69 h on one T4")
|
| 303 |
+
node(1010, 96, 500, 116, "MNN-Pocket-0.3B-RU", ["continuation · keyboard · autocomplete"],
|
| 304 |
hot=(accent == "ru"), small="this repo" if accent == "ru" else "sister")
|
| 305 |
+
node(1010, 280, 500, 116, "MNN-Pocket-0.3B-RU-Chat", ["assistant · SFT · ChatML"],
|
| 306 |
hot=(accent == "chat"), small="this repo" if accent == "chat" else "sister")
|
| 307 |
|
| 308 |
b.append(line(410, 273, 516, 273, DIM, 1.5))
|
assets/cover.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
assets/eval.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
assets/sizes.png
CHANGED
|
|
assets/tokenizer.png
CHANGED
|
|
assets/two_jobs.png
CHANGED
|
|