File size: 3,884 Bytes
11aad8f
 
cdf0b51
11aad8f
 
cdf0b51
 
 
 
 
 
 
11aad8f
350dc4a
 
 
 
 
8fed7be
11aad8f
 
cdf0b51
a2e0bb7
cdf0b51
 
 
30cfe04
a6f50b8
cdf0b51
bcc0173
cdf0b51
350dc4a
7bef3fd
 
 
cdf0b51
 
 
 
 
 
 
 
646963e
cdf0b51
 
 
 
 
 
 
 
 
7bef3fd
cdf0b51
7bef3fd
 
cdf0b51
 
 
 
 
 
 
 
 
 
 
 
 
7bef3fd
 
 
 
cdf0b51
 
 
 
 
 
 
 
 
7bef3fd
 
 
cdf0b51
 
 
 
 
 
7bef3fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cdf0b51
 
 
 
 
 
a6f50b8
 
 
 
 
 
 
 
 
a9f21ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
tags:
- Code-Generation
- autotrain
- text-generation
- Llama2
- Pytorch
- PEFT
- QLoRA
- code
- coding
pipeline_tag: text-generation
widget:
- text: Write a program that add five numbers
- text: Write a python code for reading multiple images
- text: Write a python code for the name Ahmed to be in a reversed order
datasets:
- AhmedSSoliman/CodeSearchNet
- AhmedSSoliman/CodeSearchNet-Python
---

# LlaMa2-CodeGen
This model is  [**LlaMa2-7b**](https://huggingface.co/meta-llama/Llama-2-7b) which is fine-tuned on the  [**CodeSearchNet dataset**](https://github.com/github/CodeSearchNet) by using the method  [**QLoRA**](https://github.com/artidoro/qlora) with [PEFT](https://github.com/huggingface/peft) library.

# Model Trained on Google Colab Pro Using AutoTrain, PEFT and QLoRA

[![Open in Colab][Colab Badge]][RDP Notebook]


# You can load the LlaMa2-CodeGen model on google colab.





### Example 
```py


import torch
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

peft_model_id = "AhmedSSoliman/Llama2-CodeGen-PEFT-QLoRA"
config = PeftConfig.from_pretrained(peft_model_id)
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_4bit=True, device_map='auto')
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)

# Load the Lora model
model = PeftModel.from_pretrained(model, peft_model_id)




def create_prompt(instruction):
  system = "You are using the Llam2-CodeGen model, a coding assistant that will help the user to resolve the following instruction:\n"
  instruction = "### Input: " + instruction
  return system + "\n" + instruction + "\n\n" + "### Response:" + "\n"

def generate(
        instruction,
        max_new_tokens=128,
        temperature=0.1,
        top_p=0.75,
        top_k=40,
        num_beams=4,
        **kwargs,
):
    prompt = create_prompt(instruction)
    print(prompt)
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    #input_ids = inputs["input_ids"].to("cuda")
    #attention_mask = inputs["attention_mask"].to("cuda")

    generation_config = GenerationConfig(
        temperature=temperature,
        top_p=top_p,
        top_k=top_k,
        num_beams=num_beams,
        **kwargs,
    )
    with torch.no_grad():
        generation_output = model.generate(
            #input_ids=input_ids,
            #attention_mask=attention_mask,
            **inputs,
            generation_config=generation_config,
            return_dict_in_generate=True,
            output_scores=True,
            max_new_tokens=max_new_tokens,
            early_stopping=True
        )



    generated_response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    stop_output = "### Input"
    gen_response = (generated_response.split(stop_output))[0]


    #s = generation_output.sequences[0]
    #output = tokenizer.decode(s, skip_special_tokens=True)
    #stop_output = "### Input"

    #gen_response = (output.split(stop_output))[0]


    #return output.split("### Response:")[1].lstrip("\n")
    return gen_response






instruction = """
 Write a python code for the name Ahmed to be in a reversed order
"""
print(generate(instruction))
```


[Colab Badge]:          https://colab.research.google.com/assets/colab-badge.svg
[License-Badge]:        https://img.shields.io/badge/License-MIT-blue.svg
[RDP Issues]:           https://img.shields.io/github/issues/PradyumnaKrishna/Colab-Hacks/Colab%20RDP?label=Issues
[RDP Notebook]:         https://colab.research.google.com/drive/18sAFC7msV0gJ24wn5gl41nU0QRynfLqG?usp=sharing
[Code Issues]:          https://img.shields.io/github/issues/PradyumnaKrishna/Colab-Hacks/Code%20Server?label=Issues
[Code Notebook]:        https://colab.research.google.com/drive/18sAFC7msV0gJ24wn5gl41nU0QRynfLqG?usp=sharing