-
Notifications
You must be signed in to change notification settings - Fork 77
Description
Bug description
Hi! I'm running the notebook 04-zero-shot-cold-start.ipynb from the small-text repo. During execution, when calling:
clf.fit(cold_start_dataset, setfit_train_kwargs=setfit_train_kwargs)
I encounter the following error:
AttributeError: 'CallbackHandler' object has no attribute 'tokenizer'
Any assistance resolving this would be greatly appreciated.
Environment:
Python version: 3.11.13
small-text version: small-text[transformers]==2.0.0dev2
small-text integrations (e.g., transformers): small-text[transformers]==2.0.0dev2
PyTorch version (if applicable): N/A
Installation (pip, conda, or from source): pip
CUDA version (if applicable): N/A
Additional information
AttributeError Traceback (most recent call last)
/tmp/ipython-input-3480217872.py in <cell line: 0>()
37
38
---> 39 active_learner, train = initialize_with_coldstart()
8 frames
/tmp/ipython-input-3480217872.py in initialize_with_coldstart()
29
30 clf = clf_factory.new()
---> 31 clf.fit(cold_start_dataset, setfit_train_kwargs=setfit_train_kwargs)
32
33 active_learner.initialize(clf)
/usr/local/lib/python3.11/dist-packages/small_text/integrations/transformers/classifiers/setfit.py in fit(self, train_set, validation_set, setfit_train_kwargs)
265
266 self.model.model_body.to(self.device)
--> 267 return self._fit(sub_train, sub_valid, setfit_train_kwargs)
268
269 def _get_train_and_valid_sets(self, x_train, y_train, x_valid, y_valid):
/usr/local/lib/python3.11/dist-packages/small_text/integrations/transformers/classifiers/setfit.py in _fit(self, sub_train, sub_valid, setfit_train_kwargs)
280 def _fit(self, sub_train, sub_valid, setfit_train_kwargs):
281 seed = np.random.randint(np.iinfo(np.uint32).max, dtype=np.uint32).item()
--> 282 trainer = SetFitTrainer(
283 self.model,
284 sub_train,
/usr/local/lib/python3.11/dist-packages/setfit/trainer.py in init(self, model, train_dataset, eval_dataset, model_init, metric, metric_kwargs, loss_class, num_iterations, num_epochs, learning_rate, batch_size, seed, column_mapping, use_amp, warmup_proportion, distance_metric, margin, samples_per_label)
871 loss=loss_class,
872 )
--> 873 super().init(
874 model=model,
875 args=args,
/usr/local/lib/python3.11/dist-packages/setfit/trainer.py in init(self, model, args, train_dataset, eval_dataset, model_init, metric, metric_kwargs, callbacks, column_mapping)
326
327 callbacks = callbacks + [ModelCardCallback(self)] if callbacks else [ModelCardCallback(self)]
--> 328 self.st_trainer = BCSentenceTransformersTrainer(
329 setfit_model=model,
330 setfit_args=self.args,
/usr/local/lib/python3.11/dist-packages/setfit/trainer.py in init(self, setfit_model, setfit_args, callbacks, **kwargs)
92 for callback in callbacks:
93 self.add_callback(callback)
---> 94 self.callback_handler.on_init_end(self.args, self.state, self.control)
95
96 @Property
/usr/local/lib/python3.11/dist-packages/transformers/trainer_callback.py in on_init_end(self, args, state, control)
500
501 def on_init_end(self, args: TrainingArguments, state: TrainerState, control: TrainerControl):
--> 502 return self.call_event("on_init_end", args, state, control)
503
504 def on_train_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl):
/usr/local/lib/python3.11/dist-packages/setfit/trainer.py in (*args, **kwargs)
85 return control
86
---> 87 self.callback_handler.call_event = lambda *args, **kwargs: overwritten_call_event(
88 self.callback_handler, *args, **kwargs
89 )
/usr/local/lib/python3.11/dist-packages/setfit/trainer.py in overwritten_call_event(self, event, args, state, control, **kwargs)
73 st_model=self.model,
74 st_args=args,
---> 75 tokenizer=self.tokenizer,
76 optimizer=self.optimizer,
77 lr_scheduler=self.lr_scheduler,
AttributeError: 'CallbackHandler' object has no attribute 'tokenizer'