Downloads · 30 days
104
11% of all-time downloads
yujiepan/granite-4.0-h-tiny-random
granite-4.0-h-tiny-random is a text generation model from yujiepan. Use it when you need the model to write or continue text. It is set up for transformers.
This tiny model is intended for debugging. It is randomly initialized using the configuration adapted from ibm-granite/granite-4.0-h-small.
Downloads · 30 days
104
11% of all-time downloads
All-time downloads
939
Public
Parameters
5.9M
11.7 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors11.7 MB · 55%
From the Hugging Face model README
This tiny model is intended for debugging. It is randomly initialized using the configuration adapted from ibm-granite/granite-4.0-h-small.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
model_id = "yujiepan/granite-4.0-h-tiny-random"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
)
pipe = pipeline('text-generation', model=model, tokenizer=tokenizer, trust_remote_code=True)
print(pipe('Write an article about Artificial Intelligence.'))
import json
from pathlib import Path
import accelerate
import torch
from huggingface_hub import file_exists, hf_hub_download
from transformers import (
AutoConfig,
AutoModelForCausalLM,
AutoTokenizer,
GenerationConfig,
set_seed,
)
source_model_id = "ibm-granite/granite-4.0-h-small"
save_folder = "/tmp/yujiepan/granite-4.0-h-tiny-random"
processor = AutoTokenizer.from_pretrained(source_model_id)
processor.save_pretrained(save_folder)
with open(hf_hub_download(source_model_id, filename='config.json', repo_type='model'), 'r', encoding='utf-8') as f:
config_json = json.load(f)
config_json['hidden_size'] = 32
config_json['intermediate_size'] = 128
config_json['layer_types'] = ['mamba', 'attention']
config_json.update({
'mamba_expand': int(4096 / 32 * 2),
})
config_json['num_attention_heads'] = 2
config_json['shared_intermediate_size'] = 128
config_json['num_hidden_layers'] = 2
config_json['num_key_value_heads'] = 2
config_json['tie_word_embeddings'] = True
with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
json.dump(config_json, f, indent=2)
config = AutoConfig.from_pretrained(
save_folder,
trust_remote_code=True,
)
print(config)
torch.set_default_dtype(torch.bfloat16)
model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
torch.set_default_dtype(torch.float32)
if file_exists(filename="generation_config.json", repo_id=source_model_id, repo_type='model'):
model.generation_config = GenerationConfig.from_pretrained(
source_model_id, trust_remote_code=True,
)
set_seed(42)
model = model.cpu()
with torch.no_grad():
for name, p in sorted(model.named_parameters()):
torch.nn.init.normal_(p, 0, 0.1)
print(name, p.shape)
model.save_pretrained(save_folder)
print(model)
GraniteMoeHybridForCausalLM(
(model): GraniteMoeHybridModel(
(embed_tokens): Embedding(100352, 32, padding_idx=100256)
(layers): ModuleList(
(0): GraniteMoeHybridDecoderLayer(
(block_sparse_moe): GraniteMoeHybridMoE(
(activation): SiLU()
(input_linear): GraniteMoeHybridParallelExperts()
(output_linear): GraniteMoeHybridParallelExperts()
(router): GraniteMoeHybridTopKGating(
(layer): Linear(in_features=32, out_features=72, bias=False)
)
)
(input_layernorm): GraniteMoeHybridRMSNorm((32,), eps=1e-05)
(post_attention_layernorm): GraniteMoeHybridRMSNorm((32,), eps=1e-05)
(shared_mlp): GraniteMoeHybridMLP(
(activation): SiLU()
(input_linear): Linear(in_features=32, out_features=256, bias=False)
(output_linear): Linear(in_features=128, out_features=32, bias=False)
)
(mamba): GraniteMoeHybridMambaLayer(
(act): SiLU()
(conv1d): Conv1d(8448, 8448, kernel_size=(4,), stride=(1,), padding=(3,), groups=8448)
(in_proj): Linear(in_features=32, out_features=16768, bias=False)
(norm): GraniteMoeHybridRMSNormGated()
(out_proj): Linear(in_features=8192, out_features=32, bias=False)
)
)
(1): GraniteMoeHybridDecoderLayer(
(block_sparse_moe): GraniteMoeHybridMoE(
(activation): SiLU()
(input_linear): GraniteMoeHybridParallelExperts()
(output_linear): GraniteMoeHybridParallelExperts()
(router): GraniteMoeHybridTopKGating(
(layer): Linear(in_features=32, out_features=72, bias=False)
)
)
(input_layernorm): GraniteMoeHybridRMSNorm((32,), eps=1e-05)
(post_attention_layernorm): GraniteMoeHybridRMSNorm((32,), eps=1e-05)
(shared_mlp): GraniteMoeHybridMLP(
(activation): SiLU()
(input_linear): Linear(in_features=32, out_features=256, bias=False)
(output_linear): Linear(in_features=128, out_features=32, bias=False)
)
(self_attn): GraniteMoeHybridAttention(
(q_proj): Linear(in_features=32, out_features=32, bias=False)
(k_proj): Linear(in_features=32, out_features=32, bias=False)
(v_proj): Linear(in_features=32, out_features=32, bias=False)
(o_proj): Linear(in_features=32, out_features=32, bias=False)
)
)
)
(norm): GraniteMoeHybridRMSNorm((32,), eps=1e-05)
)
(lm_head): Linear(in_features=32, out_features=100352, bias=False)
)