ranjanrajib commited on
Commit
f068ecb
·
verified ·
1 Parent(s): fb0aab6

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +94 -0
README.md CHANGED
@@ -116,7 +116,101 @@ model = PeftModel.from_pretrained(
116
  ```
117
 
118
  ---
 
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  ## Why Use This Model?
121
 
122
  If your primary use case is **Python code generation**, this model is intended to be a stronger alternative to the original Qwen2.5-Coder-7B-Instruct model based on the evaluation performed in this project.
 
116
  ```
117
 
118
  ---
119
+ ## A worked example: a prompt in, code out
120
 
121
+ The prompt
122
+
123
+ PROMPT = """You are an expert Python programmer.
124
+
125
+ Solve the following programming problem.
126
+
127
+ Problem:
128
+ Calculate factorials for a list of numbers in parallel using multiprocessing.
129
+
130
+ It should return:
131
+ dict[int, int]: A dictionary with numbers as keys and their factorial as values.
132
+
133
+ It should raise:
134
+ ValueError: If any element in the input list is not an integer or is negative.
135
+
136
+ It may use:
137
+ multiprocessing.Pool
138
+ math.factorial.
139
+
140
+ Write a function with this exact signature:
141
+
142
+ def task_func(numbers: list) -> dict:
143
+
144
+ It must satisfy:
145
+
146
+ >>> factorials = task_func([5, 6, 7, 8, 9])
147
+ >>> factorials[5] == 120 and factorials[9] == 362880
148
+ True
149
+
150
+ Required function signature:
151
+ def task_func(numbers: list) -> dict:
152
+
153
+ Requirements:
154
+ - Implement the requested function.
155
+ - Follow the function signature.
156
+ - Handle the specified edge cases.
157
+ - Use Python.
158
+ - Return only the implementation.
159
+ - Do not provide an explanation.
160
+ - Do not use eval().
161
+ - Do not use exec().
162
+ - Do not perform network operations.
163
+ - Do not read or write files.
164
+ """
165
+
166
+ ### Generating
167
+
168
+
169
+ import re
170
+ import torch
171
+ from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed
172
+
173
+ MODEL = "ranjanrajib/DPO-trained-Qwen2.5-Coder-7B"
174
+
175
+ model = AutoModelForCausalLM.from_pretrained(MODEL, dtype=torch.bfloat16, device_map="auto")
176
+ tok = AutoTokenizer.from_pretrained(MODEL)
177
+
178
+ text = tok.apply_chat_template(
179
+ [{"role": "user", "content": PROMPT}], tokenize=False, add_generation_prompt=True)
180
+ inputs = tok(text, return_tensors="pt").to(model.device)
181
+
182
+ set_seed(159000) # the seed this particular sample was drawn with
183
+ out = model.generate(
184
+ **inputs,
185
+ do_sample=True,
186
+ temperature=0.2,
187
+ top_p=0.95,
188
+ max_new_tokens=512,
189
+ pad_token_id=tok.eos_token_id,
190
+ )
191
+
192
+ response = tok.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True)
193
+ code = re.search(r"```python\n(.*?)```", response, re.S).group(1)
194
+ print(code)
195
+
196
+ ### What the model returned
197
+
198
+ 84 generated tokens, reproduced verbatim:
199
+
200
+ import multiprocessing
201
+ import math
202
+
203
+ def factorial_task(number):
204
+ if not isinstance(number, int) or number < 0:
205
+ raise ValueError(f"Invalid input: {number}")
206
+ return number, math.factorial(number)
207
+
208
+ def task_func(numbers: list) -> dict:
209
+ with multiprocessing.Pool() as pool:
210
+ results = pool.map(factorial_task, numbers)
211
+ return dict(results)
212
+
213
+ ---
214
  ## Why Use This Model?
215
 
216
  If your primary use case is **Python code generation**, this model is intended to be a stronger alternative to the original Qwen2.5-Coder-7B-Instruct model based on the evaluation performed in this project.