Views
No views yet

pip3 install --upgrade autoawq transformers1from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
2
3model_name_or_path = "MohamedRashad/Arabic-Orpo-Llama-3-8B-Instruct-AWQ"
4
5tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
6model = AutoModelForCausalLM.from_pretrained(
7 model_name_or_path,
8 attn_implementation="flash_attention_2", # disable if you have problems with flash attention 2
9 torch_dtype=torch.bfloat16,
10 low_cpu_mem_usage=True,
11 device_map="auto"
12)
13
14# Using the text streamer to stream output one token at a time
15streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
16
17messages = [
18 {"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
19 {"role": "user", "content": "مرحبا"},
20]
21
22input_ids = tokenizer.apply_chat_template(
23 messages,
24 add_generation_prompt=True,
25 return_tensors="pt"
26).to(model.device)
27
28terminators = [
29 tokenizer.eos_token_id,
30 tokenizer.convert_tokens_to_ids("<|eot_id|>")
31]
32
33generation_params = {
34 "do_sample": True,
35 "temperature": 0.6,
36 "top_p": 0.9,
37 "top_k": 40,
38 "max_new_tokens": 1024,
39 "eos_token_id": terminators,
40}
41
42# Generate streamed output, visible one token at a time
43generation_output = model.generate(
44 tokens,
45 streamer=streamer,
46 **generation_params
47)
48
49# Generation without a streamer, which will include the prompt in the output
50generation_output = model.generate(
51 tokens,
52 **generation_params
53)
54
55# Get the tokens from the output, decode them, print them
56token_output = generation_output[0]
57text_output = tokenizer.decode(token_output)
58print("model.generate output: ", text_output)
59
60# Inference is also possible via Transformers' pipeline
61from transformers import pipeline
62
63pipe = pipeline(
64 "text-generation",
65 model=model,
66 tokenizer=tokenizer,
67 **generation_params
68)
69
70pipe_output = pipe(prompt_template)[0]['generated_text']
71print("pipeline output: ", pipe_output)
72