Views
No views yet
1git clone https://github.com/intel/intel-extension-for-transformers.git
2cd intel-extension-for-transformers
3
4docker build --no-cache ./ --target hpu --build-arg REPO=https://github.com/intel/intel-extension-for-transformers.git --build-arg ITREX_VER=main -f ./intel_extension_for_transformers/neural_chat/docker/Dockerfile -t chatbot_finetuning:latest
5
6docker run -it --runtime=habana -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --net=host --ipc=host chatbot_finetuning:latest
7
8# after entering docker container
9cd examples/finetuning/finetune_neuralchat_v3
10finetune_neuralchat_v3.py, the default use_habana=True, use_lazy_mode=True, device="hpu" for Gaudi2. And if you want to run it on NVIDIA GPU, you can set them use_habana=False, use_lazy_mode=False, device="auto".1deepspeed --include localhost:0,1,2,3,4,5,6,7 \
2 --master_port 29501 \
3 finetune_neuralchat_v3.py1python apply_lora.py \
2 --base-model-path mistralai/Mistral-7B-v0.1 \
3 --lora-model-path finetuned_model/ \
4 --output-path finetuned_model_lora1import transformers
2
3
4model_name = 'Intel/neural-chat-7b-v3-3'
5model = transformers.AutoModelForCausalLM.from_pretrained(model_name)
6tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
7
8def generate_response(system_input, user_input):
9
10 # Format the input using the provided template
11 prompt = f"### System:\n{system_input}\n### User:\n{user_input}\n### Assistant:\n"
12
13 # Tokenize and encode the prompt
14 inputs = tokenizer.encode(prompt, return_tensors="pt", add_special_tokens=False)
15
16 # Generate a response
17 outputs = model.generate(inputs, max_length=1000, num_return_sequences=1)
18 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
19
20 # Extract only the assistant's response
21 return response.split("### Assistant:\n")[-1]
22
23
24# Example usage
25system_input = "You are a math expert assistant. Your mission is to help users understand and solve various math problems. You should provide step-by-step solutions, explain reasonings and give the correct answer."
26user_input = "calculate 100 + 520 + 60"
27response = generate_response(system_input, user_input)
28print(response)
29
30# expected response
31"""
32To calculate the sum of 100, 520, and 60, we will follow these steps:
33
341. Add the first two numbers: 100 + 520
352. Add the result from step 1 to the third number: (100 + 520) + 60
36
37Step 1: Add 100 and 520
38100 + 520 = 620
39
40Step 2: Add the result from step 1 to the third number (60)
41(620) + 60 = 680
42
43So, the sum of 100, 520, and 60 is 680.
44"""1from transformers import AutoTokenizer, TextStreamer
2import torch
3from intel_extension_for_transformers.transformers import AutoModelForCausalLM
4import intel_extension_for_pytorch as ipex
5
6model_name = "Intel/neural-chat-7b-v3-3"
7prompt = "Once upon a time, there existed a little girl,"
8
9tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
10inputs = tokenizer(prompt, return_tensors="pt").input_ids
11streamer = TextStreamer(tokenizer)
12
13model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
14model = ipex.optimize(model.eval(), dtype=torch.bfloat16, inplace=True, level="O1", auto_kernel_selection=True)
15
16outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)1from transformers import AutoTokenizer, TextStreamer
2from intel_extension_for_transformers.transformers import AutoModelForCausalLM, WeightOnlyQuantConfig
3model_name = "Intel/neural-chat-7b-v3-3"
4
5# for int8, should set weight_dtype="int8"
6config = WeightOnlyQuantConfig(compute_dtype="bf16", weight_dtype="int4")
7prompt = "Once upon a time, there existed a little girl,"
8
9tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
10inputs = tokenizer(prompt, return_tensors="pt").input_ids
11streamer = TextStreamer(tokenizer)
12
13model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=config)
14outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
15