From 1730bd26b359972ea67097b834d2e2f1b60282e5 Mon Sep 17 00:00:00 2001
From: Olivia Buzek <ombuzek@us.ibm.com>
Date: Tue, 28 Jan 2025 19:04:56 -0700
Subject: [PATCH] WIP: Granite model updates, and questions about best use of
 the Model Openness Framework

Signed-off-by: Olivia Buzek <ombuzek@us.ibm.com>
---
 models/Granite-3B-Code-Instruct.yml | 40 +++++++++++++++--------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/models/Granite-3B-Code-Instruct.yml b/models/Granite-3B-Code-Instruct.yml
index d1ead66..c150563 100644
--- a/models/Granite-3B-Code-Instruct.yml
+++ b/models/Granite-3B-Code-Instruct.yml
@@ -17,7 +17,7 @@ release:
     -
       name: 'Model architecture'
       description: "Well commented code for the model's architecture"
-      location: ''
+      location: 'https://github.com/ggerganov/llama.cpp, https://github.com/vllm-project/vllm, https://github.com/huggingface/transformers' ## NB: The Granite model has only a few differences from LLaMa, and inference is possible against several different OSS frameworks. How are we differentiating code for the model's architecture vs inference and training code?
       license_name: Apache-2.0
       license_path: ''
     -
@@ -35,13 +35,13 @@ release:
     -
       name: 'Inference code'
       description: 'Code used for running the model to make predictions'
-      location: ''
-      license_name: 'Component not included'
-      license_path: ''
+      location: 'https://github.com/ggerganov/llama.cpp, https://github.com/vllm-project/vllm, https://github.com/huggingface/transformers' ## NB: Like many OSS models, the Granite model is compatible with several inference frameworks. Can we represent this information in a matrix, detailing compatibility with common inference frameworks?
+      license_name: 'MIT License, Apache-2.0 License, Apache-2.0 License; respectively'
+      license_path: 'https://github.com/ggerganov/llama.cpp/blob/master/LICENSE, https://github.com/vllm-project/vllm/blob/main/LICENSE, https://github.com/huggingface/transformers/blob/main/LICENSE; respectively'
     -
       name: 'Evaluation code'
       description: 'Code used for evaluating the model'
-      location: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-instruct-2k' ## NB: While Granite doesn't publish its own evaluation code, Granite does publish metrics against several well-known benchmarks. Can we separately represent the known benchmarks, openness of those benchmarks, and a model's published performance?  See "Evaluation Results" from HuggingFace.
       license_name: 'Component not included'
       license_path: ''
     -
@@ -53,7 +53,7 @@ release:
     -
       name: 'Model parameters (Final)'
       description: 'Trained model parameters, weights and biases'
-      location: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-base-2k/tree/main' ## NB: Safetensors files should establish this
       license_name: Apache-2.0
       license_path: ''
     -
@@ -65,13 +65,13 @@ release:
     -
       name: Datasets
       description: 'Training, validation and testing datasets used for the model'
-      location: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-base-2k' ## The model card contains an incomplete list of the known datasets used in training the model. Is the goal complete reproducibility?
       license_name: 'License not specified'
       license_path: ''
     -
       name: 'Evaluation data'
       description: 'Data used for evaluating the model'
-      location: ''
+      location: '' ## See commentary for 'Evaluation code' - published performance against known evaluation benchmarks are available.
       license_name: 'Component not included'
       license_path: ''
     -
@@ -86,18 +86,20 @@ release:
       location: ''
       license_name: 'Component not included'
       license_path: ''
+      ## NB: What's the purpose of this question, and how does it add to the openness of a model? For a model with open weights and open inference code, this information does not appear to provide additional value.
+      ## Granite does publish a set of cookbooks, which could be thought of as sample model outputs: https://github.com/ibm-granite-community/granite-snack-cookbook
     -
       name: 'Model card'
       description: 'Model details including performance metrics, intended use, and limitations'
-      location: ''
-      license_name: 'License not specified'
-      license_path: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-instruct-2k'
+      license_name: 'Apache 2.0'
+      license_path: 'https://www.apache.org/licenses/LICENSE-2.0'
     -
       name: 'Data card'
       description: 'Documentation for datasets including source, characteristics, and preprocessing details'
-      location: ''
-      license_name: 'License not specified'
-      license_path: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-instruct-2k' ## NB: Partial documentation of training datasets is available on the HuggingFace model card, referencing known datasets. Does this information need to be duplicated in the MOT?
+      license_name: 'Apache 2.0'
+      license_path: 'https://www.apache.org/licenses/LICENSE-2.0'
     -
       name: 'Technical report'
       description: 'Technical report detailing capabilities and usage instructions for the model'
@@ -107,12 +109,12 @@ release:
     -
       name: 'Research paper'
       description: 'Research paper detailing the development and capabilities of the model'
-      location: ''
-      license_name: 'License not specified'
-      license_path: ''
+      location: 'https://arxiv.org/abs/2405.04324' ## Several research papers have been published on the Granite model. How can we track all known papers in the MOT? Is the existence of a single paper enough to call this "open"? Also, is a technical report, differing from the research paper, necessary for openness?
+      license_name: 'CC BY 4.0'
+      license_path: 'https://creativecommons.org/licenses/by/4.0/'
     -
       name: 'Evaluation results'
       description: 'The results from evaluating the model'
-      location: ''
+      location: 'https://huggingface.co/ibm-granite/granite-3b-code-base-2k'
       license_name: 'Component not included'
-      license_path: ''
+      license_path: '' ## See 'evaluation code' and 'evaluation data' - info on model card for known benchmarks