Downloads · 30 days
422
40% of all-time downloads
yujiepan/minimax-m2.7-tiny-random
minimax-m2.7-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 MiniMaxAI/MiniMax-M2.7.
Downloads · 30 days
422
40% of all-time downloads
All-time downloads
1K
Public
Parameters
3.6M
22.9 MB on disk
Likes
2
Public
Click a slice to open those files.
.json15.5 MB · 68%
How the weights are stored.
BF163.6M · 100%
From the Hugging Face model README
This tiny model is intended for debugging. It is randomly initialized using the configuration adapted from MiniMaxAI/MiniMax-M2.7.
| File path | Size |
|---|---|
| model.safetensors | 7.4MB |
vllm serve yujiepan/minimax-m2.7-tiny-random \
--trust-remote-code \
--tensor-parallel-size 1 \
--reasoning-parser minimax_m2_append_think \
--enable-auto-tool-choice \
--tool-call-parser minimax_m2
python -m sglang.launch_server \
-trust-remote-code \
--model-path yujiepan/minimax-m2.7-tiny-random \
--tp-size 1 \
--tool-call-parser minimax-m2 \
--reasoning-parser minimax-append-think
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
model_id = "yujiepan/minimax-m2.7-tiny-random"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
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.', max_new_tokens=16))
import json
from pathlib import Path
import accelerate
import torch
import transformers
from huggingface_hub import file_exists, hf_hub_download
from transformers import (
AutoConfig,
AutoModelForCausalLM,
AutoTokenizer,
GenerationConfig,
set_seed,
)
source_model_id = "MiniMaxAI/MiniMax-M2.7"
save_folder = "/tmp/yujiepan/minimax-m27-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)
del config_json['auto_map'] # is already supported in transformers codebase
config_json["attn_type_list"] = [1, 1]
config_json['head_dim'] = 32
config_json['hidden_size'] = 8
config_json['intermediate_size'] = 32
config_json['num_attention_heads'] = 8
config_json['num_key_value_heads'] = 4
config_json['num_hidden_layers'] = 2
config_json['mlp_intermediate_size'] = 32
config_json['rotary_dim'] = 16
del config_json['quantization_config']
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,
)
torch.set_default_dtype(torch.bfloat16)
model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
torch.set_default_dtype(torch.float32)
print(model)
# according to source model, gate is in FP32
for i in range(config.num_hidden_layers):
model.model.layers[i].mlp.gate = model.model.layers[i].mlp.gate.float()
model.model.layers[i].mlp.e_score_correction_bias = model.model.layers[i].mlp.e_score_correction_bias.float()
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)
</details>
MiniMaxM2ForCausalLM(
(model): MiniMaxM2Model(
(embed_tokens): Embedding(200064, 8)
(layers): ModuleList(
(0-1): 2 x MiniMaxM2DecoderLayer(
(self_attn): MiniMaxM2Attention(
(q_proj): Linear(in_features=8, out_features=256, bias=False)
(k_proj): Linear(in_features=8, out_features=128, bias=False)
(v_proj): Linear(in_features=8, out_features=128, bias=False)
(o_proj): Linear(in_features=256, out_features=8, bias=False)
(q_norm): MiniMaxM2RMSNorm((256,), eps=1e-06)
(k_norm): MiniMaxM2RMSNorm((128,), eps=1e-06)
)
(mlp): MiniMaxM2SparseMoeBlock(
(gate): MiniMaxM2TopKRouter()
(experts): MiniMaxM2Experts(
(act_fn): SiLUActivation()
)
)
(input_layernorm): MiniMaxM2RMSNorm((8,), eps=1e-06)
(post_attention_layernorm): MiniMaxM2RMSNorm((8,), eps=1e-06)
)
)
(norm): MiniMaxM2RMSNorm((8,), eps=1e-06)
(rotary_emb): MiniMaxM2RotaryEmbedding()
)
(lm_head): Linear(in_features=8, out_features=200064, bias=False)
)
</details>