---
title: "granite-3.0-8b-instruct"
publisher: "ibm"
type: "endpoint"
updated: "2025-05-24T08:34:54.685Z"
description: "Advanced Small Language Model supporting RAG, summarization, classification, code, and agentic AI"
canonical: "https://build.nvidia.com/ibm/granite-3_0-8b-instruct"
---

# Granite-3.0-8B-Instruct

## Model Summary

- **Developer:** IBM Research
- **GitHub Repository:** [ibm-granite/granite-language-models](https://github.com/ibm-granite/granite-language-models)
- **Website**: [Granite Docs](https://www.ibm.com/granite/docs/)
- **Paper:** [Granite Language Models](https://ibm.biz/granite-report)
- **Release Date**: October 21st, 2024

**Granite-3.0-8B-Instruct** is a 8B parameter model finetuned from Granite-3.0-8B-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. 
<!-- The lightweight and open-source nature of this model makes it an excellent choice to serve as backbone of real-time applications such as chatbots and conversational agents. -->

## Third-Party Community Consideration 
This model is not owned or developed by NVIDIA. This model has been developed and built to a third-party’s requirements for this application and use case; see link to Non-NVIDIA *[Granite-3.0-8B-Base](https://huggingface.co/ibm-granite/granite-3.0-8b-base)* model card.

### License/Terms of Use: 
GOVERNING TERMS: The trial service is governed by the [NVIDIA API Trial Terms of Service](https://assets.ngc.nvidia.com/products/api-catalog/legal/NVIDIA%20API%20Trial%20Terms%20of%20Service.pdf); and the use of this model is governed by the [NVIDIA AI Foundation Models Community License Agreement](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-ai-foundation-models-community-license-agreement/). ADDITIONAL INFORMATION: [Apache 2.0 License](https://choosealicense.com/licenses/apache-2.0/).

## Model Architecture: 
**Architecture Type:** [Transformer]  <br>
**Network Architecture:** [Other - Dense] <br>

**Granite-3.0-8B-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 embbeddings.

| 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    |

<!-- TO DO: To be completed once the paper is ready, we may changed title to Supervised Finetuning -->

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

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

## Input: 
**Input Type(s):** Text <br>
**Input Format(s):** String <br>
**Input Parameters:** min_tokens, max_tokens, temperature, top_p, stop, frequency_penalty, presence_penalty <br>
**Other Properties Related to Input:** Supported Languages include
English, German, Spanish, French, Japanese, Portuguese, Arabic, Czech, Italian, Korean, Dutch, Chinese (Simplified)  <br>

## Output: 
**Output Type(s):** Text <br>
**Output Format:** String <br>
**Output Parameters:** None <br>
**Other Properties Related to Output:** [None] <br> 

### Generation
This is a simple example of how to use **Granite-3.0-8B-Instruct** model.

Install the following libraries:

```shell
pip install torch torchvision torchaudio
pip install accelerate
pip install transformers
```
Then, copy the snippet from the section that is relevant for your usecase.

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "auto"
model_path = "ibm-granite/granite-3.0-8b-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)
```

<!-- TO DO: function-calling-example
-->

<!-- ['<|start_of_role|>user<|end_of_role|>Please list one IBM Research laboratory located in the United States. You should only output its name and location.<|end_of_text|>\n<|start_of_role|>assistant<|end_of_role|>1. IBM Research - Almaden, San Jose, California<|end_of_text|>'] -->

## Training Data
Granite Language Instruct models are trained on a selection of open-srouce instruction datasets with a non-restrictive license, as well as a collection of synthetic datasets created by IBM. Together, these instruction datasets are a solid representation of the following domains: English, multilingual, code, math, tools, and safety.

<!-- CHECK: removed Vela, only talk about blue-vela-->
## Infrastructure
We train the Granite 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.

## Model Version(s): 
Granite-Dense-3.0-instruct

<!-- TO DO: Check multilingual statement once the paper is ready -->
## Ethical Considerations and Limitations
Granite instruct models are primarily finetuned using instruction-response pairs mostly in English, but also in German, Spanish, French, Japanese, Portuguese, Arabic, Czech, Italian, Korean, Dutch, and Chinese (Simplified). As this model has been exposed to multilingual data, it can handle multilingual dialog use cases with a limited performance in non-English tasks. In such case, introducing a small number of examples (few-shot) can help the model in generating more accurate outputs. The model also inherits ethical considerations and limitations from its base model. 

NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications.  When downloaded or used in accordance with our terms of service, developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.   

Please report security vulnerabilities or NVIDIA AI Concerns [here](https://www.nvidia.com/en-us/support/submit-security-vulnerability/).

## Prototype

```python
from openai import OpenAI

client = OpenAI(
base_url = "https://integrate.api.nvidia.com/v1",
api_key = "$NVIDIA_API_KEY"
)

completion = client.chat.completions.create(
model="",
messages=[{"role":"user","content":""}],
temperature=,
top_p=,
max_tokens=,
stream=NaN
)

print(completion.choices[0].message)
```

```python
from langchain_nvidia_ai_endpoints import ChatNVIDIA

client = ChatNVIDIA(
model="",
api_key="$NVIDIA_API_KEY", 
temperature=,
top_p=,
max_tokens=,
)

response = client.invoke([{"role":"user","content":""}])
print(response.content)
```

```javascript
import OpenAI from 'openai';

const openai = new OpenAI({
apiKey: '$NVIDIA_API_KEY',
baseURL: 'https://integrate.api.nvidia.com/v1',
})

async function main() {
const completion = await openai.chat.completions.create({
model: "",
messages: [{"role":"user","content":""}],
temperature: ,
top_p: ,
max_tokens: ,
stream: ,
})

process.stdout.write(completion.choices[0]?.message?.content);

}

main();
```

```bash
curl https://integrate.api.nvidia.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NVIDIA_API_KEY" \
-d '{
"model": "ibm/granite-3.0-8b-instruct",
"messages": [{"role":"user","content":""}],
"temperature": ,   
"top_p": ,
"max_tokens": ,
"stream":                 
}'
```