--- title: Hardcore AI emoji: ⚙️ colorFrom: gray colorTo: red sdk: static pinned: false ---

Hardcore AI

Models   |   Nova-1.1-0.8B   |   Nova-1-0.8B   |   Discussions


# Hardcore AI Hardcore AI is a non-profit research group building compact, openly licensed language models intended for deployment rather than demonstration. Our work concentrates on function calling: assistants that invoke tools in whichever protocol is declared at inference time, and that produce no call at all when no tool applies. We target bilingual English/Russian interaction and hardware that a single developer already owns. Every release is a standalone BF16 checkpoint that loads in stock `transformers`, requires no adapter infrastructure, and is published under Apache-2.0. ## AI & ML Interests - **Small language models** — the 0.3B–3B range, sized for on-device, on-premise and single-GPU deployment - **Tool use and function calling** — protocol-agnostic invocation across JSON, XML and plain-text conventions - **Spurious-call suppression** — training against negative cases, where the correct behavior is to answer from knowledge - **Agentic tool chains** — multi-step sequences with tool history, such as lookup → compare → answer - **Curated instruction data** — LoRA and QLoRA fine-tuning on hand-built datasets instead of bulk scraping - **Quantized inference** — GGUF, llama.cpp and Ollama deployments - **Bilingual EN/RU NLP** — including morphology for flective languages - **Reproducible evaluation** — in-house suites with per-case breakdowns published alongside the numbers ## Open Releases | Model | Parameters | Base | Description | |---|---|---|---| | [**Nova-1.1-0.8B**](https://huggingface.co/HardcoreAI/Nova-1.1-0.8B) | 0.8B | [Nova-1-0.8B](https://huggingface.co/HardcoreAI/Nova-1-0.8B) | Current release. Pair-tuned against spurious tool calls on plain-answer prompts, with clean XML termination. | | [**Nova-1-0.8B**](https://huggingface.co/HardcoreAI/Nova-1-0.8B) | 0.8B | [Qwen3.5-0.8B](https://huggingface.co/Qwen/Qwen3.5-0.8B) | First open release. Function calling and everyday assistance in English and Russian. | Both checkpoints are ~2 GB in BF16 and run on a single 6 GB consumer GPU or on CPU. ## Highlights - **Protocol-agnostic tool calling.** One checkpoint handles three verified calling conventions — JSON objects, Qwen-native XML `` blocks, and a plain-text `TOOL name | param=value` form — selected by the system prompt rather than fixed at training time. - **Measured spurious-call behavior.** Negative cases are a first-class part of the evaluation: Nova-1.1 reduced the spurious-call rate from 60.0% to 13.3% while improving correct calls. - **Knowledge retained.** General capability is preserved rather than traded away for tool use; math improves relative to the base model. - **Minimal deployment surface.** No custom runtime, no `transformers` fork, no adapters to merge at load time; quantizes for llama.cpp and Ollama. - **Apache-2.0.** Commercial use, modification and redistribution are permitted. ## Evaluation Tool-use suite — 100 cases (EN+RU), identical prompts across checkpoints, greedy decoding: | Metric | Qwen3.5-0.8B | Nova-1-0.8B | Nova-1.1-0.8B | |---|---|---|---| | Overall | 55.0% | 74.0% | **90.0%** | | Correct call when a tool applies (70) | 58.6% | 88.6% | **91.4%** | | No call when no tool applies (30) | 46.7% | 40.0% | **86.7%** | | Spurious-call rate (lower is better) | 53.3% | 60.0% | **13.3%** | Accuracy by calling protocol, Nova-1.1-0.8B: JSON 89.2%, XML 95.2%, plain-text 85.7%. Knowledge spot-checks, identical 0-shot greedy protocol on both Nova checkpoints (internal A/B, subsampled public test sets): GSM8K 22.0% → 26.0% (n=100), ARC-Easy 77.3% (n=150). No regression against Nova-1.0. ## Training - **Data** — in-house instruction sets covering assistant turns and tool use (multi-turn, EN+RU, multiple protocols, multi-step chains), balanced with general-knowledge samples for capability retention. - **Method** — LoRA/QLoRA (r=16, alpha=16), merged into a standalone BF16 checkpoint; greedy decoding used for all reported evaluations. - **Verification** — protocol checks, latency measurement and regression probes on prior behavior run before publication. ## Quickstart ```python from transformers import AutoModelForCausalLM, AutoProcessor model_id = "HardcoreAI/Nova-1.1-0.8B" model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="bfloat16", trust_remote_code=True) processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True) SYSTEM = ( "You are a virtual assistant developed by Hardcore AI. You assist with day-to-day " "tasks, are helpful, polite and concise, and respond in the same language as the user." ) messages = [ {"role": "system", "content": SYSTEM}, {"role": "user", "content": "What is the capital of Australia?"}, ] text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = processor(text=text, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=128) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True)) # The capital of Australia is Canberra. ``` Function calling, JSON protocol: ```python messages = [ { "role": "system", "content": SYSTEM + "\n\nYou have access to tools: calculator(expression), get_weather(city). " 'Reply with ONLY a JSON object: {"name": "tool_name", "arguments": {"param": "value"}}.', }, {"role": "user", "content": "What is 45 plus 12?"}, ] # -> {"name": "calculator", "arguments": {"expression": "45+12"}} ``` Note: Nova inherits the Qwen3.5 reasoning backbone. Thinking mode should be disabled at inference (`--reasoning off` in llama.cpp, a pre-closed thinking block in Ollama, or a system prompt that forbids reasoning in `transformers`) — visible reasoning traces degrade both latency and tool-call correctness. ## Roadmap and Collaboration The Nova assistant line continues: additional sizes and capabilities are in development. Questions, bug reports and collaboration requests are handled through the discussion tab of the relevant model repository. ## License Models are released under **Apache-2.0**, consistent with their base model. See the `LICENSE` file in each repository for details.