NanoRush / README.md
Amogh1221's picture
Update README.md
1a25c6e verified
|
Raw
History Blame Contribute Delete
3.7 kB
---
license: apache-2.0
---
# NanoRush Chat
NanoRush Chat is a 283M parameter GPT-style causal language model fine-tuned for conversational AI.
Github- https://github.com/Amogh1221/NanoRush
Live- https://nano-chat-web.vercel.app
## Model Details & Configuration
| Detail | Value |
| --- | --- |
| **Parameters** | 283M |
| **Architecture** | GPT-2 style |
| **Precision** | FP16 / BFloat16 |
| **Context Window** | Up to 4096 tokens |
| **Vocabulary Size** | 32,768 |
| **Embedding Dimension (n_embd)** | 768 |
| **Number of Heads (n_head)** | 12 |
| **Number of Layers (n_layer)** | 36 |
| **Base Model** | Custom pre-trained |
| **Pre-Training Dataset** | `HuggingFaceTB/cosmopedia` |
| **Fine-tuning Dataset** | `HuggingFaceTB/smoltalk` |
## Evaluation Results
The model was evaluated using standard zero-shot accuracy metrics.
| Groups / Tasks | Version | n-shot | Metric | Value | Stderr |
|---|---|---|---|---|---|
| **mmlu** | 2 | 0 | acc | 0.2297 | ± 0.0035 |
| - humanities | 2 | 0 | acc | 0.2438 | ± 0.0063 |
| - other | 2 | 0 | acc | 0.2375 | ± 0.0076 |
| - social sciences | 2 | 0 | acc | 0.2184 | ± 0.0074 |
| - stem | 2 | 0 | acc | 0.2119 | ± 0.0073 |
| **arc_challenge** | 1 | 0 | acc | 0.2295 | ± 0.0123 |
| **hellaswag** | 1 | 0 | acc | 0.3116 | ± 0.0046 |
| **truthfulqa_mc2** | 3 | 0 | acc | 0.4320 | ± 0.0153 |
| **winogrande** | 1 | 0 | acc | 0.5107 | ± 0.0140 |
## Usage
This model has been exported to be fully compatible with the Hugging Face `transformers` library.
You can load it using the standard `AutoModelForCausalLM` pipeline.
### Installation
Make sure you have the latest version of the `transformers` and `torch` libraries installed:
```bash
pip install torch transformers
```
### Example Code
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers import StoppingCriteria, StoppingCriteriaList
from transformers.generation.streamers import TextIteratorStreamer
import threading
# Load the model and tokenizer from Hugging Face
model_id = "Amogh1221/nano-chat"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float32,
device_map="cpu"
)
system_prompt =
"""
You are NanoRush, an AI assistant, you are a helpful, respectful, and intelligent conversational
partner. You must never pretend to be a human, and you must carefully pay attention to the conversation history.
"""
class StopOnUser(StoppingCriteria):
def __init__(self, prompt_length):
self.prompt_length = prompt_length
def __call__(self, input_ids, scores, **kwargs):
generated_tokens = input_ids[0][self.prompt_length:]
tail = tokenizer.decode(generated_tokens[-10:])
return "\nUser:" in tail or "User:" in tail
# Format your prompt
prompt = f"System: {system_prompt}\\n\\nUser: What is Quantum Computing?\\nAssistant:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
stop_criteria = StoppingCriteriaList([StopOnUser(prompt_length=inputs["input_ids"].shape[1])])
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
generation_kwargs = dict(
**inputs,
max_new_tokens=512,
temperature=0.7,
top_k=50,
top_p=0.9,
do_sample=True,
repetition_penalty=1.15,
pad_token_id=tokenizer.eos_token_id,
prompt_lookup_num_tokens=3,
stopping_criteria=stop_criteria,
streamer=streamer,
)
# Run generation in a background thread
thread = threading.Thread(target=model.generate, kwargs=generation_kwargs)
thread.start()
print("Assistant: ", end="")
for text in streamer:
print(text, end="", flush=True)
print()
```