alt.freeweights.granite / granite-3.3-8b-alora-requirement-check
From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject:

granite-3.3-8b-alora-requirement-check

Date: 2026-11-15Commit: 2adc8ccSigned: 2DC28CC7B26A283B ✓

Text generation model. Safetensors weights, 94.4 MB in all. Published by ibm-granite under Apache-2.0.

granite94.4MBgranite-3.3-8b-alora-requirement-checksafetensorspermissive
FactsParamsnot statedSize94.4 MBFormatssafetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get ibm-granite/granite-3.3-8b-alora-requirement-check
# manifest sha256 85e097fa6ed0… · 94.4 MB · 4 files
$ fw verify ./granite-3.3-8b-alora-requirement-check ibm-granite/granite-3.3-8b-alora-requirement-check
From sourceHosted (signed)ibm-granite/granite-3.3-8b-alora-requirement-checkLast check: 2026-11-15 04:31 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
94.4 MB
Weights
94.4 MB (safetensors)
Parameters
not stated
Formats
safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
4, each with a sha256
Publisher
ibm-granite
Added
2026-11-15
Section
alt.freeweights.granite
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:31 UTCpassed

Model card

From the publisher at commit 2adc8cc. Shown as plain text with links; images open at the publisher.

Granite 3.3 8B Instruct - Requirement Checker#

Welcome to Granite Experiments!

Think of Experiments as a preview of what's to come. These projects are still under development, but we wanted to let the open-source community take them for spin! Use them, break them, and help us build what's next for Granite – we'll keep an eye out for feedback and questions in the Community section. Happy exploring!

Model Summary#

Granite 3.3 8b Instruct - Requirement Checker is an Activated LoRA (aLoRA) adapter for ibm-granite/granite-3.3-8b-instruct, adding the capability to check if specified requirements were satisfied by the last model generation. Only one requirement is checked at a time (but can be checked in parallel).

Activated LoRA#

Activated LoRA (aLoRA) is a new low rank adapter architecture that allows for reusing existing base model KV cache for more efficient inference.

Paper

IBM Research Blogpost

Github

Usage#

Intended use#

This is an experimental aLoRA testing new functionality being developed for IBM's Granite LLM family. We are welcoming the community to test it out and give us feedback, but we are NOT recommending this model be used for real deployments at this time. Stay tuned for more updates on the Granite roadmap.

Usage steps Given a generation task and a set of requirements:

  1. Use the base model to generate a response as normal (via the assistant role), with the prompt describing the task followed by "Requirements:"" and the list of active requirements.
  2. Repeat the requirement to be checked.
  3. The Requirement Checker model will respond with "Y" or "N", where "Y" means the requirement is satisfied. Note, any additional text after the "Y/N" can be ignored. You can curb additional generation by setting "max token length" = 1.
Quickstart Example#

The following code describes how to use the Granite Uncertainty model to answer questions and obtain intrinsic calibrated certainty scores.

The code required for Activated LoRA is on Github

Prior to running the code below, either clone the repo or install as

pip install git+ssh://git@github.com:IBM/activated-lora.git

Note that two generation options are shown - one illustrating the KV cache reuse ability of aLoRA (faster), and another showing the simplest generation call (slower).

import torch,os
from transformers import AutoTokenizer,  AutoModelForCausalLM, DynamicCache
from alora.peft_model_alora import aLoRAPeftModelForCausalLM
from alora.config import aLoraConfig
from alora.tokenize_alora import tokenize_alora

REUSE_CACHE = False  

token = os.getenv("HF_MISTRAL_TOKEN")
BASE_NAME = "ibm-granite/granite-3.3-8b-instruct"
LORA_NAME = "ibm-granite/granite-3.3-8b-alora-requirement-check"
device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# Load model
tokenizer = AutoTokenizer.from_pretrained(BASE_NAME,padding_side='left',trust_remote_code=True, token=token)
model_base = AutoModelForCausalLM.from_pretrained(BASE_NAME,device_map="auto")
model_req_check = aLoRAPeftModelForCausalLM.from_pretrained(model_base, LORA_NAME)

question = "Invite for an IBM office party."
requirement = "Use a professional tone."
print("Question:" + question)
question_chat = [
    {
        "role": "user",
        "content": question + "\nRequirement: " + requirement,
    },
]

# Generate answer with base model
input_text = tokenizer.apply_chat_template(question_chat,tokenize=False,add_generation_prompt=True)
# Remove default system prompt
len_sys = len(input_text.split("<|start_of_role|>user"))
input_text = input_text[len_sys:]

