| 220 | random.shuffle(self.data) |
| 221 | |
| 222 | def sample( |
| 223 | self, |
| 224 | num_requests: int, |
| 225 | lora_path: Optional[str] = None, |
| 226 | max_loras: Optional[int] = None, |
| 227 | output_len: Optional[int] = None, |
| 228 | enable_multimodal_chat: bool = False, |
| 229 | **kwargs, |
| 230 | ) -> list: |
| 231 | samples: list = [] |
| 232 | cnt = 1 |
| 233 | for entry in self.data: |
| 234 | if len(samples) >= num_requests: |
| 235 | break |
| 236 | json_data = entry |
| 237 | |
| 238 | prompt = entry["text"] |
| 239 | self.temperature = float(entry.get("temperature", 1)) |
| 240 | self.repetition_penalty = float(entry.get("penalty_score", 0)) |
| 241 | self.frequency_penalty = float(entry.get("frequency_score", 0)) |
| 242 | self.presence_penalty = float(entry.get("presence_score", 0)) |
| 243 | self.top_p = float(entry.get("topp", 1)) |
| 244 | self.prompt_len = int(entry.get("input_token_num", 0)) |
| 245 | new_output_len = int(entry.get("max_dec_len", 0)) |
| 246 | |
| 247 | if enable_multimodal_chat: |
| 248 | prompt = self.apply_multimodal_chat_transformation(prompt, None) |
| 249 | samples.append( |
| 250 | SampleRequest( |
| 251 | no=cnt, |
| 252 | json_data=json_data, |
| 253 | prompt=prompt, |
| 254 | prompt_len=self.prompt_len, |
| 255 | history_QA=[], |
| 256 | expected_output_len=new_output_len, |
| 257 | ) |
| 258 | ) |
| 259 | cnt += 1 |
| 260 | |
| 261 | self.maybe_oversample_requests(samples, num_requests) |
| 262 | return samples |
| 263 | |
| 264 | |
| 265 | class EBChatDataset(BenchmarkDataset): |