quick_start.py 1.33 KB
Newer Older
Rayyyyy's avatar
Updata  
Rayyyyy committed
1
'''based on transformers'''
Rayyyyy's avatar
Rayyyyy committed
2
import torch
Rayyyyy's avatar
Rayyyyy committed
3
4
import argparse

Rayyyyy's avatar
Rayyyyy committed
5
6
from transformers import AutoModelForCausalLM, AutoTokenizer

Rayyyyy's avatar
Rayyyyy committed
7
8
9
10
11
12
13
14
15
16
parse = argparse.ArgumentParser()
parse.add_argument('--model_name_or_path', default="THUDM/glm-4-9b-chat")
parse.add_argument('--device', default="cuda")
parse.add_argument('--query', type=str, default="你好")
args = parse.parse_args()

device = args.device
model_name_or_path = args.model_name_or_path

tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
Rayyyyy's avatar
Rayyyyy committed
17

Rayyyyy's avatar
Rayyyyy committed
18
query = args.query
Rayyyyy's avatar
Rayyyyy committed
19
20
21
22
23
24
25
26
27
inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],
                                       add_generation_prompt=True,
                                       tokenize=True,
                                       return_tensors="pt",
                                       return_dict=True
                                       )

inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
Rayyyyy's avatar
Rayyyyy committed
28
    model_name_or_path,
Rayyyyy's avatar
Rayyyyy committed
29
30
31
32
33
34
35
36
37
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=True
).to(device).eval()

gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1}
with torch.no_grad():
    outputs = model.generate(**inputs, **gen_kwargs)
    outputs = outputs[:, inputs['input_ids'].shape[1]:]
Rayyyyy's avatar
Rayyyyy committed
38
    print('Result', tokenizer.decode(outputs[0], skip_special_tokens=True))