#tokenize
inputs = tokenizer(input_text, return_tensors="pt")
if REUSE_CACHE: #save KV cache for future aLoRA call
    prompt_cache = DynamicCache()
    with model_req_check.disable_adapter():
        output_dict = model_base.generate(inputs["input_ids"].to(device), attention_mask=inputs["attention_mask"].to(device), max_new_tokens=600,past_key_values = prompt_cache, return_dict_in_generate=True)
    answer_cache = output_dict.past_key_values
    output = output_dict.sequences
else: #simplest call
    with model_req_check.disable_adapter():
        output = model_req_check.generate(inputs["input_ids"].to(device), attention_mask=inputs["attention_mask"].to(device), max_new_tokens=600)
output_text = tokenizer.decode(output[0])
answer = output_text.split("assistant<|end_of_role|>")[1]
print("Generation: " + answer)

# Generate requirement check
req_generation_prompt = '<|start_of_role|>requirement<|end_of_role|>' + requirement + '<|end_of_text|>\n' + '<|start_of_role|>check_requirement<|end_of_role|>'
req_text = output_text +'\n'
# tokenize and generate
inputs, alora_offsets = tokenize_alora(tokenizer,req_text, req_generation_prompt)

if REUSE_CACHE: #reuse KV cache from earlier answer generation 
    output = model_req_check.generate(inputs["input_ids"].to(device), attention_mask=inputs["attention_mask"].to(device), max_new_tokens=1,alora_offsets=alora_offsets,past_key_values=answer_cache)
else: #simplest call
    output = model_req_check.generate(inputs["input_ids"].to(device), attention_mask=inputs["attention_mask"].to(device), max_new_tokens=1,alora_offsets=alora_offsets)
output_text = tokenizer.decode(output[0])

# Extract score
req_score = output_text[-1]
print("Requirement Satisfied: " + req_score)

Evaluation#

The model was evaluated on held-out synthetic data. Classification error rate is 0%.

Training Details#

The Granite Requirement Checker 3.3 8b model is an aLoRA adapter finetuned to check whether the specified requirement was satisfied by the last assisstant turn generation.

Training Data#

Synthetic data generated by Mixtral 8x22b.

Model Card Authors#

Kristjan Greenewald Bo Wu

Files

4 files · 94.4 MBWeights 94.4 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 4 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md6.58 KBbd21e93c267869d9437178fd31387e320226f78db696e07af60a9061f6beea4e
adapter_config.json816 B34a3a9304b63e6a2e1a399e0bcca298af42c21f97283dad6b8ffa4cc9f4c3b30
adapter_model.safetensors94.4 MB4cdb9db6c29c04efda5ec7ae1d19e7348bdfe300dc117d3c202821474572dc4f
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
2adc8cc6f5 pinned now2026-11-15 04:31 UTC4 files · 94.4 MB

Use it

$ fw get ibm-granite/granite-3.3-8b-alora-requirement-check
# manifest sha256 85e097fa6ed0… · 94.4 MB · 4 files
$ fw verify ./granite-3.3-8b-alora-requirement-check ibm-granite/granite-3.3-8b-alora-requirement-check
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/ibm-granite/granite-3.3-8b-alora-requirement-check.json --dir ./granite-3.3-8b-alora-requirement-check $ python3 fw.py verify ./granite-3.3-8b-alora-requirement-check ./ibm-granite__granite-3.3-8b-alora-requirement-check.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-3.3-8b-alora-requirement-check --revision 2adc8cc6f50b0615167293df60c65c83c6a923e4 --local-dir ./granite-3.3-8b-alora-requirement-check

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
bd21e93c267869d9437178fd31387e320226f78db696e07af60a9061f6beea4e
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject: granite-3.3-8b-alora-requirement-checkDate: 2026-11-15Commit: 2adc8ccSigned: 2DC28CC7B26A283B ✓
Upstream
ibm-granite/granite-3.3-8b-alora-requirement-check
Pinned commit
2adc8cc6f50b0615167293df60c65c83c6a923e4
Manifest
granite-3.3-8b-alora-requirement-check.json · .minisig
Manifest sha256
85e097fa6ed04dcba07a3cafeb11384341030369d1be16aa0b8899bb282f1193
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:31 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-3.3-8b-alora-requirement-check.json $ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-3.3-8b-alora-requirement-check.json.minisig $ minisign -Vm granite-3.3-8b-alora-requirement-check.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-3.3-8b-alora-requirement-check
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. granite-3.3-8b-alora-requirement-check.json. Provenance. Takedown history: none.
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed3
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed3