|
|
--- |
|
|
library_name: peft |
|
|
--- |
|
|
## Training procedure |
|
|
|
|
|
|
|
|
The following `bitsandbytes` quantization config was used during training: |
|
|
- quant_method: bitsandbytes |
|
|
- load_in_8bit: False |
|
|
- load_in_4bit: True |
|
|
- llm_int8_threshold: 6.0 |
|
|
- llm_int8_skip_modules: None |
|
|
- llm_int8_enable_fp32_cpu_offload: False |
|
|
- llm_int8_has_fp16_weight: False |
|
|
- bnb_4bit_quant_type: nf4 |
|
|
- bnb_4bit_use_double_quant: True |
|
|
- bnb_4bit_compute_dtype: float16 |
|
|
|
|
|
The following `bitsandbytes` quantization config was used during training: |
|
|
- quant_method: bitsandbytes |
|
|
- load_in_8bit: False |
|
|
- load_in_4bit: True |
|
|
- llm_int8_threshold: 6.0 |
|
|
- llm_int8_skip_modules: None |
|
|
- llm_int8_enable_fp32_cpu_offload: False |
|
|
- llm_int8_has_fp16_weight: False |
|
|
- bnb_4bit_quant_type: nf4 |
|
|
- bnb_4bit_use_double_quant: True |
|
|
- bnb_4bit_compute_dtype: float16 |
|
|
### Framework versions |
|
|
|
|
|
- PEFT 0.5.0 |
|
|
|
|
|
- PEFT 0.5.0 |
|
|
# Inference Code |
|
|
|
|
|
### Install required libraries |
|
|
|
|
|
```python |
|
|
!pip install transformers peft |
|
|
``` |
|
|
### Login |
|
|
```python |
|
|
from huggingface_hub import login |
|
|
|
|
|
token = "Your Key" |
|
|
login(token) |
|
|
``` |
|
|
#### Import necessary modules |
|
|
```python |
|
|
from peft import PeftModel, PeftConfig |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
import torch |
|
|
from transformers import BitsAndBytesConfig |
|
|
from peft import prepare_model_for_kbit_training |
|
|
``` |
|
|
#### Load PEFT model and configuration |
|
|
```python |
|
|
config = PeftConfig.from_pretrained("Shreyas45/Llama2_Text-to-SQL_Fintuned") |
|
|
peft_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf") |
|
|
peft_model = PeftModel.from_pretrained(peft_model, "Shreyas45/Llama2_Text-to-SQL_Fintuned") |
|
|
``` |
|
|
### Load trained model and tokenizer |
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig |
|
|
from peft import prepare_model_for_kbit_training |
|
|
|
|
|
trained_model_tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, trust_remote_code=True) |
|
|
trained_model_tokenizer.pad_token = trained_model_tokenizer.eos_token |
|
|
``` |
|
|
|
|
|
### Define a SQL query |
|
|
```python |
|
|
query = '''In the table named management with columns (department_id VARCHAR, temporary_acting VARCHAR); |
|
|
CREATE TABLE department (name VARCHAR, num_employees VARCHAR, department_id VARCHAR), |
|
|
Show the name and number of employees for the departments managed by heads whose temporary acting value is 'Yes'?''' |
|
|
``` |
|
|
|
|
|
### Construct prompt |
|
|
```python |
|
|
prompt = f'''### Instruction: Below is an instruction that describes a task and the schema of the table in the database. |
|
|
Write a response that generates a request in the form of a SQL query. |
|
|
Here the schema of the table is mentioned first followed by the question for which the query needs to be generated. |
|
|
And the question is: {query} |
|
|
###Output: ''' |
|
|
``` |
|
|
### Tokenize the prompt |
|
|
```python |
|
|
encodings = trained_model_tokenizer(prompt, return_tensors='pt') |
|
|
``` |
|
|
#### Configure generation parameters |
|
|
```python |
|
|
|
|
|
generation_config = peft_model.generation_config |
|
|
generation_config.max_new_token = 1024 |
|
|
generation_config.temperature = 0.7 |
|
|
generation_config.top_p = 0.7 |
|
|
generation_config.num_return_sequence = 1 |
|
|
generation_config.pad_token_id = trained_model_tokenizer.pad_token_id |
|
|
generation_config.eos_token_id = trained_model_tokenizer.eos_token_id |
|
|
``` |
|
|
### Generate SQL query using the model |
|
|
```python |
|
|
with torch.inference_mode(): |
|
|
outputs = peft_model.generate( |
|
|
input_ids=encodings.input_ids, |
|
|
attention_mask=encodings.attention_mask, |
|
|
generation_config=generation_config, |
|
|
max_new_tokens=100 |
|
|
) |
|
|
``` |
|
|
### Decode and print the generated SQL query |
|
|
```python |
|
|
generated_query = trained_model_tokenizer.decode(outputs[0]) |
|
|
print("Generated SQL Query:") |
|
|
print(generated_query) |
|
|
``` |
|
|
|