ken123777 commited on
Commit
9923ab6
Β·
verified Β·
1 Parent(s): 457001c

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +300 -0
README.md ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - en
5
+ - ko
6
+ - code
7
+ library_name: transformers
8
+ tags:
9
+ - code-llama
10
+ - code-review
11
+ - fine-tuning
12
+ - SFT
13
+ - LoRA
14
+ pipeline_tag: text-generation
15
+ base_model:
16
+ - codellama/CodeLlama-7b-hf
17
+ ---
18
+
19
+ # Model Card for codellama-7b-code-review
20
+
21
+ 이 λͺ¨λΈ μΉ΄λ“œλŠ” `codellama-7b-code-review` λͺ¨λΈμ— λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.
22
+
23
+ ## Model Details / λͺ¨λΈ 상세 정보
24
+
25
+ <details>
26
+ <summary><strong>English</strong></summary>
27
+
28
+ This model is fine-tuned from Meta's `codellama/CodeLlama-7b-hf` to review and provide feedback on code changes (`diffs`) from GitHub Pull Requests. It has been primarily trained on JavaScript and React code reviews, aiming to generate constructive feedback from a senior engineer's perspective on topics like code quality, architecture, performance, and conventions.
29
+
30
+ - **Developed by:** [ken123777](https://huggingface.co/ken123777)
31
+ - **Model type:** Causal Language Model
32
+ - **Language(s):** English, Korean, Diff format
33
+ - **License:** apache-2.0
34
+ - **Finetuned from model:** `codellama/CodeLlama-7b-hf`
35
+
36
+ </details>
37
+
38
+ <details>
39
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
40
+
41
+ 이 λͺ¨λΈμ€ Meta의 `codellama/CodeLlama-7b-hf` λͺ¨λΈμ„ 기반으둜, GitHub Pull Request의 μ½”λ“œ 변경사항(`diff`)을 λ¦¬λ·°ν•˜κ³  ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜λ„λ‘ νŒŒμΈνŠœλ‹λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 주둜 JavaScript와 React μ½”λ“œ 리뷰에 쀑점을 두고 ν•™μŠ΅λ˜μ—ˆμœΌλ©°, μ‹œλ‹ˆμ–΄ μ—”μ§€λ‹ˆμ–΄μ˜ κ΄€μ μ—μ„œ μ½”λ“œ ν’ˆμ§ˆ, μ•„ν‚€ν…μ²˜, μ„±λŠ₯, μ»¨λ²€μ…˜ 등에 λŒ€ν•œ 건섀적인 ν”Όλ“œλ°±μ„ μƒμ„±ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.
42
+
43
+ - **개발자:** [ken123777](https://huggingface.co/ken123777)
44
+ - **λͺ¨λΈ μ’…λ₯˜:** 인과 관계 μ–Έμ–΄ λͺ¨λΈ (Causal Language Model)
45
+ - **μ–Έμ–΄:** μ˜μ–΄, ν•œκ΅­μ–΄, Diff ν˜•μ‹
46
+ - **λΌμ΄μ„ μŠ€:** apache-2.0
47
+ - **νŒŒμΈνŠœλ‹ 기반 λͺ¨λΈ:** `codellama/CodeLlama-7b-hf`
48
+
49
+ </details>
50
+
51
+ ### Model Sources / λͺ¨λΈ μ†ŒμŠ€
52
+
53
+ - **Repository:** [https://huggingface.co/ken12377/codellama-7b-code-review](https://huggingface.co/ken12377/codellama-7b-code-review)
54
+
55
+ ## Uses / μ‚¬μš© 정보
56
+
57
+ <details>
58
+ <summary><strong>English</strong></summary>
59
+
60
+ ### Direct Use
61
+
62
+ This model can be used directly for code review automation. By providing code changes in `diff` format as input, the model will generate review comments.
63
+
64
+ **Warning:** The content generated by the model always requires review. The final decision must be made by a human developer.
65
+
66
+ ### Downstream Use
67
+
68
+ This model can be reused as a base for further fine-tuning on specific project's internal coding conventions or more specialized review criteria.
69
+
70
+ ### Out-of-Scope Use
71
+
72
+ This model is specialized for code review tasks. It may not perform well for other purposes such as general-purpose chatbots, code generation, or translation. Especially, inputting code that is not in `diff` format may lead to unexpected results.
73
+
74
+ </details>
75
+
76
+ <details>
77
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
78
+
79
+ ### 직접 μ‚¬μš©
80
+
81
+ 이 λͺ¨λΈμ€ μ½”λ“œ 리뷰 μžλ™ν™”μ— 직접 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. `diff` ν˜•μ‹μ˜ μ½”λ“œ 변경사항을 μž…λ ₯으둜 μ œκ³΅ν•˜λ©΄, λͺ¨λΈμ€ ν•΄λ‹Ή μ½”λ“œμ— λŒ€ν•œ 리뷰 μ½”λ©˜νŠΈλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
82
+
83
+ **κ²½κ³ **: λͺ¨λΈμ΄ μƒμ„±ν•˜λŠ” λ‚΄μš©μ€ 항상 κ²€ν† κ°€ ν•„μš”ν•˜λ©°, μ΅œμ’… 결정은 κ°œλ°œμžκ°€ 직접 λ‚΄λ €μ•Ό ν•©λ‹ˆλ‹€.
84
+
85
+ ### λ‹€μš΄μŠ€νŠΈλ¦Ό μ‚¬μš©
86
+
87
+ 이 λͺ¨λΈμ€ νŠΉμ • ν”„λ‘œμ νŠΈμ˜ λ‚΄λΆ€ μ½”λ”© μ»¨λ²€μ…˜μ΄λ‚˜ 더 μ „λ¬Έν™”λœ 리뷰 기쀀을 ν•™μŠ΅μ‹œν‚€κΈ° μœ„ν•œ 기반 λͺ¨λΈλ‘œ μž¬μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
88
+
89
+ ### μ‚¬μš© λ²”μœ„ μ™Έ
90
+
91
+ 이 λͺ¨λΈμ€ μ½”λ“œ 리뷰 νƒœμŠ€ν¬μ— νŠΉν™”λ˜μ–΄ μžˆμœΌλ―€λ‘œ, 일반적인 챗봇 λŒ€ν™”λ‚˜ μ½”λ“œ 생성, λ²ˆμ—­ λ“±μ˜ λ‹€λ₯Έ λͺ©μ μœΌλ‘œλŠ” 쒋은 μ„±λŠ₯을 보이지 μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 특히 `diff` ν˜•μ‹μ΄ μ•„λ‹Œ μ½”λ“œλ₯Ό μž…λ ₯ν•˜λ©΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
92
+
93
+ </details>
94
+
95
+ ## Bias, Risks, and Limitations / 편ν–₯, μœ„ν—˜ 및 ν•œκ³„
96
+
97
+ <details>
98
+ <summary><strong>English</strong></summary>
99
+
100
+ - **Data Bias:** The model was trained on public GitHub Pull Request data, so it may be biased towards specific coding styles or patterns present in that data.
101
+ - **Inaccuracy (Hallucination):** The model may occasionally generate feedback that is factually incorrect or out of context. The generated reviews always need verification.
102
+ - **Limited Knowledge:** The model's knowledge is limited to the data at the time of fine-tuning and may not reflect the latest library or framework updates.
103
+ </details>
104
+
105
+ <details>
106
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
107
+
108
+ - **데이터 편ν–₯:** λͺ¨λΈμ€ 곡개된 GitHub Pull Request 데이터λ₯Ό 기반으둜 ν•™μŠ΅λ˜μ—ˆμœΌλ―€λ‘œ, ν•΄λ‹Ή 데이터에 μ‘΄μž¬ν•˜λŠ” νŠΉμ • μ½”λ”© μŠ€νƒ€μΌμ΄λ‚˜ νŒ¨ν„΄μ— 편ν–₯λ˜μ–΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
109
+ - **λΆ€μ •ν™•μ„±(ν™˜κ°):** λͺ¨λΈμ€ λ•Œλ•Œλ‘œ 사싀과 λ‹€λ₯΄κ±°λ‚˜ λ¬Έλ§₯에 λ§žμ§€ μ•ŠλŠ” ν”Όλ“œλ°±μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μƒμ„±λœ λ¦¬λ·°λŠ” 항상 검증이 ν•„μš”ν•©λ‹ˆλ‹€.
110
+ - **μ œν•œλœ 지식:** λͺ¨λΈμ˜ 지식은 νŒŒμΈνŠœλ‹ μ‹œμ μ˜ λ°μ΄ν„°λ‘œ ν•œμ •λ˜μ–΄ 있으며, μ΅œμ‹  λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ ν”„λ ˆμž„μ›Œν¬ 변경사항을 λ°˜μ˜ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
111
+ </details>
112
+
113
+ ### Recommendations / ꢌμž₯ 사항
114
+
115
+ <details>
116
+ <summary><strong>English</strong></summary>
117
+ Users should treat the code reviews generated by the model as a 'draft' or 'assistive tool' to help the development process, not as a final judgment. It is recommended that a human expert reviews critical changes.
118
+ </details>
119
+
120
+ <details>
121
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
122
+ μ‚¬μš©μžλŠ” λͺ¨λΈμ΄ μƒμ„±ν•œ μ½”λ“œ 리뷰λ₯Ό μ΅œμ’…μ μΈ νŒλ‹¨μ΄ μ•„λ‹Œ, 개발 과정을 λ•λŠ” 'μ΄ˆμ•ˆ' λ˜λŠ” '보쑰 도ꡬ'둜 ν™œμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ€‘μš”ν•œ 변경사항에 λŒ€ν•΄μ„œλŠ” λ°˜λ“œμ‹œ 인간 μ „λ¬Έκ°€μ˜ κ²€ν† λ₯Ό κ±°μΉ˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.
123
+ </details>
124
+
125
+ ## How to Get Started with the Model / λͺ¨λΈ μ‹œμž‘ν•˜κΈ°
126
+
127
+ <details>
128
+ <summary><strong>English</strong></summary>
129
+
130
+ **Note:** This model may be available in two versions: **Adapter** and **Merged**. Use the appropriate code for your model type.
131
+
132
+ #### 1. Using the Adapter Model (`ken12377/codellama-7b-code-review-adapter`)
133
+
134
+ To use the adapter model, you must first load the base model and then apply the adapter using the `peft` library.
135
+
136
+ #### 2. Using the Merged Model (`ken12377/codellama-7b-code-review`)
137
+
138
+ If the model is fully merged with the base model, you can load it directly without `peft`.
139
+
140
+ </details>
141
+
142
+ <details>
143
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
144
+
145
+ **μ°Έκ³ :** 이 λͺ¨λΈμ€ **μ–΄λŒ‘ν„°(Adapter)** 와 **λ³‘ν•©λœ(Merged)** 두 κ°€μ§€ λ²„μ „μœΌλ‘œ 제곡될 수 μžˆμŠ΅λ‹ˆλ‹€. μžμ‹ μ˜ λͺ¨λΈ νƒ€μž…μ— λ§žλŠ” μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
146
+
147
+ #### 1. μ–΄λŒ‘ν„° λͺ¨λΈ μ‚¬μš©λ²• (`ken123777/codellama-7b-code-review-adapter`)
148
+
149
+ μ–΄λŒ‘ν„° λͺ¨λΈμ„ μ‚¬μš©ν•˜λ €λ©΄, 기반 λͺ¨λΈμ„ λ¨Όμ € λ‘œλ“œν•œ ν›„ `peft` 라이브러리λ₯Ό μ‚¬μš©ν•΄ μ–΄λŒ‘ν„°λ₯Ό μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
150
+
151
+ #### 2. λ³‘ν•©λœ λͺ¨λΈ μ‚¬μš©λ²• (`ken123777/codellama-7b-code-review`)
152
+
153
+ λͺ¨λΈμ΄ 기반 λͺ¨λΈκ³Ό μ™„μ „νžˆ λ³‘ν•©λœ 경우, `peft` 없이 직접 λͺ¨λΈμ„ λ‘œλ“œν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
154
+
155
+ </details>
156
+
157
+ ````python
158
+ import torch
159
+ from transformers import AutoModelForCausalLM, AutoTokenizer
160
+ from peft import PeftModel
161
+
162
+ # --- Configuration (Choose one) ---
163
+ # 1. For Adapter Model
164
+ use_adapter = True
165
+ base_model_name = "codellama/CodeLlama-7b-hf"
166
+ adapter_or_model_name = "ken12377/codellama-7b-code-review-adapter"
167
+
168
+ # 2. For Merged Model
169
+ # use_adapter = False
170
+ # adapter_or_model_name = "ken12377/codellama-7b-code-review"
171
+
172
+ # --- Load Model and Tokenizer ---
173
+ if use_adapter:
174
+ base_model = AutoModelForCausalLM.from_pretrained(
175
+ base_model_name,
176
+ torch_dtype=torch.float16,
177
+ device_map="auto",
178
+ )
179
+ tokenizer = AutoTokenizer.from_pretrained(adapter_or_model_name)
180
+ model = PeftModel.from_pretrained(base_model, adapter_or_model_name)
181
+ else:
182
+ tokenizer = AutoTokenizer.from_pretrained(adapter_or_model_name)
183
+ model = AutoModelForCausalLM.from_pretrained(
184
+ adapter_or_model_name,
185
+ torch_dtype=torch.float16,
186
+ device_map="auto",
187
+ )
188
+
189
+ model.eval()
190
+
191
+ # --- Inference ---
192
+ diff_code = """
193
+ --- a/src/components/LoginForm.js
194
+ +++ b/src/components/LoginForm.js
195
+ -import React from 'react';
196
+ +import React, { useState } from 'react';
197
+
198
+ -const LoginForm = () => (
199
+ - <form>
200
+ - <label>Email: <input type="email" /></label>
201
+ - <br />
202
+ - <label>Password: <input type="password" /></label>
203
+ - <br />
204
+ - <button type="submit">Log In</button>
205
+ - </form>
206
+ -);
207
+ +const LoginForm = () => {
208
+ + const [credentials, setCredentials] = useState({ email: '', password: '' });
209
+ + /* ... (rest of the diff code) ... */
210
+ +};
211
+
212
+ export default LoginForm;
213
+ """
214
+
215
+ # Prompt in Korean
216
+ prompt = f"""### μ§€μ‹œ:
217
+ 제곡된 μ½”λ“œλŠ” pull request의 diff λ‚΄μš©μž…λ‹ˆλ‹€. μ½”λ“œμ˜ κ°œμ„ ν•  수 μžˆλŠ” 뢀뢄에 λŒ€ν•΄ μ΅œμ†Œ 3κ°€μ§€ ν•­λͺ©μœΌλ‘œ λ‚˜λˆ„μ–΄ μƒμ„Έν•˜κ³  ꡬ체적인 ν”Όλ“œλ°±μ„ μ œκ³΅ν•΄μ£Όμ„Έμš”.
218
+
219
+ ### μž…λ ₯:
220
+ ```diff
221
+ {diff_code}
222
+ ````
223
+
224
+ ### 응닡:
225
+
226
+ 1. """
227
+
228
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
229
+ outputs = model.generate(\*\*inputs, max_new_tokens=512, temperature=0.7, repetition_penalty=1.2)
230
+ response = tokenizer.decode(outputs[0]len(inputs.input_ids[0]):], skip_special_tokens=True)
231
+
232
+ print(response)
233
+
234
+ ```
235
+
236
+
237
+ ## Training Details / ν•™μŠ΅ 상세 정보
238
+
239
+ <details>
240
+ <summary><strong>English</strong></summary>
241
+
242
+ ### Training Data
243
+ This model was fine-tuned using the `review_dataset.json` file, which contains public Pull Request data collected from GitHub. The dataset is structured in a `instruction`, `input`(diff), `output`(review comment) format.
244
+
245
+ ### Training Procedure
246
+ The model was fine-tuned using the QLoRA technique. It utilized the `SFTTrainer` from the `trl` library, applying 4-bit quantization and LoRA (Low-Rank Adaptation) for efficient training.
247
+
248
+ #### Training Hyperparameters
249
+ - **model:** `codellama/CodeLlama-7b-hf`
250
+ - **max_seq_length:** 4096
251
+ - **lora_alpha:** 128
252
+ - **lora_dropout:** 0.1
253
+ - **lora_r:** 64
254
+ - **learning_rate:** 2e-4
255
+ - **optimizer:** paged_adamw_32bit
256
+ - **gradient_accumulation_steps:** 8
257
+ - **per_device_train_batch_size:** 2
258
+ - **max_steps:** 1900
259
+
260
+ </details>
261
+
262
+ <details>
263
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
264
+
265
+ ### ν•™μŠ΅ 데이터
266
+ 이 λͺ¨λΈμ€ GitHubμ—μ„œ μˆ˜μ§‘λœ 곡개 Pull Request 데이터λ₯Ό ν¬ν•¨ν•˜λŠ” `review_dataset.json` νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ νŒŒμΈνŠœλ‹λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 데이터셋은 `instruction`, `input`(diff), `output`(리뷰 μ½”λ©˜νŠΈ) ν˜•μ‹μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
267
+
268
+ ### ν•™μŠ΅ 절차
269
+ λͺ¨λΈμ€ QLoRA 기법을 μ‚¬μš©ν•˜μ—¬ νŒŒμΈνŠœλ‹λ˜μ—ˆμŠ΅λ‹ˆλ‹€. `trl` 라이브러리의 `SFTTrainer`λ₯Ό μ‚¬μš©ν–ˆμœΌλ©°, 4-bit μ–‘μžν™”μ™€ LoRA(Low-Rank Adaptation)λ₯Ό μ μš©ν•˜μ—¬ 효율적인 ν•™μŠ΅μ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.
270
+
271
+ #### ν•™μŠ΅ ν•˜μ΄νΌνŒŒλΌλ―Έν„°
272
+ - **λͺ¨λΈ:** `codellama/CodeLlama-7b-hf`
273
+ - **μ΅œλŒ€ μ‹œν€€μŠ€ 길이:** 4096
274
+ - **LoRA Alpha:** 128
275
+ - **LoRA Dropout:** 0.1
276
+ - **LoRA Rank (r):** 64
277
+ - **ν•™μŠ΅λ₯ :** 2e-4
278
+ - **μ˜΅ν‹°λ§ˆμ΄μ €:** paged_adamw_32bit
279
+ - **Gradient Accumulation Steps:** 8
280
+ - **μž₯μΉ˜λ³„ ν•™μŠ΅ 배치 크기:** 2
281
+ - **μ΅œλŒ€ μŠ€ν… 수:** 1900
282
+
283
+ </details>
284
+
285
+ ## Compute Infrastructure / μ»΄ν“¨νŒ… 인프라
286
+
287
+ <details>
288
+ <summary><strong>English</strong></summary>
289
+
290
+ - **Hardware Type:** RunPod Cloud GPU
291
+ - **Cloud Provider:** RunPod
292
+ </details>
293
+
294
+ <details>
295
+ <summary><strong>ν•œκ΅­μ–΄</strong></summary>
296
+
297
+ - **ν•˜λ“œμ›¨μ–΄ μ’…λ₯˜:** RunPod ν΄λΌμš°λ“œ GPU
298
+ - **ν΄λΌμš°λ“œ μ œκ³΅μ—…μ²΄:** RunPod
299
+ </details>
300
+ ```