teolm30 commited on
Commit
c368152
·
verified ·
1 Parent(s): ed90e74

Ult1-Coding v3 - few-shot in system prompt, 8-module LoRA, training data

Browse files
Files changed (4) hide show
  1. README.md +44 -45
  2. adapter_config.json +4 -4
  3. adapter_model.safetensors +1 -1
  4. training_data.json +15 -15
README.md CHANGED
@@ -1,53 +1,52 @@
1
  ---
2
  language: en
3
- library_name: transformers
4
  base_model: Qwen/Qwen2.5-3B-Instruct
5
  pipeline_tag: text-generation
6
  tags:
7
- - qwen
8
- - qwen2.5
9
- - 3b
10
  - lora
11
- - coding
12
- - code
13
- - software-engineering
14
  license: apache-2.0
15
  ---
16
-
17
- # Ult1-Coding
18
-
19
- **A 3-billion-parameter coding specialist -- master-level software engineer.**
20
-
21
- Based on Qwen2.5-3B-Instruct with an embedded **master programmer** system prompt containing few-shot coding demonstrations and a coding-focused LoRA adapter (rank 16, 8 target module types).
22
-
23
- ## Usage
24
-
25
- ```python
26
- from transformers import AutoModelForCausalLM, AutoTokenizer
27
-
28
- model = AutoModelForCausalLM.from_pretrained("teolm30/Ult1-coding")
29
- tokenizer = AutoTokenizer.from_pretrained("teolm30/Ult1-coding")
30
-
31
- messages = [{"role": "user", "content": "Write a Python async web scraper with retry logic"}]
32
- text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
33
- inputs = tokenizer(text, return_tensors="pt")
34
- outputs = model.generate(**inputs, max_new_tokens=512)
35
- print(tokenizer.decode(outputs[0], skip_special_tokens=True))
36
- ```
37
-
38
- > The system prompt with few-shot examples is auto-injected by the chat template -- no manual system prompt needed.
39
-
40
- ## GGUF
41
-
42
- Download `Ult1-Coding-Q8_0.gguf` for CPU inference with llama.cpp.
43
-
44
- ## Training Data
45
-
46
- `training_data.json` contains 10 coding Q&A pairs (Python, JavaScript, Rust, SQL, TypeScript, Go). Use with `train.py` on a GPU.
47
-
48
- ## Details
49
-
50
- - **Base**: Qwen2.5-3B-Instruct (3B params)
51
- - **LoRA**: Rank 16, targets q/k/v/o + gate/up/down projections
52
- - **Context**: 32,768 tokens
53
- - **Focus**: Code generation, algorithms, system design, debugging
 
 
 
 
1
  ---
2
  language: en
3
+ library_name: peft
4
  base_model: Qwen/Qwen2.5-3B-Instruct
5
  pipeline_tag: text-generation
6
  tags:
7
+ - base_model:adapter:Qwen/Qwen2.5-3B-Instruct
 
 
8
  - lora
9
+ - transformers
 
 
10
  license: apache-2.0
11
  ---
