Model Card for codellama-7b-code-review


Model Details / ๋ชจ๋ธ ์ƒ์„ธ ์ •๋ณด

๐Ÿ‡บ๐Ÿ‡ธ English

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.

  • Developed by: ken12377
  • Model type: Causal Language Model
  • Language(s): English, Korean, Diff format
  • License: apache-2.0
  • Finetuned from model: codellama/CodeLlama-7b-hf
๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

์ด ๋ชจ๋ธ์€ Meta์˜ codellama/CodeLlama-7b-hf ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ, GitHub Pull Request์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ(diff)์„ ๋ฆฌ๋ทฐํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋„๋ก ํŒŒ์ธํŠœ๋‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ JavaScript์™€ React ์ฝ”๋“œ ๋ฆฌ๋ทฐ์— ์ค‘์ ์„ ๋‘๊ณ  ํ•™์Šต๋˜์—ˆ์œผ๋ฉฐ, ์‹œ๋‹ˆ์–ด ์—”์ง€๋‹ˆ์–ด์˜ ๊ด€์ ์—์„œ ์ฝ”๋“œ ํ’ˆ์งˆ, ์•„ํ‚คํ…์ฒ˜, ์„ฑ๋Šฅ, ์ปจ๋ฒค์…˜ ๋“ฑ์— ๋Œ€ํ•œ ๊ฑด์„ค์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ์ž: ken12377
  • ๋ชจ๋ธ ์ข…๋ฅ˜: ์ธ๊ณผ ๊ด€๊ณ„ ์–ธ์–ด ๋ชจ๋ธ (Causal Language Model)
  • ์–ธ์–ด: ์˜์–ด, ํ•œ๊ตญ์–ด, Diff ํ˜•์‹
  • ๋ผ์ด์„ ์Šค: apache-2.0
  • ํŒŒ์ธํŠœ๋‹ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ: codellama/CodeLlama-7b-hf

Model Sources / ๋ชจ๋ธ ์†Œ์Šค

Uses / ์‚ฌ์šฉ ์ •๋ณด

๐Ÿ‡บ๐Ÿ‡ธ English

Direct Use

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.

Warning: The content generated by the model always requires review. The final decision must be made by a human developer.

Downstream Use

This model can be reused as a base for further fine-tuning on specific project's internal coding conventions or more specialized review criteria.

Out-of-Scope Use

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.

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

์ง์ ‘ ์‚ฌ์šฉ

์ด ๋ชจ๋ธ์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž๋™ํ™”์— ์ง์ ‘ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. diff ํ˜•์‹์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž…๋ ฅ์œผ๋กœ ์ œ๊ณตํ•˜๋ฉด, ๋ชจ๋ธ์€ ํ•ด๋‹น ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ๋ชจ๋ธ์ด ์ƒ์„ฑํ•˜๋Š” ๋‚ด์šฉ์€ ํ•ญ์ƒ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ตœ์ข… ๊ฒฐ์ •์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋‚ด๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์šด์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ

์ด ๋ชจ๋ธ์€ ํŠน์ • ํ”„๋กœ์ ํŠธ์˜ ๋‚ด๋ถ€ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด๋‚˜ ๋” ์ „๋ฌธํ™”๋œ ๋ฆฌ๋ทฐ ๊ธฐ์ค€์„ ํ•™์Šต์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๋กœ ์žฌ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฒ”์œ„ ์™ธ

์ด ๋ชจ๋ธ์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํƒœ์Šคํฌ์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์ผ๋ฐ˜์ ์ธ ์ฑ—๋ด‡ ๋Œ€ํ™”๋‚˜ ์ฝ”๋“œ ์ƒ์„ฑ, ๋ฒˆ์—ญ ๋“ฑ์˜ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ๋Š” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ diff ํ˜•์‹์ด ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bias, Risks, and Limitations / ํŽธํ–ฅ, ์œ„ํ—˜ ๋ฐ ํ•œ๊ณ„

๐Ÿ‡บ๐Ÿ‡ธ English
  • 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.
  • Inaccuracy (Hallucination): The model may occasionally generate feedback that is factually incorrect or out of context. The generated reviews always need verification.
  • 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.
๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด
  • ๋ฐ์ดํ„ฐ ํŽธํ–ฅ: ๋ชจ๋ธ์€ ๊ณต๊ฐœ๋œ GitHub Pull Request ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•™์Šต๋˜์—ˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์กด์žฌํ•˜๋Š” ํŠน์ • ์ฝ”๋”ฉ ์Šคํƒ€์ผ์ด๋‚˜ ํŒจํ„ด์— ํŽธํ–ฅ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€์ •ํ™•์„ฑ(ํ™˜๊ฐ): ๋ชจ๋ธ์€ ๋•Œ๋•Œ๋กœ ์‚ฌ์‹ค๊ณผ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๋ฌธ๋งฅ์— ๋งž์ง€ ์•Š๋Š” ํ”ผ๋“œ๋ฐฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๋ฆฌ๋ทฐ๋Š” ํ•ญ์ƒ ๊ฒ€์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œํ•œ๋œ ์ง€์‹: ๋ชจ๋ธ์˜ ์ง€์‹์€ ํŒŒ์ธํŠœ๋‹ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋กœ ํ•œ์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ตœ์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Recommendations / ๊ถŒ์žฅ ์‚ฌํ•ญ

๐Ÿ‡บ๐Ÿ‡ธ English 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.
๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ตœ์ข…์ ์ธ ํŒ๋‹จ์ด ์•„๋‹Œ, ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๋•๋Š” '์ดˆ์•ˆ' ๋˜๋Š” '๋ณด์กฐ ๋„๊ตฌ'๋กœ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ธ๊ฐ„ ์ „๋ฌธ๊ฐ€์˜ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์น˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

How to Get Started with the Model / ๋ชจ๋ธ ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ‡บ๐Ÿ‡ธ English

Note: This model may be available in two versions: Adapter and Merged. Use the appropriate code for your model type.

1. Using the Adapter Model (ken12377/codellama-7b-code-review-adapter)

To use the adapter model, you must first load the base model and then apply the adapter using the peft library.

2. Using the Merged Model (ken12377/codellama-7b-code-review)

If the model is fully merged with the base model, you can load it directly without peft.

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

์ฐธ๊ณ : ์ด ๋ชจ๋ธ์€ ์–ด๋Œ‘ํ„ฐ(Adapter) ์™€ ๋ณ‘ํ•ฉ๋œ(Merged) ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ๋ชจ๋ธ ํƒ€์ž…์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

1. ์–ด๋Œ‘ํ„ฐ ๋ชจ๋ธ ์‚ฌ์šฉ๋ฒ• (ken12377/codellama-7b-code-review-adapter)

์–ด๋Œ‘ํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์„ ๋จผ์ € ๋กœ๋“œํ•œ ํ›„ peft ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ณ‘ํ•ฉ๋œ ๋ชจ๋ธ ์‚ฌ์šฉ๋ฒ• (ken12377/codellama-7b-code-review)

๋ชจ๋ธ์ด ๊ธฐ๋ฐ˜ ๋ชจ๋ธ๊ณผ ์™„์ „ํžˆ ๋ณ‘ํ•ฉ๋œ ๊ฒฝ์šฐ, peft ์—†์ด ์ง์ ‘ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

# --- Configuration (Choose one) ---
# 1. For Adapter Model
use_adapter = True
base_model_name = "codellama/CodeLlama-7b-hf"
adapter_or_model_name = "ken12377/codellama-7b-code-review-adapter"

# 2. For Merged Model
# use_adapter = False
# adapter_or_model_name = "ken12377/codellama-7b-code-review"

# --- Load Model and Tokenizer ---
if use_adapter:
    base_model = AutoModelForCausalLM.from_pretrained(
        base_model_name,
        torch_dtype=torch.float16,
        device_map="auto",
    )
    tokenizer = AutoTokenizer.from_pretrained(adapter_or_model_name)
    model = PeftModel.from_pretrained(base_model, adapter_or_model_name)
else:
    tokenizer = AutoTokenizer.from_pretrained(adapter_or_model_name)
    model = AutoModelForCausalLM.from_pretrained(
        adapter_or_model_name,
        torch_dtype=torch.float16,
        device_map="auto",
    )

model.eval()

