39
39
from mergekit .options import MergeOptions
40
40
from mergekit .plan import MergePlanner
41
41
42
+ logger = logging .getLogger (__name__ )
43
+
42
44
43
45
class MergeActorBase :
44
46
def __init__ (
@@ -87,18 +89,18 @@ def evaluate_genotype(
87
89
) -> dict :
88
90
gc .collect ()
89
91
torch .cuda .empty_cache ()
90
- logging .info ("Merging model" )
92
+ logger .info ("Merging model" )
91
93
merged_path = merge_model (
92
94
genotype , self .genome , self .model_storage_path , self .merge_options
93
95
)
94
96
if not merged_path :
95
- logging .error ("Model merge failed" )
97
+ logger .error ("Model merge failed" )
96
98
return {"score" : None , "results" : None }
97
99
98
100
kwargs = {}
99
101
if self .quantization_config is not None :
100
102
kwargs ["quantization_config" ] = self .quantization_config
101
- logging .info (f"Model merged to { merged_path } " )
103
+ logger .info (f"Model merged to { merged_path } " )
102
104
return evaluate_model (
103
105
merged_path ,
104
106
self .config .tasks ,
@@ -107,6 +109,8 @@ def evaluate_genotype(
107
109
vllm = self .vllm ,
108
110
batch_size = self .batch_size ,
109
111
task_manager = self .task_manager ,
112
+ apply_chat_template = self .config .apply_chat_template ,
113
+ fewshot_as_multiturn = self .config .fewshot_as_multiturn ,
110
114
** kwargs ,
111
115
)
112
116
@@ -163,7 +167,7 @@ def _maybe_init_model(self, config: MergeConfiguration):
163
167
continue
164
168
165
169
if getattr (cfg_out , key ) != getattr (self .arch_info .config , key , None ):
166
- logging .warn (f"Config key { key } changed, reinitializing model" )
170
+ logger .warn (f"Config key { key } changed, reinitializing model" )
167
171
different = True
168
172
break
169
173
@@ -202,7 +206,7 @@ def _maybe_init_model(self, config: MergeConfiguration):
202
206
del inner_model
203
207
tokenizer_donor = self .genome .definition .base_model
204
208
if tokenizer_donor is None :
205
- logging .warning (
209
+ logger .warning (
206
210
"Base model not set, using tokenizer from first model in genome"
207
211
)
208
212
tokenizer_donor = self .genome .definition .models [0 ]
@@ -220,7 +224,7 @@ def _maybe_init_model(self, config: MergeConfiguration):
220
224
max_model_len = min (max_model_len or 1024 , window_sz )
221
225
if max_model_len and max_model_len > 8192 :
222
226
max_model_len = 8192
223
- logging . warn (f"Clipping sequence length to { max_model_len } " )
227
+ logger . warning (f"Clipping sequence length to { max_model_len } " )
224
228
225
229
mem_util = (
226
230
0.7 if self .merge_options .cuda else 0.9
@@ -237,13 +241,13 @@ def _maybe_init_model(self, config: MergeConfiguration):
237
241
else :
238
242
self .model = lm_eval .models .huggingface .HFLM (pretrained = inner_model )
239
243
self .arch_info = ConfiguredArchitectureInfo (info = ai , config = cfg_out )
240
- logging .info ("Model initialized" )
244
+ logger .info ("Model initialized" )
241
245
242
246
def evaluate (self , genotype : torch .Tensor ) -> dict :
243
247
try :
244
248
config = self .genome .genotype_merge_config (genotype )
245
249
except InvalidGenotypeError as e :
246
- logging .error ("Invalid genotype" , exc_info = e )
250
+ logger .error ("Invalid genotype" , exc_info = e )
247
251
return {"score" : None , "results" : None }
248
252
249
253
self ._maybe_init_model (config )
@@ -262,7 +266,13 @@ def evaluate(self, genotype: torch.Tensor) -> dict:
262
266
assert (
263
267
model .llm_engine .parallel_config .world_size == 1
264
268
), "Must be single GPU"
265
- worker = model .llm_engine .driver_worker
269
+ engine = model .llm_engine
270
+ if hasattr (engine , "model_executor" ):
271
+ worker = engine .model_executor .worker
272
+ elif hasattr (engine , "driver_worker" ):
273
+ worker = engine .driver_worker
274
+ else :
275
+ raise ValueError ("Unknown LLM engine type" )
266
276
model = worker .model_runner .model
267
277
param_dict = dict (model .named_parameters ())
268
278
@@ -311,6 +321,8 @@ def evaluate(self, genotype: torch.Tensor) -> dict:
311
321
limit = self .config .limit ,
312
322
task_manager = self .task_manager ,
313
323
batch_size = self .batch_size ,
324
+ apply_chat_template = self .config .apply_chat_template ,
325
+ fewshot_as_multiturn = self .config .fewshot_as_multiturn ,
314
326
)
315
327
316
328
def evaluate_genotype (
0 commit comments