12
+
13
+ # Ult1-Coding
14
+
15
+ **A 3-billion-parameter coding specialist -- master-level software engineer.**
16
+
17
+ Based on Qwen2.5-3B-Instruct with an embedded **master programmer** system prompt containing few-shot coding demonstrations and a coding-focused LoRA adapter (rank 16, 8 target module types).
18
+
19
+ ## Usage
20
+
21
+ ```python
22
+ from transformers import AutoModelForCausalLM, AutoTokenizer
23
+
24
+ model = AutoModelForCausalLM.from_pretrained("teolm30/Ult1-coding")
25
+ tokenizer = AutoTokenizer.from_pretrained("teolm30/Ult1-coding")
26
+
27
+ messages = [{"role": "user", "content": "Write a Python async web scraper with retry logic"}]
28
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
29
+ inputs = tokenizer(text, return_tensors="pt")
30
+ outputs = model.generate(**inputs, max_new_tokens=512)
31
+ print(tokenizer.decode(outputs[0], skip_special_tokens=True))
32
+ ```
33
+
34
+ > The system prompt with few-shot examples is auto-injected by the chat template -- no manual system prompt needed.
35
+
36
+ ## GGUF
37
+
38
+ Download `Ult1-Coding-Q8_0.gguf` for CPU inference with llama.cpp.
39
+
40
+ ## Training Data
41
+
42
+ `training_data.json` contains 10 coding Q&A pairs (Python, JavaScript, Rust, SQL, TypeScript, Go). Use with `train.py` on a GPU.
43
+
44
+ ## Details
45
+
46
+ - **Base**: Qwen2.5-3B-Instruct (3B params)
47
+ - **LoRA**: Rank 16, targets q/k/v/o + gate/up/down projections
48
+ - **Context**: 32,768 tokens
49
+ - **Focus**: Code generation, algorithms, system design, debugging
50
+ ### Framework versions
51
+
52
+ - PEFT 0.19.1
adapter_config.json CHANGED
@@ -31,12 +31,12 @@
31
  "revision": null,
32
  "target_modules": [
33
  "q_proj",
34
- "v_proj",
35
- "down_proj",
36
  "up_proj",
37
- "gate_proj",
38
  "k_proj",
39
- "o_proj"
 
 
40
  ],
41
  "target_parameters": null,
42
  "task_type": "CAUSAL_LM",
 
31
  "revision": null,
32
  "target_modules": [
33
  "q_proj",
 
 
34
  "up_proj",
35
+ "o_proj",
36
  "k_proj",
37
+ "gate_proj",
38
+ "down_proj",
39
+ "v_proj"
40
  ],
41
  "target_parameters": null,
42
  "task_type": "CAUSAL_LM",
adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:aeadbc61bab670817e7f80a06c71205ed006277a34069e390e60726d92972868
3
  size 119801528
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f04cbd3e0b2fed957cfa0319fa6a87298df03a954683c7b24867e665756680c5
3
  size 119801528
