Text Generation
Transformers
Safetensors
Bengali
llama
bengali
bangla
causal-lm
custom-tokenizer
parameter-efficient
instruction-tuning
sft
conversational
text-generation-inference
Instructions to use spitfire4794/Alo-70m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use spitfire4794/Alo-70m with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="spitfire4794/Alo-70m") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("spitfire4794/Alo-70m") model = AutoModelForCausalLM.from_pretrained("spitfire4794/Alo-70m") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use spitfire4794/Alo-70m with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "spitfire4794/Alo-70m" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "spitfire4794/Alo-70m", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/spitfire4794/Alo-70m
- SGLang
How to use spitfire4794/Alo-70m 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 "spitfire4794/Alo-70m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "spitfire4794/Alo-70m", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "spitfire4794/Alo-70m" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "spitfire4794/Alo-70m", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use spitfire4794/Alo-70m with Docker Model Runner:
docker model run hf.co/spitfire4794/Alo-70m
| language: | |
| - bn | |
| license: apache-2.0 | |
| tags: | |
| - bengali | |
| - bangla | |
| - causal-lm | |
| - llama | |
| - custom-tokenizer | |
| - parameter-efficient | |
| - instruction-tuning | |
| - sft | |
| datasets: | |
| - spitfire4794/Bangla-SFT-50k | |
| metrics: | |
| - accuracy | |
| base_model: | |
| - spitfire4794/Alo-70m-Base | |
| pipeline_tag: text-generation | |
| library_name: transformers | |
| # Alo-70M (Instruct) | |
| ## Model Summary | |
| **Alo-70M** is the instruction-tuned version of the ultra-lightweight 69-million parameter Bengali language model, [Alo-70M-Base](https://huggingface.co/spitfire4794/Alo-70M-Base). Built on a scaled-down LLaMA architecture, it is designed to act as a highly efficient, edge-deployable localized AI assistant. | |
| Fine-tuned on a curated dataset of instruction-response pairs using the **ChatML** format, Alo-70M is aligned for tasks such as summarization, entity extraction, text editing, and question answering in native Bengali. Despite its compact footprint, it offers a viable path for edge AI deployment on standard CPUs and mobile hardware. | |
| * **Developer:** Fahad Hossain | |
| * **Language:** Bengali (Bangla) | |
| * **Model Type:** Causal Language Model (Instruction-Tuned Autoregressive Transformer) | |
| * **Parameter Count:** 69 Million | |
| * **License:** Apache 2.0 | |
| ## Related Resources | |
| * **Base Model:** [spitfire4794/Alo-70M-Base](https://huggingface.co/spitfire4794/Alo-70M-Base) | |
| * **Alignment Dataset:** [spitfire4794/Bangla-SFT-50k](https://huggingface.co/datasets/spitfire4794/Bangla-SFT-50k) | |
| * **Tokenizer:** [spitfire4794/beng_bpe](https://huggingface.co/spitfire4794/beng_bpe) | |
| ## Usage | |
| Alo-70M was trained using the ChatML template. The chat template is built directly into the Jinja template of the tokenizer (`spitfire4794/beng_bpe`). You can leverage it using Hugging Face's `apply_chat_template` interface: | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| model_id = "spitfire4794/Alo-70M" | |
| # Load the custom Bengali BPE tokenizer and model | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto") | |
| # Define the instruction in ChatML format | |
| messages = [ | |
| {"role": "user", "content": "নিচের অনুচ্ছেদটি সংক্ষেপে সারসংক্ষেপ করুন: [এখানে আপনার টেক্সট লিখুন]"} | |
| ] | |
| # Apply the pre-configured ChatML template | |
| inputs = tokenizer.apply_chat_template( | |
| messages, | |
| add_generation_prompt=True, | |
| return_tensors="pt" | |
| ).to(model.device) | |
| # Generate text | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=150, | |
| repetition_penalty=1.1, | |
| do_sample=True, | |
| temperature=0.6, | |
| top_p=0.9 | |
| ) | |
| # Decode response (omitting user prompt) | |
| response = outputs[0][inputs.shape[-1]:] | |
| print(tokenizer.decode(response, skip_special_tokens=True)) | |
| ``` | |
| ## Supervised Fine-Tuning (SFT) Details | |
| Alo-70M was aligned using a curated subset of the **Bangla-SFT-50k** dataset formatted using **ChatML**. | |
| * **Dataset Pruning:** Initial SFT experiments revealed that forcing a sub-100M parameter model to learn complex markdown syntax/tables caused severe representation crowding. Thus, the 12,517-sample *Structured Formatting* category was excluded. The final active training mixture consisted of **37,536** aligned pairs. | |
| * **Engineering Properties:** The training data strictly forbade conversational prefaces (e.g., "নিশ্চয়ই, আমি এটি করে দিচ্ছি") so that responses begin immediately with the target output, optimizing inference speeds. | |
| * **Hardware:** NVIDIA T4 and L4 GPUs. | |
| * **Hyperparameters:** | |
| * Optimizer: Fused AdamW (`adamw_torch_fused`) with $\beta_1 = 0.9, \beta_2 = 0.999, \epsilon = 10^{-8}$ | |
| * Weight Decay: 0.0 | |
| * Learning Rate Schedule: Cosine decay, peaking at $3 \times 10^{-4}$ with a 10% linear warmup. | |
| * Epochs: 3 | |
| * Effective Batch Size: 32 (per-device 8 with gradient accumulation of 4). | |
| * Precision: Native Automatic Mixed Precision (AMP). | |
| ## Model Architecture details | |
| Like its base model, Alo-70M utilizes a parameter-efficient architecture: | |
| * **Layers:** 12 | |
| * **Hidden Dimension ($d_{model}$):** 512 | **Intermediate FFN:** 1408 | |
| * **Attention:** Grouped-Query Attention (GQA) with 8 query heads / 4 KV heads. | |
| * **Positional Embeddings:** RoPE (Base freq: 10,000) | |
| * **Word Embeddings:** Untied (`tie_word_embeddings = False`). | |
| * **Context Window:** 1024 tokens. | |
| ## Evaluation Results | |
| The model was evaluated zero-shot across Bengali reasoning and knowledge benchmarks (continuation-based log-probability evaluation): | |
| | Benchmark | Alo-70M (SFT) | Alo-70M-Base | Gemma-3-270M-IT | TigerLLM-1B-IT | | |
| | :--- | :---: | :---: | :---: | :---: | | |
| | **bangla_mmlu_bn** | 26.29% | 26.31% | 26.81% | 27.66% | | |
| | **bangla_commonsenseqa_bn** | **25.88%** | 28.42% | 22.77% | 25.14% | | |
| | **indicbench_arc_bn_challenge** | 24.15% | 22.70% | 25.34% | 27.13% | | |
| | **boolqa_bn** | 48.70% | 48.42% | 51.30% | 52.40% | | |
| | **openbookqa_bn** | 30.58% | 31.39% | 31.99% | 34.21% | | |
| | **piqa_bn** | **50.05%** | 50.49% | 49.51% | 49.51% | | |
| | **hellaswag_bn** | 26.89% | 27.27% | 27.85% | 31.01% | | |
| *Note: The 69M instruction-tuned model outperforms the larger Gemma-3-270M-IT baseline on tasks like CommonsenseQA and PIQA.* | |
| ## Limitations and Biases | |
| * **Alignment Tax (Catastrophic Forgetting):** While SFT successfully aligned the model for text generation stability and instruction following, it introduced a measurable degradation in pure zero-shot reasoning compared to the Base model (e.g., dropping from 28.42% to 25.88% on CommonsenseQA). This happens because applying instructions to a highly capacity-constrained 69M model over-indexes weights toward output formatting at the expense of some pre-trained logical representations. | |
| * **Knowledge Retrieval:** With under 100M parameters, the model physically lacks the capacity to serve as a comprehensive encyclopedic knowledge base. It is better suited for text processing tasks (editing, summarizing) than fact-retrieval. | |
| * **Context Length:** The model is optimized for a 1024-token context window. Prompts exceeding this length will be truncated or result in degraded quality. | |
| ## Citation | |
| *Technical paper out soon.* |