File size: 8,878 Bytes
b7549ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f122a97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7549ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
---
pipeline_tag: text-generation
inference: false
license: apache-2.0
library_name: transformers
tags:
- language
- granite-3.0
- llama-cpp
- gguf-my-repo
base_model: ibm-granite/granite-3.0-2b-instruct
model-index:
- name: granite-3.0-2b-instruct
  results:
  - task:
      type: text-generation
    dataset:
      name: IFEval
      type: instruction-following
    metrics:
    - type: pass@1
      value: 46.07
      name: pass@1
    - type: pass@1
      value: 7.66
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: AGI-Eval
      type: human-exams
    metrics:
    - type: pass@1
      value: 29.75
      name: pass@1
    - type: pass@1
      value: 56.03
      name: pass@1
    - type: pass@1
      value: 27.92
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: OBQA
      type: commonsense
    metrics:
    - type: pass@1
      value: 43.2
      name: pass@1
    - type: pass@1
      value: 66.36
      name: pass@1
    - type: pass@1
      value: 76.79
      name: pass@1
    - type: pass@1
      value: 71.9
      name: pass@1
    - type: pass@1
      value: 53.37
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: BoolQ
      type: reading-comprehension
    metrics:
    - type: pass@1
      value: 84.89
      name: pass@1
    - type: pass@1
      value: 19.73
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: ARC-C
      type: reasoning
    metrics:
    - type: pass@1
      value: 54.35
      name: pass@1
    - type: pass@1
      value: 28.61
      name: pass@1
    - type: pass@1
      value: 43.74
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: HumanEvalSynthesis
      type: code
    metrics:
    - type: pass@1
      value: 50.61
      name: pass@1
    - type: pass@1
      value: 45.58
      name: pass@1
    - type: pass@1
      value: 51.83
      name: pass@1
    - type: pass@1
      value: 41.0
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: GSM8K
      type: math
    metrics:
    - type: pass@1
      value: 59.66
      name: pass@1
    - type: pass@1
      value: 23.66
      name: pass@1
  - task:
      type: text-generation
    dataset:
      name: PAWS-X (7 langs)
      type: multilingual
    metrics:
    - type: pass@1
      value: 61.42
      name: pass@1
    - type: pass@1
      value: 37.13
      name: pass@1
---