training_data.json CHANGED
@@ -1,42 +1,42 @@
1
  [
2
  {
3
  "instruction": "Write a Python function to check if a string is a palindrome ignoring case and non-alphanumeric characters.",
4
- "response": "```python\ndef is_palindrome(s: str) -> bool:\n cleaned = ''.join(c.lower() for c in s if c.isalnum())\n return cleaned == cleaned[::-1]\n```"
5
  },
6
  {
7
  "instruction": "Write a JavaScript function to debounce a function call.",
8
- "response": "```javascript\nfunction debounce(fn, delay = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => fn(...args), delay);\n };\n}\n```"
9
  },
10
  {
11
- "instruction": "Write a Rust function that reads a file and returns the lines as a Vec<String>, handling errors properly.",
12
- "response": "```rust\nuse std::fs::File;\nuse std::io::{BufRead, BufReader};\n\nfn read_lines(path: &str) -> Result<Vec<String>, std::io::Error> {\n let file = File::open(path)?;\n let reader = BufReader::new(file);\n reader.lines().collect()\n}\n```"
13
  },
14
  {
15
- "instruction": "Write a SQL query to find employees who earn more than their department's average salary.",
16
- "response": "```sql\nSELECT e.name, e.salary, d.name AS department\nFROM employees e\nJOIN departments d ON e.department_id = d.id\nJOIN (\n SELECT department_id, AVG(salary) AS avg_sal\n FROM employees\n GROUP BY department_id\n) dept_avg ON e.department_id = dept_avg.department_id\nWHERE e.salary > dept_avg.avg_sal;\n```"
17
  },
18
  {
19
  "instruction": "Explain the CAP theorem and give examples of CP vs AP databases.",
20
- "response": "## CAP Theorem\nA distributed system can only guarantee 2 of 3 properties:\n- **Consistency**: Every read returns the latest write\n- **Availability**: Every request receives a response\n- **Partition Tolerance**: System continues despite network failures\n\nIn practice, partitions are inevitable, so you choose CP or AP:\n- **CP databases**: HBase, MongoDB (default), Redis (cluster mode) \u2014 prefer consistency over availability during partitions\n- **AP databases**: Cassandra, DynamoDB, CouchDB \u2014 prefer availability, eventual consistency"
21
  },
22
  {
23
- "instruction": "Write a Python async function that fetches multiple URLs concurrently with a timeout.",
24
- "response": "```python\nimport asyncio\nimport aiohttp\nfrom typing import List\n\nasync def fetch_urls(urls: List[str], timeout: float = 10.0) -> List[str]:\n async def fetch_one(session, url):\n async with session.get(url, timeout=aiohttp.ClientTimeout(total=timeout)) as resp:\n return await resp.text()\n \n async with aiohttp.ClientSession() as session:\n tasks = [fetch_one(session, url) for url in urls]\n return await asyncio.gather(*tasks, return_exceptions=True)\n```"
25
  },
26
  {
27
- "instruction": "Implement a LRU cache in Python with O(1) get and put.",
28
- "response": "```python\nfrom collections import OrderedDict\n\nclass LRUCache:\n def __init__(self, capacity: int):\n self.cache = OrderedDict()\n self.capacity = capacity\n\n def get(self, key: int) -> int:\n if key not in self.cache:\n return -1\n self.cache.move_to_end(key)\n return self.cache[key]\n\n def put(self, key: int, value: int) -> None:\n if key in self.cache:\n self.cache.move_to_end(key)\n self.cache[key] = value\n if len(self.cache) > self.capacity:\n self.cache.popitem(last=False)\n```"
29
  },
30
  {
31
  "instruction": "Write a TypeScript type for a Redux reducer with discriminated union actions.",
32
- "response": "```typescript\ntype Action =\n | { type: 'INCREMENT'; payload: number }\n | { type: 'DECREMENT'; payload: number }\n | { type: 'RESET' };\n\ninterface State {\n count: number;\n}\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'INCREMENT':\n return { count: state.count + action.payload };\n case 'DECREMENT':\n return { count: state.count - action.payload };\n case 'RESET':\n return { count: 0 };\n default:\n return state;\n }\n}\n```"
33
  },
34
  {
35
  "instruction": "Write a Go function to reverse a linked list.",
36
- "response": "```go\ntype ListNode struct {\n Val int\n Next *ListNode\n}\n\nfunc reverseList(head *ListNode) *ListNode {\n var prev *ListNode\n curr := head\n for curr != nil {\n next := curr.Next\n curr.Next = prev\n prev = curr\n curr = next\n }\n return prev\n}\n```"
37
  },
38
  {
39
- "instruction": "What is the difference between inner join, left join, and full outer join in SQL? Give examples.",
40
- "response": "## SQL Join Types\n\n**INNER JOIN**: Returns only matching rows from both tables.\n```sql\nSELECT * FROM students s\nINNER JOIN enrollments e ON s.id = e.student_id;\n-- Only students with enrollments appear\n```\n\n**LEFT JOIN**: All rows from left table, matching rows from right (NULLs for non-matches).\n```sql\nSELECT * FROM students s\nLEFT JOIN enrollments e ON s.id = e.student_id;\n-- All students appear, even if not enrolled\n```\n\n**FULL OUTER JOIN**: All rows from both tables (NULLs where no match).\n```sql\nSELECT * FROM students s\nFULL OUTER JOIN enrollments e ON s.id = e.student_id;\n-- All students and all enrollments appear\n```"
41
  }
42
  ]
 
