Spaces:
Running
Running
|
Download README.md from HardcoreAI/README: direct link, hf CLI and curl.
- Browser
- Download file 6.88 kB
-
https://huggingface.co/spaces/HardcoreAI/README/resolve/main/README.md
- Command line
-
hf download hf://spaces/HardcoreAI/README/README.md
-
curl -L -o README.md https://huggingface.co/spaces/HardcoreAI/README/resolve/main/README.md
6.88 kB
| title: Hardcore AI | |
| emoji: ⚙️ | |
| colorFrom: gray | |
| colorTo: red | |
| sdk: static | |
| pinned: false | |
| <p align="center"> | |
| <img src="https://huggingface.co/spaces/HardcoreAI/README/resolve/main/banner.jpeg" alt="Hardcore AI" width="480"/> | |
| </p> | |
| <p align="center"> | |
| <a href="https://huggingface.co/HardcoreAI">Models</a> | |
| | | |
| <a href="https://huggingface.co/HardcoreAI/Nova-1.1-0.8B">Nova-1.1-0.8B</a> | |
| | | |
| <a href="https://huggingface.co/HardcoreAI/Nova-1-0.8B">Nova-1-0.8B</a> | |
| | | |
| <a href="https://huggingface.co/HardcoreAI/Nova-1.1-0.8B/discussions">Discussions</a> | |
| </p> | |
| <br> | |
| # 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 `<tool_call>` 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. | |