Instructions to use Jonnester/Purrence-3M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Jonnester/Purrence-3M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Jonnester/Purrence-3M", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("Jonnester/Purrence-3M", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Jonnester/Purrence-3M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Jonnester/Purrence-3M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Jonnester/Purrence-3M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Jonnester/Purrence-3M
- SGLang
How to use Jonnester/Purrence-3M 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 "Jonnester/Purrence-3M" \ --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": "Jonnester/Purrence-3M", "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 "Jonnester/Purrence-3M" \ --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": "Jonnester/Purrence-3M", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Jonnester/Purrence-3M with Docker Model Runner:
docker model run hf.co/Jonnester/Purrence-3M
Download load_model.py from Jonnester/Purrence-3M: direct link, hf CLI and curl.
- Browser
- Download file 1.68 kB
-
https://huggingface.co/Jonnester/Purrence-3M/resolve/main/load_model.py
- Command line
-
hf download hf://Jonnester/Purrence-3M/load_model.py
-
curl -L -o load_model.py https://huggingface.co/Jonnester/Purrence-3M/resolve/main/load_model.py
1.68 kB
| """Load the inference-only FP32 Purrence package without training state.""" | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| from dataclasses import fields | |
| import torch | |
| from safetensors.torch import load_file | |
| from purrence_runtime.config import ModelConfig | |
| from purrence_runtime.model import RecurrentLM | |
| from purrence_runtime.tokenizer import Sub3MTokenizer | |
| from purrence_runtime.scorer import Scorer | |
| def load_model(directory=None, device="cpu"): | |
| root = Path(directory) if directory else Path(__file__).resolve().parent | |
| values = json.loads((root / "config.json").read_text()) | |
| config = ModelConfig(**{f.name: values[f.name] for f in fields(ModelConfig)}) | |
| model = RecurrentLM(config) | |
| state = load_file(str(root / "model.safetensors"), device="cpu") | |
| model.load_state_dict(state, strict=True) | |
| if any(not torch.isfinite(p).all() for p in model.parameters()): | |
| raise ValueError("Nonfinite model weights") | |
| if model.parameter_count() != 2987712: | |
| raise ValueError("Inference parameter count differs from the qualified model") | |
| model = model.to(device).float().eval() | |
| tokenizer = Sub3MTokenizer(root / "tokenizer") | |
| return model, tokenizer | |
| if __name__ == "__main__": | |
| p = argparse.ArgumentParser() | |
| p.add_argument("--directory", type=Path) | |
| p.add_argument("--device", default="cpu") | |
| p.add_argument("--prompt", default="Once upon a time") | |
| p.add_argument("--max-new-tokens", type=int, default=32) | |
| args = p.parse_args() | |
| torch.set_num_threads(2) | |
| model, tokenizer = load_model(args.directory, args.device) | |
| print(Scorer(model, tokenizer).generate(args.prompt, max_new_tokens=args.max_new_tokens)) | |