1
  [
2
  {
3
  "instruction": "Write a Python function to check if a string is a palindrome ignoring case and non-alphanumeric characters.",
4
+ "response": "def is_palindrome(s: str) -> bool:\n cleaned = ''.join(c.lower() for c in s if c.isalnum())\n return cleaned == cleaned[::-1]"
5
  },
6
  {
7
  "instruction": "Write a JavaScript function to debounce a function call.",
8
+ "response": "function debounce(fn, delay = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => fn(...args), delay);\n };\n}"
9
  },
10
  {
11
+ "instruction": "Write a Rust function that reads a file and returns lines as Vec<String>.",
12
+ "response": "use std::fs::File;\nuse std::io::{BufRead, BufReader};\n\nfn read_lines(path: &str) -> Result<Vec<String>, std::io::Error> {\n let file = File::open(path)?;\n let reader = BufReader::new(file);\n reader.lines().collect()\n}"
13
  },
14
  {
15
+ "instruction": "Write a SQL query to find employees who earn more than their department's average.",
16
+ "response": "SELECT e.name, e.salary, d.name AS department\nFROM employees e\nJOIN departments d ON e.department_id = d.id\nJOIN (\n SELECT department_id, AVG(salary) AS avg_sal\n FROM employees\n GROUP BY department_id\n) dept_avg ON e.department_id = dept_avg.department_id\nWHERE e.salary > dept_avg.avg_sal;"
17
  },
18
  {
19
  "instruction": "Explain the CAP theorem and give examples of CP vs AP databases.",
20
+ "response": "CAP Theorem: A distributed system can guarantee 2 of 3: Consistency, Availability, Partition Tolerance. Partitions are inevitable, so you choose CP or AP. CP databases: HBase, MongoDB, Redis cluster. AP databases: Cassandra, DynamoDB, CouchDB."
21
  },
22
  {
23
+ "instruction": "Write a Python async function that fetches multiple URLs concurrently.",
24
+ "response": "import asyncio\nimport aiohttp\n\nasync def fetch_urls(urls, timeout=10.0):\n async with aiohttp.ClientSession() as session:\n async def fetch_one(url):\n async with session.get(url, timeout=aiohttp.ClientTimeout(total=timeout)) as resp:\n return await resp.text()\n tasks = [fetch_one(url) for url in urls]\n return await asyncio.gather(*tasks, return_exceptions=True)"
25
  },
26
  {
27
+ "instruction": "Implement an LRU cache in Python with O(1) get and put.",
28
+ "response": "from collections import OrderedDict\n\nclass LRUCache:\n def __init__(self, capacity: int):\n self.cache = OrderedDict()\n self.capacity = capacity\n\n def get(self, key: int) -> int:\n if key not in self.cache:\n return -1\n self.cache.move_to_end(key)\n return self.cache[key]\n\n def put(self, key: int, value: int) -> None:\n if key in self.cache:\n self.cache.move_to_end(key)\n self.cache[key] = value\n if len(self.cache) > self.capacity:\n self.cache.popitem(last=False)"
29
  },
30
  {
31
  "instruction": "Write a TypeScript type for a Redux reducer with discriminated union actions.",
32
+ "response": "type Action =\n | { type: 'INCREMENT'; payload: number }\n | { type: 'DECREMENT'; payload: number }\n | { type: 'RESET' };\n\ninterface State { count: number; }\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'INCREMENT': return { count: state.count + action.payload };\n case 'DECREMENT': return { count: state.count - action.payload };\n case 'RESET': return { count: 0 };\n default: return state;\n }\n}"
33
  },
34
  {
35
  "instruction": "Write a Go function to reverse a linked list.",
36
+ "response": "type ListNode struct {\n Val int\n Next *ListNode\n}\n\nfunc reverseList(head *ListNode) *ListNode {\n var prev *ListNode\n curr := head\n for curr != nil {\n next := curr.Next\n curr.Next = prev\n prev = curr\n curr = next\n }\n return prev\n}"
37
  },
38
  {
39
+ "instruction": "What is the difference between inner join, left join, and full outer join?",
40
+ "response": "INNER JOIN: Only matching rows from both tables. LEFT JOIN: All rows from left table, NULLs for non-matches on right. FULL OUTER JOIN: All rows from both tables, NULLs where no match exists on either side."
41
  }
42
  ]