# --- Inference ---
diff_code = """
--- a/src/components/LoginForm.js
+++ b/src/components/LoginForm.js
-import React from 'react';
+import React, { useState } from 'react';

-const LoginForm = () => (
-  <form>
-    <label>Email: <input type="email" /></label>
-    <br />
-    <label>Password: <input type="password" /></label>
-    <br />
-    <button type="submit">Log In</button>
-  </form>
-);
+const LoginForm = () => {
+  const [credentials, setCredentials] = useState({ email: '', password: '' });
+  /* ... (rest of the diff code) ... */
+};

 export default LoginForm;
"""

# Prompt in Korean
# ๋งˆํฌ๋‹ค์šด ํŒŒ์„œ์˜ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๋ธ”๋ก ๊ตฌ๋ถ„์ž๋ฅผ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
diff_block_delimiter = "```"
prompt = f"""### ์ง€์‹œ:
์ œ๊ณต๋œ ์ฝ”๋“œ๋Š” pull request์˜ diff ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ตœ์†Œ 3๊ฐ€์ง€ ํ•ญ๋ชฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ƒ์„ธํ•˜๊ณ  ๊ตฌ์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ด์ฃผ์„ธ์š”.

### ์ž…๋ ฅ:
{diff_block_delimiter}diff
{diff_code}
{diff_block_delimiter}

### ์‘๋‹ต:
1. """

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.7, repetition_penalty=1.2)
response = tokenizer.decode(outputs[0]len(inputs.input_ids[0]):], skip_special_tokens=True)

print(response)

Training Details / ํ•™์Šต ์ƒ์„ธ ์ •๋ณด

๐Ÿ‡บ๐Ÿ‡ธ English

Training Data

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.

Training Procedure

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.

Training Hyperparameters

  • model: codellama/CodeLlama-7b-hf
  • max_seq_length: 4096
  • lora_alpha: 128
  • lora_dropout: 0.1
  • lora_r: 64
  • learning_rate: 2e-4
  • optimizer: paged_adamw_32bit
  • gradient_accumulation_steps: 8
  • per_device_train_batch_size: 2
  • max_steps: 1900
๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

ํ•™์Šต ๋ฐ์ดํ„ฐ

์ด ๋ชจ๋ธ์€ GitHub์—์„œ ์ˆ˜์ง‘๋œ ๊ณต๊ฐœ Pull Request ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” review_dataset.json ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ธํŠœ๋‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์…‹์€ instruction, input(diff), output(๋ฆฌ๋ทฐ ์ฝ”๋ฉ˜ํŠธ) ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ์ ˆ์ฐจ

๋ชจ๋ธ์€ QLoRA ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ธํŠœ๋‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. trl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ SFTTrainer๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, 4-bit ์–‘์žํ™”์™€ LoRA(Low-Rank Adaptation)๋ฅผ ์ ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ํ•™์Šต์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ

  • ๋ชจ๋ธ: codellama/CodeLlama-7b-hf
  • ์ตœ๋Œ€ ์‹œํ€€์Šค ๊ธธ์ด: 4096
  • LoRA Alpha: 128
  • LoRA Dropout: 0.1
  • LoRA Rank (r): 64
  • ํ•™์Šต๋ฅ : 2e-4
  • ์˜ตํ‹ฐ๋งˆ์ด์ €: paged_adamw_32bit
  • Gradient Accumulation Steps: 8
  • ์žฅ์น˜๋ณ„ ํ•™์Šต ๋ฐฐ์น˜ ํฌ๊ธฐ: 2
  • ์ตœ๋Œ€ ์Šคํ… ์ˆ˜: 1900

Compute Infrastructure / ์ปดํ“จํŒ… ์ธํ”„๋ผ

๐Ÿ‡บ๐Ÿ‡ธ English
  • Hardware Type: RunPod Cloud GPU
  • Cloud Provider: RunPod
๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด
  • ํ•˜๋“œ์›จ์–ด ์ข…๋ฅ˜: RunPod ํด๋ผ์šฐ๋“œ GPU
  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด: RunPod

Downloads last month
57
Safetensors
Model size
6.74B params
Tensor type
F16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for ken123777/codellama-7b-code-review-v1

Finetuned
(81)
this model