File size: 8,869 Bytes
3fd6380
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>LLaMA 3.2 3B + QLoRA — Python code generation</title>
<style>
  :root { --bg:#0f0f11; --panel:#18181b; --border:#2a2a2f; --fg:#e4e4e7; --mut:#a1a1aa; --acc:#4ade80; --warn:#fbbf24; }
  * { box-sizing:border-box; }
  body { margin:0; padding:2rem 1.5rem; background:var(--bg); color:var(--fg);
         font-family:ui-sans-serif,system-ui,-apple-system,sans-serif; line-height:1.6; }
  .wrap { max-width:1100px; margin:0 auto; }
  h1 { font-size:1.5rem; font-weight:600; margin:0 0 .5rem; }
  .sub { color:var(--mut); margin:0 0 1.5rem; }
  .stat { display:inline-block; background:var(--panel); border:1px solid var(--border);
          border-radius:8px; padding:.6rem 1rem; margin:0 .5rem .5rem 0; font-size:.9rem; }
  .stat b { color:var(--acc); }
  select { width:100%; padding:.7rem; background:var(--panel); color:var(--fg);
           border:1px solid var(--border); border-radius:8px; font-size:1rem; margin:1rem 0; }
  .cols { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
  @media(max-width:820px){ .cols{ grid-template-columns:1fr; } }
  .col h3 { font-size:.85rem; font-weight:600; text-transform:uppercase; letter-spacing:.05em;
            color:var(--mut); margin:0 0 .5rem; }
  .col h3 .tag { font-size:.7rem; padding:.15rem .4rem; border-radius:4px; margin-left:.4rem;
                 text-transform:none; letter-spacing:0; }
  .bad  { background:#3f1d1d; color:#fca5a5; }
  .good { background:#14532d; color:#86efac; }
  pre { background:var(--panel); border:1px solid var(--border); border-radius:8px;
        padding:1rem; overflow-x:auto; font-size:.82rem; line-height:1.5;
        font-family:ui-monospace,SFMono-Regular,Menlo,monospace; margin:0; white-space:pre; }
  .note { color:var(--mut); font-size:.85rem; margin-top:1.5rem; padding-top:1.5rem;
          border-top:1px solid var(--border); }
  a { color:var(--acc); }
</style>
</head>
<body>
<div class="wrap">
  <h1>Python code generation — LLaMA 3.2 3B + QLoRA</h1>
  <p class="sub">A 9.2M-parameter LoRA adapter (0.285% of the model), trained in 1.88 hours on a free T4.</p>

  <div>
    <span class="stat">HumanEval pass@1 <b>40.5% &rarr; 54.1%</b></span>
    <span class="stat">Valid Python <b>57.5% &rarr; 100%</b></span>
    <span class="stat">Peak VRAM <b>4.17 GB</b></span>
  </div>

  <p class="sub">The base model writes correct code &mdash; it just writes it in JavaScript
  about 40% of the time, wrapped in markdown fences. Pick a prompt:</p>

  <select id="sel"></select>

  <div class="cols">
    <div class="col">
      <h3>Base LLaMA 3.2 3B <span class="tag bad" id="btag"></span></h3>
      <pre id="base"></pre>
    </div>
    <div class="col">
      <h3>Fine-tuned <span class="tag good">this adapter</span></h3>
      <pre id="ft"></pre>
    </div>
  </div>

  <p class="note">
    Outputs are pre-generated with greedy decoding, so they are deterministic and reproducible.
    Free HuggingFace Spaces have no GPU; running a 3B model live would take roughly 60 seconds
    per generation.<br><br>
    Model and full evaluation:
    <a href="https://huggingface.co/Raghul09/llama-code-gen-lora">Raghul09/llama-code-gen-lora</a>
  </p>
</div>

<script>
const DATA = [{"instruction": "Write a function to reverse a string", "base": "```js\nfunction reverseString(str) {\n    let reversed = '';\n    for (let i = str.length - 1; i >= 0; i--) {\n        reversed += str[i];\n    }\n    return reversed;\n}\n```", "ft": "def reverse_string(string):\n    return string[::-1]"}, {"instruction": "Implement binary search on a sorted list", "base": "```java\npublic class Solution {\n    public int search(int[] nums, int target) {\n        int left = 0, right = nums.length - 1;\n        while (left <= right) {\n            int mid = left + (right - left) / 2;\n            if (nums[mid] == target) {\n                return mid;\n            } else if (nums[mid] > target) {\n                right = mid - 1;\n            } else {\n                left = mid + 1;\n            }\n        }\n        return -1;\n    }\n}\n```", "ft": "def binary_search(arr, target):\n    low = 0\n    high = len(arr) - 1\n\n    while low <= high:\n        mid = (low + high) // 2\n        if arr[mid] == target:\n            return mid\n        elif arr[mid] < target:\n            low = mid + 1\n        else:\n            high = mid - 1\n    return -1"}, {"instruction": "Create a function that flattens a nested list", "base": "```js\nfunction flatten(list) {\n  return list.reduce((acc, item) => {\n    if (Array.isArray(item)) {\n      return acc.concat(flatten(item));\n    }\n    return acc.concat(item);\n  }, []);\n}\n```", "ft": "def flatten_list(nested_list):\n    flat_list = []\n    for item in nested_list:\n        if isinstance(item, list):\n            flat_list.extend(flatten_list(item))\n        else:\n            flat_list.append(item)\n    return flat_list"}, {"instruction": "Write a function to count word frequency in a string", "base": "```python\ndef word_frequency(string):\n    word_count = {}\n    for word in string.split():\n        if word in word_count:\n            word_count[word] += 1\n        else:\n            word_count[word] = 1\n    return word_count\n```", "ft": "def count_words(string):\n    words = string.split()\n    word_freq = {}\n    for word in words:\n        if word in word_freq:\n            word_freq[word] += 1\n        else:\n            word_freq[word] = 1\n    return word_freq"}, {"instruction": "Write a decorator that measures execution time", "base": "```python\ndef timeit(func):\n    def wrapper(*args, **kwargs):\n        start = time.time()\n        result = func(*args, **kwargs)\n        end = time.time()\n        print(f\"Function {func.__name__} took {end - start} seconds to execute\")\n        return result\n    return wrapper\n```", "ft": "import time\n\ndef timeit(func):\n    def wrapper(*args, **kwargs):\n        start = time.time()\n        result = func(*args, **kwargs)\n        end = time.time()\n        print(\"Execution time: {} seconds\".format(end-start))\n        return result\n    return wrapper"}, {"instruction": "Write a function to check if two strings are anagrams", "base": "```python\ndef is_anagram(s1, s2):\n    if len(s1) != len(s2):\n        return False\n    s1 = sorted(s1)\n    s2 = sorted(s2)\n    return s1 == s2\n```", "ft": "def is_anagram(str1, str2):\n    if len(str1) != len(str2):\n        return False\n    else:\n        str1 = sorted(str1)\n        str2 = sorted(str2)\n        if str1 == str2:\n            return True\n        else:\n            return False"}, {"instruction": "Implement a stack class with push, pop, and peek", "base": "```java\npublic class Stack {\n    private int[] stack;\n    private int top;\n    private int size;\n\n    public Stack(int size) {\n        this.stack = new int[size];\n        this.top = -1;\n        this.size = size;\n    }\n\n    public void push(int value) {\n        if (top == size - 1) {\n            System.out.println(\"Stack is full\");\n            return;\n        }\n        top++;\n        stack[top] = value;\n    }\n\n    public int pop() {\n        if (top == -1) {\n            System.out.println(\"Stack is empty\");\n            return -1;\n        }\n        int value = stack[top];\n        top--;\n        return value;\n    }\n\n    public int peek() {\n        if (top == -1) {\n            System.out.println(\"Stack is empty\");\n            return -1;\n        }\n        return stack[top];\n    }\n}\n```", "ft": "class Stack:\n    def __init__(self):\n        self.stack = []\n\n    def push(self, item):\n        self.stack.append(item)\n\n    def pop(self):\n        return self.stack.pop()\n\n    def peek(self):\n        return self.stack[-1]"}, {"instruction": "Write a function that returns the nth Fibonacci number", "base": "```python\ndef fib(n):\n    if n == 0:\n        return 0\n    if n == 1:\n        return 1\n    return fib(n-1) + fib(n-2)\n```", "ft": "def fibonacci(n):\n    if n == 0:\n        return 0\n    elif n == 1:\n        return 1\n    else:\n        return fibonacci(n-1) + fibonacci(n-2)"}];
const sel = document.getElementById('sel');
DATA.forEach((d,i) => { const o=document.createElement('option'); o.value=i; o.textContent=d.instruction; sel.appendChild(o); });
function render(){
  const d = DATA[sel.value];
  document.getElementById('base').textContent = d.base;
  document.getElementById('ft').textContent = d.ft;
  const isPy = !/^```(js|javascript|java)/.test(d.base.trim()) && !/\bfunction\s+\w+\s*\(/.test(d.base);
  const t = document.getElementById('btag');
  t.textContent = isPy ? 'markdown-fenced' : 'wrong language';
}
sel.addEventListener('change', render);
render();
</script>
</body>
</html>