# Triangle104/granite-3.0-2b-instruct-Q5_K_S-GGUF
This model was converted to GGUF format from [`ibm-granite/granite-3.0-2b-instruct`](https://huggingface.co./ibm-granite/granite-3.0-2b-instruct) using llama.cpp via the ggml.ai's [GGUF-my-repo](https://huggingface.co./spaces/ggml-org/gguf-my-repo) space.
Refer to the [original model card](https://huggingface.co./ibm-granite/granite-3.0-2b-instruct) for more details on the model.

---
Model Summary: Granite-3.0-2B-Instruct is a 2B parameter model finetuned from Granite-3.0-2B-Base using a combination of open source instruction datasets with permissive license and internally collected synthetic datasets. This model is developed using a diverse set of techniques with a structured chat format, including supervised finetuning, model alignment using reinforcement learning, and model merging.

    Developers: Granite Team, IBM
    GitHub Repository: ibm-granite/granite-3.0-language-models
    Website: Granite Docs
    Paper: Granite 3.0 Language Models
    Release Date: October 21st, 2024
    License: Apache 2.0

Supported Languages: English, German, Spanish, French, Japanese, Portuguese, Arabic, Czech, Italian, Korean, Dutch, and Chinese. Users may finetune Granite 3.0 models for languages beyond these 12 languages.

Intended use: The model is designed to respond to general instructions and can be used to build AI assistants for multiple domains, including business applications.

Capabilities

    Summarization
    Text classification
    Text extraction
    Question-answering
    Retrieval Augmented Generation (RAG)
    Code related tasks
    Function-calling tasks
    Multilingual dialog use cases

Generation: This is a simple example of how to use Granite-3.0-2B-Instruct model.

Install the following libraries:

pip install torch torchvision torchaudio
pip install accelerate
pip install transformers

Then, copy the snippet from the section that is relevant for your use case.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "auto"
model_path = "ibm-granite/granite-3.0-2b-instruct"
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": "Please list one IBM Research laboratory located in the United States. You should only output its name and location." },
]
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
print(output)

Model Architecture: Granite-3.0-2B-Instruct is based on a decoder-only dense transformer architecture. Core components of this architecture are: GQA and RoPE, MLP with SwiGLU, RMSNorm, and shared input/output embeddings.
Model 	2B Dense 	8B Dense 	1B MoE 	3B MoE
Embedding size 	2048 	4096 	1024 	1536
Number of layers 	40 	40 	24 	32
Attention head size 	64 	128 	64 	64
Number of attention heads 	32 	32 	16 	24
Number of KV heads 	8 	8 	8 	8
MLP hidden size 	8192 	12800 	512 	512
MLP activation 	SwiGLU 	SwiGLU 	SwiGLU 	SwiGLU
Number of Experts 	— 	— 	32 	40
MoE TopK 	— 	— 	8 	8
Initialization std 	0.1 	0.1 	0.1 	0.1
Sequence Length 	4096 	4096 	4096 	4096
Position Embedding 	RoPE 	RoPE 	RoPE 	RoPE
# Paremeters 	2.5B 	8.1B 	1.3B 	3.3B
# Active Parameters 	2.5B 	8.1B 	400M 	800M
# Training tokens 	12T 	12T 	10T 	10T

Training Data: Overall, our SFT data is largely comprised of three key sources: (1) publicly available datasets with permissive license, (2) internal synthetic data targeting specific capabilities, and (3) very small amounts of human-curated data. A detailed attribution of datasets can be found in the Granite Technical Report and Accompanying Author List.

Infrastructure: We train Granite 3.0 Language Models using IBM's super computing cluster, Blue Vela, which is outfitted with NVIDIA H100 GPUs. This cluster provides a scalable and efficient infrastructure for training our models over thousands of GPUs while minimizing environmental impact by utilizing 100% renewable energy sources.

Ethical Considerations and Limitations: Granite 3.0 Instruct Models are primarily finetuned using instruction-response pairs mostly in English, but also multilingual data covering eleven languages. Although this model can handle multilingual dialog use cases, its performance might not be similar to English tasks. In such case, introducing a small number of examples (few-shot) can help the model in generating more accurate outputs. While this model has been aligned by keeping safety in consideration, the model may in some cases produce inaccurate, biased, or unsafe responses to user prompts. So we urge the community to use this model with proper safety testing and tuning tailored for their specific tasks.

---
## Use with llama.cpp
Install llama.cpp through brew (works on Mac and Linux)

```bash
brew install llama.cpp

```
Invoke the llama.cpp server or the CLI.

### CLI:
```bash
llama-cli --hf-repo Triangle104/granite-3.0-2b-instruct-Q5_K_S-GGUF --hf-file granite-3.0-2b-instruct-q5_k_s.gguf -p "The meaning to life and the universe is"
```

### Server:
```bash
llama-server --hf-repo Triangle104/granite-3.0-2b-instruct-Q5_K_S-GGUF --hf-file granite-3.0-2b-instruct-q5_k_s.gguf -c 2048
```

Note: You can also use this checkpoint directly through the [usage steps](https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#usage) listed in the Llama.cpp repo as well.

Step 1: Clone llama.cpp from GitHub.
```
git clone https://github.com/ggerganov/llama.cpp
```

Step 2: Move into the llama.cpp folder and build it with `LLAMA_CURL=1` flag along with other hardware-specific flags (for ex: LLAMA_CUDA=1 for Nvidia GPUs on Linux).
```
cd llama.cpp && LLAMA_CURL=1 make
```

Step 3: Run inference through the main binary.
```
./llama-cli --hf-repo Triangle104/granite-3.0-2b-instruct-Q5_K_S-GGUF --hf-file granite-3.0-2b-instruct-q5_k_s.gguf -p "The meaning to life and the universe is"
```
or 
```
./llama-server --hf-repo Triangle104/granite-3.0-2b-instruct-Q5_K_S-GGUF --hf-file granite-3.0-2b-instruct-q5_k_s.gguf -c 2048
```