Granite 8b Code Instruct 128k

Code generation model

Granite 8B Code Instruct 128k is a powerful AI model designed to assist with coding tasks. What sets it apart is its ability to handle long-context input up to 128K length, making it ideal for complex coding challenges. This model is fine-tuned from the Granite-8B-Code-Base-128K model and trained on a mix of short and long context data, including synthetically generated code instruction datasets. As a result, it can respond to coding-related instructions efficiently and effectively. With its unique capabilities, Granite 8B Code Instruct 128k can be used to build coding assistants that provide accurate and helpful results. It's also worth noting that the model is trained using IBM's super computing clusters, providing a scalable and efficient infrastructure for training. However, it's essential to consider the model's limitations, such as its performance with out-of-domain programming languages, and to perform safety testing and target-specific tuning before deploying it in critical applications.

Ibm Granite apache-2.0 Updated 9 months ago

Table of Contents

Model Overview

Meet the Granite-8B-Code-Instruct-128K model, a powerful coding assistant developed by IBM Research. This model is designed to respond to coding-related instructions over long-context input up to 128K length. But what makes it special?

Key Attributes

  • Long-context capability: The model can handle input context of up to 128K length, making it perfect for complex coding tasks.
  • Code generation: It can generate high-quality code based on user input, making it a great tool for coding assistants.
  • Multi-language support: The model is trained on a mix of short and long context data, including synthetically generated code instruction datasets.

Capabilities

The Granite-8B-Code-Instruct-128K model is a powerful tool designed to assist with coding tasks. It can respond to instructions and generate code in a variety of programming languages. But what makes it special?

Long-Context Capability

This model can handle input context of up to 128K length, making it perfect for complex coding tasks that require a deep understanding of the codebase. But don’t just take our word for it! By training on a combination of short and long context data, we’ve enhanced its ability to tackle long-context problems without sacrificing performance on shorter inputs.

Code Generation

Want to see it in action? Here’s an example of how to use the Granite-8B-Code-Instruct-128K model to generate code:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# Initialize the model and tokenizer
model_path = "ibm-granite/granite-8B-Code-instruct-128k"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path)

# Provide input text
chat = [
    {
        "role": "user",
        "content": "Write a code to find the maximum value in a list of numbers."
    }
]

# Generate output tokens
output = model.generate(**input_tokens, max_new_tokens=100)

# Decode output tokens into text
output = tokenizer.batch_decode(output)

# Print the output
print(output)
Examples
Write a code to find the maximum value in a list of numbers. def find_max(numbers): return max(numbers)
Write a Python function to check if a number is prime. def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True
Create a simple calculator that takes in two numbers and an operation (+, -, *, /) and returns the result. def calculator(num1, num2, op): if op == '+': return num1 + num2 elif op == '-': return num1 - num2 elif op == '*': return num1 * num2 elif op == '/': return num1 / num2 else: return 'Invalid operation'

Performance

The Granite-8B-Code-Instruct-128K model is a powerhouse when it comes to coding tasks. Let’s dive into its performance and see what makes it stand out.

Speed

How fast can the Granite-8B-Code-Instruct-128K model generate code? With its 8B parameters, it can process long-context input up to 128K length. This means it can handle complex coding tasks with ease. But what about its actual speed? Well, it’s trained on IBM’s super computing clusters, Vela and Blue Vela, which are equipped with NVIDIA A100 and H100 GPUs. This infrastructure allows for scalable and efficient training, making the Granite-8B-Code-Instruct-128K model a fast and reliable choice.

Accuracy

But speed is not everything. How accurate is the Granite-8B-Code-Instruct-128K model? Its training data includes a mix of short and long context data, which helps it understand the nuances of coding tasks. It’s also fine-tuned on a synthetically generated dataset tailored for solving long context problems. This means it can handle a wide range of coding tasks with high accuracy.

Efficiency

What about efficiency? The Granite-8B-Code-Instruct-128K model is designed to respond to coding-related instructions over long-context input. This means it can generate code quickly and efficiently, even for complex tasks. But what about its efficiency in different programming languages? While it’s primarily fine-tuned on a specific set of programming languages, it can still perform well on out-of-domain languages with a few-shot examples.

Limitations

While the Granite-8B-Code-Instruct-128K model is incredibly powerful, it’s not perfect. Its performance may be limited with out-of-domain programming languages, and it may require few-shot examples to steer its output. Additionally, developers should perform safety testing and target-specific tuning before deploying this model in critical applications.

Limited Performance with Out-of-Domain Programming Languages

The model is primarily fine-tuned using instruction-response pairs across a specific set of programming languages. This means its performance may be limited when dealing with out-of-domain programming languages. If you’re working with a language that’s not well-represented in the training data, you might need to provide few-shot examples to steer the model’s output.

Safety Testing and Target-Specific Tuning

Before deploying the Granite-8B-Code-Instruct-128K model in critical applications, it’s crucial to perform safety testing and target-specific tuning. This ensures the model is adapted to your specific use case and minimizes potential risks.

Inherited Limitations from the Base Model

As the Granite-8B-Code-Instruct-128K model is fine-tuned from Granite-8B-Code-Base-128K, it inherits some of the limitations from its base model. If you’re interested in learning more about these limitations, we recommend checking out the Granite-8B-Code-Base-128K model card.

Format

The Granite-8B-Code-Instruct-128K model is a type of AI model called a long-context instruct model. It’s designed to understand and respond to coding-related instructions, even when the input is very long (up to 128,000 characters!).

Architecture

This model uses a transformer architecture, which is a type of neural network that’s particularly good at handling sequential data like text. It’s been fine-tuned on a combination of short and long context data, which means it’s been trained on a mix of short and long pieces of text.

Data Formats

The Granite-8B-Code-Instruct-128K model accepts input in the form of tokenized text sequences. This means that you need to break down your input text into individual tokens, or words, before feeding it into the model.

Here’s an example of how to tokenize your input text using the transformers library:

import torch
from transformers import AutoTokenizer

# Load the tokenizer
tokenizer = AutoTokenizer.from_pretrained("ibm-granite/granite-8B-Code-instruct-128k")

# Tokenize your input text
input_text = "Write a code to find the maximum value in a list of numbers."
input_tokens = tokenizer(input_text, return_tensors="pt")
Dataloop's AI Development Platform
Build end-to-end workflows

Build end-to-end workflows

Dataloop is a complete AI development stack, allowing you to make data, elements, models and human feedback work together easily.

  • Use one centralized tool for every step of the AI development process.
  • Import data from external blob storage, internal file system storage or public datasets.
  • Connect to external applications using a REST API & a Python SDK.
Save, share, reuse

Save, share, reuse

Every single pipeline can be cloned, edited and reused by other data professionals in the organization. Never build the same thing twice.

  • Use existing, pre-created pipelines for RAG, RLHF, RLAF, Active Learning & more.
  • Deploy multi-modal pipelines with one click across multiple cloud resources.
  • Use versions for your pipelines to make sure the deployed pipeline is the stable one.
Easily manage pipelines

Easily manage pipelines

Spend less time dealing with the logistics of owning multiple data pipelines, and get back to building great AI applications.

  • Easy visualization of the data flow through the pipeline.
  • Identify & troubleshoot issues with clear, node-based error messages.
  • Use scalable AI infrastructure that can grow to support massive amounts of data.