Views
No views yet
| File path | Size |
|---|---|
| model.safetensors | 11.8MB |
1import torch
2from transformers import AutoProcessor, Mistral3ForConditionalGeneration
3
4# Load model and tokenizer
5model_id = "yujiepan/mistral-small-4-tiny-random"
6model = Mistral3ForConditionalGeneration.from_pretrained(
7 model_id,
8 device_map="auto",
9 torch_dtype="bfloat16",
10 trust_remote_code=True,
11)
12processor = AutoProcessor.from_pretrained(model_id)
13image_url = "https://static.wikia.nocookie.net/essentialsdocs/images/7/70/Battle.png/revision/latest?cb=20220523172438"
14messages = [
15 {
16 "role": "user",
17 "content": [
18 {
19 "type": "text",
20 "text": "What is this?",
21 },
22 {"type": "image_url", "image_url": {"url": image_url}},
23 ],
24 },
25]
26inputs = processor.apply_chat_template(
27 messages,
28 return_tensors="pt",
29 tokenize=True,
30 return_dict=True,
31 reasoning_effort="high",
32)
33inputs = inputs.to(model.device)
34
35output = model.generate(
36 **inputs,
37 max_new_tokens=32,
38 do_sample=True,
39 temperature=0.7,
40)[0]
41decoded_output = processor.decode(output, skip_special_tokens=False).replace(
42 "[IMG]", "I"
43)
44print(decoded_output)1import json
2from pathlib import Path
3
4import accelerate
5import torch
6from huggingface_hub import file_exists, hf_hub_download
7from transformers import (
8 AutoConfig,
9 AutoModelForCausalLM,
10 AutoProcessor,
11 GenerationConfig,
12 Mistral3ForConditionalGeneration,
13 MistralCommonBackend,
14 set_seed,
15)
16
17source_model_id = "mistralai/Mistral-Small-4-119B-2603"
18save_folder = "/tmp/yujiepan/mistral-small-4-tiny-random"
19
20processor = AutoProcessor.from_pretrained(source_model_id, trust_remote_code=True)
21processor.save_pretrained(save_folder)
22processor = MistralCommonBackend.from_pretrained(
23 source_model_id, trust_remote_code=True
24)
25processor.save_pretrained(save_folder)
26
27with open(
28 hf_hub_download(source_model_id, filename="config.json", repo_type="model"),
29 "r",
30 encoding="utf-8",
31) as f:
32 config_json = json.load(f)
33
34config_json["text_config"].update(
35 {
36 "hidden_size": 8,
37 "intermediate_size": 32,
38 "moe_intermediate_size": 32,
39 "num_hidden_layers": 2,
40 "q_lora_rank": 32,
41 }
42)
43# config_json['tie_word_embeddings'] = True
44config_json["vision_config"].update(
45 {
46 "head_dim": 32,
47 "hidden_size": 64,
48 "intermediate_size": 64,
49 "num_attention_heads": 2,
50 "num_hidden_layers": 2,
51 }
52)
53del config_json["quantization_config"]
54with open(f"{save_folder}/config.json", "w", encoding="utf-8") as f:
55 json.dump(config_json, f, indent=2)
56
57config = AutoConfig.from_pretrained(
58 save_folder,
59 trust_remote_code=True,
60)
61print(config)
62torch.set_default_dtype(torch.bfloat16)
63model = Mistral3ForConditionalGeneration(config)
64torch.set_default_dtype(torch.float32)
65if file_exists(
66 filename="generation_config.json", repo_id=source_model_id, repo_type="model"
67):
68 model.generation_config = GenerationConfig.from_pretrained(
69 source_model_id,
70 trust_remote_code=True,
71 )
72 model.generation_config.do_sample = True
73 print(model.generation_config)
74model = model.cpu()
75with torch.no_grad():
76 for name, p in sorted(model.named_parameters()):
77 torch.nn.init.normal_(p, 0, 0.2)
78 print(name, p.shape)
79model.save_pretrained(save_folder)
80print(model)1Mistral3ForConditionalGeneration(
2 (model): Mistral3Model(
3 (vision_tower): PixtralVisionModel(
4 (patch_conv): Conv2d(3, 64, kernel_size=(14, 14), stride=(14, 14), bias=False)
5 (ln_pre): PixtralRMSNorm((64,), eps=1e-05)
6 (transformer): PixtralTransformer(
7 (layers): ModuleList(
8 (0-1): 2 x PixtralAttentionLayer(
9 (attention_norm): PixtralRMSNorm((64,), eps=1e-05)
10 (feed_forward): PixtralMLP(
11 (gate_proj): Linear(in_features=64, out_features=64, bias=False)
12 (up_proj): Linear(in_features=64, out_features=64, bias=False)
13 (down_proj): Linear(in_features=64, out_features=64, bias=False)
14 (act_fn): SiLUActivation()
15 )
16 (attention): PixtralAttention(
17 (k_proj): Linear(in_features=64, out_features=64, bias=False)
18 (v_proj): Linear(in_features=64, out_features=64, bias=False)
19 (q_proj): Linear(in_features=64, out_features=64, bias=False)
20 (o_proj): Linear(in_features=64, out_features=64, bias=False)
21 )
22 (ffn_norm): PixtralRMSNorm((64,), eps=1e-05)
23 )
24 )
25 )
26 (patch_positional_embedding): PixtralRotaryEmbedding()
27 )
28 (multi_modal_projector): Mistral3MultiModalProjector(
29 (norm): Mistral3RMSNorm((64,), eps=1e-06)
30 (patch_merger): Mistral3PatchMerger(
31 (merging_layer): Linear(in_features=256, out_features=64, bias=False)
32 )
33 (linear_1): Linear(in_features=64, out_features=8, bias=False)
34 (act): GELUActivation()
35 (linear_2): Linear(in_features=8, out_features=8, bias=False)
36 )
37 (language_model): Mistral4Model(
38 (embed_tokens): Embedding(131072, 8, padding_idx=11)
39 (layers): ModuleList(
40 (0-1): 2 x Mistral4DecoderLayer(
41 (self_attn): Mistral4Attention(
42 (q_a_proj): Linear(in_features=8, out_features=32, bias=False)
43 (q_a_layernorm): Mistral4RMSNorm((32,), eps=1e-06)
44 (q_b_proj): Linear(in_features=32, out_features=4096, bias=False)
45 (kv_a_proj_with_mqa): Linear(in_features=8, out_features=320, bias=False)
46 (kv_a_layernorm): Mistral4RMSNorm((256,), eps=1e-06)
47 (kv_b_proj): Linear(in_features=256, out_features=6144, bias=False)
48 (o_proj): Linear(in_features=4096, out_features=8, bias=False)
49 )
50 (mlp): Mistral4MoE(
51 (experts): Mistral4NaiveMoe(
52 (act_fn): SiLUActivation()
53 )
54 (gate): Mistral4TopkRouter()
55 (shared_experts): Mistral4MLP(
56 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
57 (up_proj): Linear(in_features=8, out_features=32, bias=False)
58 (down_proj): Linear(in_features=32, out_features=8, bias=False)
59 (act_fn): SiLUActivation()
60 )
61 )
62 (input_layernorm): Mistral4RMSNorm((8,), eps=1e-06)
63 (post_attention_layernorm): Mistral4RMSNorm((8,), eps=1e-06)
64 )
65 )
66 (norm): Mistral4RMSNorm((8,), eps=1e-06)
67 (rotary_emb): Mistral4RotaryEmbedding()
68 )
69 )
70 (lm_head): Linear(in_features=8, out_features=131072, bias=False)
71)