--- pipeline_tag: text-generation language: arb license: apache-2.0 tags: - trimmed - granite - granite-4.0 library_name: transformers base_model: ibm-granite/granite-4.0-h-1b base_model_relation: quantized datasets: - lbourdois/fineweb-2-trimming --- # granite-4.0-h-1b-arb-16384 This model is a **8.82% smaller** version of [ibm-granite/granite-4.0-h-1b](https://huggingface.co/ibm-granite/granite-4.0-h-1b) optimized for **Arabic** language via vocabulary size reduction using the [trimming](https://huggingface.co/blog/lbourdois/introduction-to-trimming) method. This trimmed model should perform similarly to the original model with only 16,384 tokens and a much smaller memory footprint. However, it may not perform well for other languages as tokens not commonly used in the selected languages were removed from the vocabulary. ## Model Statistics | Metric | Original | Trimmed | Reduction | |--------|----------|---------|-----------| | **Vocabulary size** | 100,352 tokens | 16,384 tokens | **83.67%** | | **Model size** | 1,461,538,368 params | 1,332,563,520 params | **8.82%** | ![image](https://raw.githubusercontent.com/lbourdois/blog/refs/heads/master/assets/images/Trimming/granite-4.0-h-1b-16384.png) ## Mining Dataset Statistics - **Number of texts used for mining**: 200,000 texts - **Dataset**: [lbourdois/fineweb-2-trimming](https://huggingface.co/datasets/lbourdois/fineweb-2-trimming) ## Usage ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" model_path = "alphaedge-ai/granite-4.0-h-1b-arb-16384" tokenizer = AutoTokenizer.from_pretrained(model_path) # drop device_map if running on CPU model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device) model.eval() # change input text as desired chat = [ {"role": "user", "content": "Your prompt in Arabic."}, ] chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True) # tokenize the text input_tokens = tokenizer(chat, return_tensors="pt").to(device) # generate output tokens output = model.generate(**input_tokens, max_new_tokens=100) # decode output tokens into text output = tokenizer.batch_decode(output) print(output[0]) ``` ## Citations #### Granite 4.0 ``` @misc{granite2025, author = {IBM Research}, title = {Granite 4.0 Language Models}, year = {2025}, howpublished = {https://github.com/ibm-granite/granite-4.0-language-models}, } ``` #### Trimming blog post ``` @misc{hf_blogpost_trimming, title={Introduction to Trimming}, author={Loïck BOURDOIS and Tom AARSEN and Bram VANROY and Christopher AKIKI and Woojun JUNG and Manuel ROMERO and Prithiv SAKTHI}, year={2026}, url={https://huggingface.co/blog/lbourdois/introduction-to-trimming}, } ```