Views
No views yet
1python3 -m vllm.entrypoints.openai.api_server \
2 --enable-auto-tool-choice \
3 --tool-call-parser seed_oss \
4 --trust-remote-code \
5 --model ./<local_download_folder> \
6 --chat-template ./<local_download_folder>/chat_template.jinja \
7 --tensor-parallel-size 2
81import os
2import re
3
4import torch
5from transformers import AutoModelForCausalLM, AutoTokenizer
6
7model_id = "yujiepan/seed-oss-tiny-random"
8
9tokenizer = AutoTokenizer.from_pretrained(model_id)
10model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.bfloat16)
11messages = [
12 {"role": "user", "content": "How to make pasta?"},
13]
14tokenized_chat = tokenizer.apply_chat_template(
15 messages,
16 tokenize=True,
17 add_generation_prompt=True,
18 return_tensors="pt",
19 thinking_budget=64 # control the thinking budget
20)
21
22outputs = model.generate(tokenized_chat.to(model.device), max_new_tokens=128)
23output_text = tokenizer.decode(outputs[0])
24print(output_text)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 set_seed,
13)
14
15source_model_id = "ByteDance-Seed/Seed-OSS-36B-Instruct"
16save_folder = "/tmp/yujiepan/seed-oss-tiny-random"
17
18processor = AutoProcessor.from_pretrained(source_model_id, trust_remote_code=True)
19processor.save_pretrained(save_folder)
20
21with open(hf_hub_download(source_model_id, filename='config.json', repo_type='model'), 'r', encoding='utf-8') as f:
22 config_json = json.load(f)
23config_json['hidden_size'] = 8
24config_json['head_dim'] = 32 # vllm requirement
25config_json['intermediate_size'] = 32
26config_json['num_attention_heads'] = 8
27config_json['num_hidden_layers'] = 2
28config_json['num_key_value_heads'] = 4 # better support tensor parallel
29config_json['tie_word_embeddings'] = False
30with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
31 json.dump(config_json, f, indent=2)
32
33config = AutoConfig.from_pretrained(
34 save_folder,
35 trust_remote_code=True,
36)
37print(config)
38torch.set_default_dtype(torch.bfloat16)
39model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
40torch.set_default_dtype(torch.float32)
41if file_exists(filename="generation_config.json", repo_id=source_model_id, repo_type='model'):
42 model.generation_config = GenerationConfig.from_pretrained(
43 source_model_id, trust_remote_code=True,
44 )
45 model.generation_config.do_sample = True
46set_seed(42)
47model = model.cpu() # cpu is more stable for random initialization across machines
48with torch.no_grad():
49 for name, p in sorted(model.named_parameters()):
50 torch.nn.init.normal_(p, 0, 0.1)
51 print(name, p.shape)
52model.save_pretrained(save_folder)1SeedOssForCausalLM(
2 (model): SeedOssModel(
3 (embed_tokens): Embedding(155136, 8, padding_idx=1)
4 (layers): ModuleList(
5 (0-1): 2 x SeedOssDecoderLayer(
6 (self_attn): SeedOssAttention(
7 (q_proj): Linear(in_features=8, out_features=256, bias=True)
8 (k_proj): Linear(in_features=8, out_features=128, bias=True)
9 (v_proj): Linear(in_features=8, out_features=128, bias=True)
10 (o_proj): Linear(in_features=256, out_features=8, bias=False)
11 )
12 (mlp): SeedOssMLP(
13 (gate_proj): Linear(in_features=8, out_features=32, bias=False)
14 (up_proj): Linear(in_features=8, out_features=32, bias=False)
15 (down_proj): Linear(in_features=32, out_features=8, bias=False)
16 (act_fn): SiLU()
17 )
18 (input_layernorm): SeedOssRMSNorm((8,), eps=1e-06)
19 (post_attention_layernorm): SeedOssRMSNorm((8,), eps=1e-06)
20 )
21 )
22 (norm): SeedOssRMSNorm((8,), eps=1e-06)
23 (rotary_emb): SeedOssRotaryEmbedding()
24 )
25 (lm_head): Linear(in_features=8, out_features=155136, bias=False)
26)