Downloads · 30 days
48
4% of all-time downloads
boltuix/NeuroBERT
NeuroBERT is a text classification model from boltuix. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
Downloads · 30 days
48
4% of all-time downloads
All-time downloads
1.2K
Public
Parameters
14.4M
57.5 MB on disk
Likes
27
Public
Click a slice to open those files.
.safetensors57.5 MB · 98%
From the Hugging Face model README


NeuroBERT is an advanced lightweight NLP model derived from google/bert-base-uncased, built specifically for real-time inference on resource-constrained environments such as edge devices, embedded systems, and mobile platforms. With a quantized footprint of ~57MB and approximately 30 million parameters, it strikes a powerful balance between model performance and deployment efficiency.
Designed for low-latency, offline-first, and privacy-preserving applications, NeuroBERT delivers efficient contextual language understanding - making it suitable not only for IoT tasks but also for general-purpose NLP, including:
Thanks to its compact size and optimized architecture, NeuroBERT is well-suited for running directly on devices like smartphones, wearables, microcontrollers (e.g., Raspberry Pi, ESP32), and smart appliances, without requiring constant cloud connectivity.
Whether you're building a privacy-first mobile app, a voice-activated smart assistant, or a real-time embedded NLP solution, NeuroBERT enables fast, reliable language processing with minimal overhead and high adaptability across domains such as consumer tech, automotive AI, home automation, healthcare, and enterprise NLP.
Install the required dependencies:
pip install transformers torch
Ensure your environment supports Python 3.6+ and has ~57MB of storage for model weights.
git clone https://huggingface.co/boltuix/NeuroBERT
from transformers import AutoModelForMaskedLM, AutoTokenizer
model = AutoModelForMaskedLM.from_pretrained("boltuix/NeuroBERT")
tokenizer = AutoTokenizer.from_pretrained("boltuix/NeuroBERT")
Predict missing words in IoT-related sentences with masked language modeling:
from transformers import pipeline
# Unleash the power
mlm_pipeline = pipeline("fill-mask", model="boltuix/NeuroBERT")
# Test the magic
result = mlm_pipeline("Please [MASK] the door before leaving.")
print(result[0]["sequence"]) # Output: "Please open the door before leaving."
Perform intent detection or text classification for IoT commands:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 🧠 Load tokenizer and classification model
model_name = "boltuix/NeuroBERT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
model.eval()
# 🧪 Example input
text = "Turn on the fan"
# ✂️ Tokenize the input
inputs = tokenizer(text, return_tensors="pt")
# 🔍 Get prediction
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
pred = torch.argmax(probs, dim=1).item()
# 🏷️ Define labels
labels = ["OFF", "ON"]
# ✅ Print result
print(f"Text: {text}")
print(f"Predicted intent: {labels[pred]} (Confidence: {probs[0][pred]:.4f})")
Output:
Text: Turn on the fan
Predicted intent: ON (Confidence: 0.7824)
Note: Fine-tune the model for specific classification tasks to improve accuracy.
NeuroBERT was evaluated on a masked language modeling task using 10 IoT-related sentences. The model predicts the top-5 tokens for each masked word, and a test passes if the expected word is in the top-5 predictions.
| Sentence | Expected Word |
|---|---|
| She is a [MASK] at the local hospital. | nurse |
| Please [MASK] the door before leaving. | shut |
| The drone collects data using onboard [MASK]. | sensors |
| The fan will turn [MASK] when the room is empty. | off |
| Turn [MASK] the coffee machine at 7 AM. | on |
| The hallway light switches on during the [MASK]. | night |
| The air purifier turns on due to poor [MASK] quality. | air |
| The AC will not run if the door is [MASK]. | open |
| Turn off the lights after [MASK] minutes. | five |
| The music pauses when someone [MASK] the room. | enters |
from transformers import AutoTokenizer, AutoModelForMaskedLM
import torch
# 🧠 Load model and tokenizer
model_name = "boltuix/NeuroBERT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForMaskedLM.from_pretrained(model_name)
model.eval()
# 🧪 Test data
tests = [
("She is a [MASK] at the local hospital.", "nurse"),
("Please [MASK] the door before leaving.", "shut"),
("The drone collects data using onboard [MASK].", "sensors"),
("The fan will turn [MASK] when the room is empty.", "off"),
("Turn [MASK] the coffee machine at 7 AM.", "on"),
("The hallway light switches on during the [MASK].", "night"),
("The air purifier turns on due to poor [MASK] quality.", "air"),
("The AC will not run if the door is [MASK].", "open"),
("Turn off the lights after [MASK] minutes.", "five"),
("The music pauses when someone [MASK] the room.", "enters")
]
results = []
# 🔁 Run tests
for text, answer in tests:
inputs = tokenizer(text, return_tensors="pt")
mask_pos = (inputs.input_ids == tokenizer.mask_token_id).nonzero(as_tuple=True)[1]
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits[0, mask_pos, :]
topk = logits.topk(5, dim=1)
top_ids = topk.indices[0]
top_scores = torch.softmax(topk.values, dim=1)[0]
guesses = [(tokenizer.decode([i]).strip().lower(), float(score)) for i, score in zip(top_ids, top_scores)]
results.append({
"sentence": text,
"expected": answer,
"predictions": guesses,
"pass": answer.lower() in [g[0] for g in guesses]
})
# 🖨️ Print results
for r in results:
status = "✅ PASS" if r["pass"] else "❌ FAIL"
print(f"\n🔍 {r['sentence']}")
print(f"🎯 Expected: {r['expected']}")
print("🔝 Top-5 Predictions (word : confidence):")
for word, score in r['predictions']:
print(f" - {word:12} | {score:.4f}")
print(status)
# 📊 Summary
pass_count = sum(r["pass"] for r in results)
print(f"\n🎯 Total Passed: {pass_count}/{len(tests)}")
NeuroBERT excels in IoT contexts (e.g., “sensors,” “off,” “open”) and demonstrates strong performance on challenging terms like “five,” benefiting from its deeper 8-layer architecture. Fine-tuning can further enhance accuracy.
| Metric | Value (Approx.) |
|---|---|
| ✅ Accuracy | ~96–99% of BERT-base |
| 🎯 F1 Score | Balanced for MLM/NER tasks |
| ⚡ Latency | <25ms on Raspberry Pi |
| 📏 Recall | Highly competitive for lightweight models |
Note: Metrics vary based on hardware (e.g., Raspberry Pi 4, Android devices) and fine-tuning. Test on your target device for accurate results.
NeuroBERT is designed for real-world intelligence in edge and IoT scenarios, delivering advanced NLP on resource-constrained devices. Key applications include:
Quantization ensures efficient memory usage, making it suitable for resource-constrained devices.
Fine-tuning on domain-specific data is recommended for optimal results.
To adapt NeuroBERT for custom IoT tasks (e.g., specific smart home commands):
#!pip uninstall -y transformers torch datasets
#!pip install transformers==4.44.2 torch==2.4.1 datasets==3.0.1
import torch
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
from datasets import Dataset
import pandas as pd
# 1. Prepare the sample IoT dataset
data = {
"text": [
"Turn on the fan",
"Switch off the light",
"Invalid command",
"Activate the air conditioner",
"Turn off the heater",
"Gibberish input"
],
"label": [1, 1, 0, 1, 1, 0] # 1 for valid IoT commands, 0 for invalid
}
df = pd.DataFrame(data)
dataset = Dataset.from_pandas(df)
# 2. Load tokenizer and model
model_name = "boltuix/NeuroBERT" # Using NeuroBERT
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2)
# 3. Tokenize the dataset
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True, max_length=64) # Short max_length for IoT commands
tokenized_dataset = dataset.map(tokenize_function, batched=True)
# 4. Set format for PyTorch
tokenized_dataset.set_format("torch", columns=["input_ids", "attention_mask", "label"])
# 5. Define training arguments
training_args = TrainingArguments(
output_dir="./iot_neurobert_results",
num_train_epochs=5, # Increased epochs for small dataset
per_device_train_batch_size=2,
logging_dir="./iot_neurobert_logs",
logging_steps=10,
save_steps=100,
evaluation_strategy="no",
learning_rate=2e-5, # Adjusted for NeuroBERT
)
# 6. Initialize Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset,
)
# 7. Fine-tune the model
trainer.train()
# 8. Save the fine-tuned model
model.save_pretrained("./fine_tuned_neurobert_iot")
tokenizer.save_pretrained("./fine_tuned_neurobert_iot")
# 9. Example inference
text = "Turn on the light"
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=64)
model.eval()
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class = torch.argmax(logits, dim=1).item()
print(f"Predicted class for '{text}': {'Valid IoT Command' if predicted_class == 1 else 'Invalid Command'}")
| Model | Parameters | Size | Edge/IoT Focus | Tasks Supported |
|---|---|---|---|---|
| NeuroBERT | ~30M | ~57MB | High | MLM, NER, Classification |
| NeuroBERT-Small | ~20M | ~50MB | High | MLM, NER, Classification |
| NeuroBERT-Mini | ~7M | ~35MB | High | MLM, NER, Classification |
| NeuroBERT-Tiny | ~4M | ~15MB | High | MLM, NER, Classification |
| DistilBERT | ~66M | ~200MB | Moderate | MLM, NER, Classification |
NeuroBERT offers superior performance for real-world NLP tasks while remaining lightweight enough for edge devices, outperforming smaller NeuroBERT variants and competing with larger models like DistilBERT in efficiency.
#NeuroBERT #edge-nlp #lightweight-models #on-device-ai #offline-nlp
#mobile-ai #intent-recognition #text-classification #ner #transformers
#advanced-transformers #embedded-nlp #smart-device-ai #low-latency-models
#ai-for-iot #efficient-bert #nlp2025 #context-aware #edge-ml
#smart-home-ai #contextual-understanding #voice-ai #eco-ai
MIT License: Free to use, modify, and distribute for personal and commercial purposes. See LICENSE for details.
transformers team for model hosting and toolsFor issues, questions, or contributions:
Want to unlock the full potential of NeuroBERT? Learn how to fine-tune smarter, faster, and lighter for real-world tasks.
👉 Fine-Tune Smarter with NeuroBERT — Full Guide on Boltuix.com
We welcome community feedback to enhance NeuroBERT for IoT and edge applications!