Skip to content

Commit

Permalink
[Trainer] Undo #29896 (#30129)
Browse files Browse the repository at this point in the history
* Undo

* Use tokenizer

* Undo data collator
  • Loading branch information
NielsRogge authored Apr 9, 2024
1 parent ba1b24e commit e9c23fa
Show file tree
Hide file tree
Showing 20 changed files with 24 additions and 41 deletions.
4 changes: 2 additions & 2 deletions docs/source/en/tasks/image_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ At this point, only three steps remain:
... data_collator=data_collator,
... train_dataset=food["train"],
... eval_dataset=food["test"],
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... )

Expand Down Expand Up @@ -418,7 +418,7 @@ and use the [PushToHubCallback](../main_classes/keras_callbacks#transformers.Pus
>>> metric_callback = KerasMetricCallback(metric_fn=compute_metrics, eval_dataset=tf_eval_dataset)
>>> push_to_hub_callback = PushToHubCallback(
... output_dir="food_classifier",
... image_processor=image_processor,
... tokenizer=image_processor,
... save_strategy="no",
... )
>>> callbacks = [metric_callback, push_to_hub_callback]
Expand Down
2 changes: 1 addition & 1 deletion docs/source/en/tasks/object_detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ Finally, bring everything together, and call [`~transformers.Trainer.train`]:
... args=training_args,
... data_collator=collate_fn,
... train_dataset=cppe5["train"],
... image_processor=image_processor,
... tokenizer=image_processor,
... )

>>> trainer.train()
Expand Down
2 changes: 1 addition & 1 deletion docs/source/en/tasks/semantic_segmentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@ and use the [`PushToHubCallback`] to upload the model:
... metric_fn=compute_metrics, eval_dataset=tf_eval_dataset, batch_size=batch_size, label_cols=["labels"]
... )

>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", image_processor=image_processor)
>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", tokenizer=image_processor)

>>> callbacks = [metric_callback, push_to_hub_callback]
```
Expand Down
2 changes: 1 addition & 1 deletion docs/source/en/tasks/video_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ Then you just pass all of this along with the datasets to `Trainer`:
... args,
... train_dataset=train_dataset,
... eval_dataset=val_dataset,
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... data_collator=collate_fn,
... )
Expand Down
2 changes: 1 addition & 1 deletion docs/source/es/tasks/image_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ Al llegar a este punto, solo quedan tres pasos:
... data_collator=data_collator,
... train_dataset=food["train"],
... eval_dataset=food["test"],
... image_processor=image_processor,
... tokenizer=image_processor,
... )

>>> trainer.train()
Expand Down
4 changes: 2 additions & 2 deletions docs/source/ja/tasks/image_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ food["test"].set_transform(preprocess_val)
... data_collator=data_collator,
... train_dataset=food["train"],
... eval_dataset=food["test"],
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... )

Expand Down Expand Up @@ -426,7 +426,7 @@ Convert your datasets to the `tf.data.Dataset` format using the [`~datasets.Data
>>> metric_callback = KerasMetricCallback(metric_fn=compute_metrics, eval_dataset=tf_eval_dataset)
>>> push_to_hub_callback = PushToHubCallback(
... output_dir="food_classifier",
... image_processor=image_processor,
... tokenizer=image_processor,
... save_strategy="no",
... )
>>> callbacks = [metric_callback, push_to_hub_callback]
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ja/tasks/object_detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ DETR モデルをトレーニングできる「ラベル」。画像プロセッ
... args=training_args,
... data_collator=collate_fn,
... train_dataset=cppe5["train"],
... image_processor=image_processor,
... tokenizer=image_processor,
... )

>>> trainer.train()
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ja/tasks/semantic_segmentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ TensorFlow でモデルを微調整するには、次の手順に従います。
... metric_fn=compute_metrics, eval_dataset=tf_eval_dataset, batch_size=batch_size, label_cols=["labels"]
... )

>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", image_processor=image_processor)
>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", tokenizer=image_processor)

>>> callbacks = [metric_callback, push_to_hub_callback]
```
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ja/tasks/video_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ def compute_metrics(eval_pred):
... args,
... train_dataset=train_dataset,
... eval_dataset=val_dataset,
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... data_collator=collate_fn,
... )
Expand Down
4 changes: 2 additions & 2 deletions docs/source/ko/tasks/image_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ food["test"].set_transform(preprocess_val)
... data_collator=data_collator,
... train_dataset=food["train"],
... eval_dataset=food["test"],
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... )

Expand Down Expand Up @@ -417,7 +417,7 @@ TensorFlow에서 모델을 미세 조정하려면 다음 단계를 따르세요:
>>> metric_callback = KerasMetricCallback(metric_fn=compute_metrics, eval_dataset=tf_eval_dataset)
>>> push_to_hub_callback = PushToHubCallback(
... output_dir="food_classifier",
... image_processor=image_processor,
... tokenizer=image_processor,
... save_strategy="no",
... )
>>> callbacks = [metric_callback, push_to_hub_callback]
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ko/tasks/object_detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ DatasetDict({
... args=training_args,
... data_collator=collate_fn,
... train_dataset=cppe5["train"],
... image_processor=image_processor,
... tokenizer=image_processor,
... )

>>> trainer.train()
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ko/tasks/semantic_segmentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ TensorFlow에서 모델을 미세 조정하려면 다음 단계를 따르세요:
... metric_fn=compute_metrics, eval_dataset=tf_eval_dataset, batch_size=batch_size, label_cols=["labels"]
... )

>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", image_processor=image_processor)
>>> push_to_hub_callback = PushToHubCallback(output_dir="scene_segmentation", tokenizer=image_processor)

>>> callbacks = [metric_callback, push_to_hub_callback]
```
Expand Down
2 changes: 1 addition & 1 deletion docs/source/ko/tasks/video_classification.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ def compute_metrics(eval_pred):
... args,
... train_dataset=train_dataset,
... eval_dataset=val_dataset,
... image_processor=image_processor,
... tokenizer=image_processor,
... compute_metrics=compute_metrics,
... data_collator=collate_fn,
... )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ def val_transforms(example_batch):
train_dataset=dataset["train"] if training_args.do_train else None,
eval_dataset=dataset["validation"] if training_args.do_eval else None,
compute_metrics=compute_metrics,
image_processor=image_processor,
tokenizer=image_processor,
data_collator=collate_fn,
)

Expand Down
2 changes: 1 addition & 1 deletion examples/pytorch/image-pretraining/run_mae.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ def preprocess_images(examples):
args=training_args,
train_dataset=ds["train"] if training_args.do_train else None,
eval_dataset=ds["validation"] if training_args.do_eval else None,
image_processor=image_processor,
tokenizer=image_processor,
data_collator=collate_fn,
)

Expand Down
2 changes: 1 addition & 1 deletion examples/pytorch/image-pretraining/run_mim.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ def preprocess_images(examples):
args=training_args,
train_dataset=ds["train"] if training_args.do_train else None,
eval_dataset=ds["validation"] if training_args.do_eval else None,
image_processor=image_processor,
tokenizer=image_processor,
data_collator=collate_fn,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ def preprocess_val(example_batch):
train_dataset=dataset["train"] if training_args.do_train else None,
eval_dataset=dataset["validation"] if training_args.do_eval else None,
compute_metrics=compute_metrics,
image_processor=image_processor,
tokenizer=image_processor,
data_collator=default_data_collator,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ def compute_metrics(p):
output_dir=training_args.output_dir,
hub_model_id=push_to_hub_model_id,
hub_token=training_args.push_to_hub_token,
image_processor=image_processor,
tokenizer=image_processor,
**model_card_kwargs,
)
)
Expand Down
17 changes: 2 additions & 15 deletions src/transformers/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
from .debug_utils import DebugOption, DebugUnderflowOverflow
from .feature_extraction_sequence_utils import SequenceFeatureExtractor
from .hyperparameter_search import ALL_HYPERPARAMETER_SEARCH_BACKENDS, default_hp_search_backend
from .image_processing_utils import BaseImageProcessor
from .integrations.deepspeed import deepspeed_init, deepspeed_load_checkpoint, is_deepspeed_available
from .integrations.tpu import tpu_spmd_dataloader
from .modelcard import TrainingSummary
Expand Down Expand Up @@ -331,9 +330,6 @@ class Trainer:
by this function will be reflected in the predictions received by `compute_metrics`.
Note that the labels (second parameter) will be `None` if the dataset does not have them.
image_processor ([`BaseImageProcessor`], *optional*):
The image processor used to preprocess the data. If provided, it will be saved along the model to make it easier
to rerun an interrupted training or reuse the fine-tuned model.
Important attributes:
Expand Down Expand Up @@ -369,7 +365,6 @@ def __init__(
callbacks: Optional[List[TrainerCallback]] = None,
optimizers: Tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR] = (None, None),
preprocess_logits_for_metrics: Optional[Callable[[torch.Tensor, torch.Tensor], torch.Tensor]] = None,
image_processor: Optional["BaseImageProcessor"] = None,
):
if args is None:
output_dir = "tmp_trainer"
Expand Down Expand Up @@ -502,7 +497,6 @@ def __init__(
self.train_dataset = train_dataset
self.eval_dataset = eval_dataset
self.tokenizer = tokenizer
self.image_processor = image_processor

# Bnb Quantized models doesn't support `.to` operation.
if (
Expand Down Expand Up @@ -554,7 +548,7 @@ def __init__(
default_callbacks = DEFAULT_CALLBACKS + get_reporting_integration_callbacks(self.args.report_to)
callbacks = default_callbacks if callbacks is None else default_callbacks + callbacks
self.callback_handler = CallbackHandler(
callbacks, self.model, self.tokenizer, self.image_processor, self.optimizer, self.lr_scheduler
callbacks, self.model, self.tokenizer, self.optimizer, self.lr_scheduler
)
self.add_callback(PrinterCallback if self.args.disable_tqdm else DEFAULT_PROGRESS_CALLBACK)

Expand Down Expand Up @@ -3289,8 +3283,6 @@ def _save_tpu(self, output_dir: Optional[str] = None):
)
if self.tokenizer is not None and self.args.should_save:
self.tokenizer.save_pretrained(output_dir)
if self.image_processor is not None and self.args.should_save:
self.image_processor.save_pretrained(output_dir)

# We moved the model from TPU -> CPU for saving the weights.
# Now we should move it back to subsequent compute still works.
Expand Down Expand Up @@ -3328,8 +3320,6 @@ def _save(self, output_dir: Optional[str] = None, state_dict=None):

if self.tokenizer is not None:
self.tokenizer.save_pretrained(output_dir)
if self.image_processor is not None:
self.image_processor.save_pretrained(output_dir)

# Good practice: save your training arguments together with the trained model
torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME))
Expand Down Expand Up @@ -4027,9 +4017,6 @@ def _push_from_checkpoint(self, checkpoint_folder):
# Saving the tokenizer is fast and we don't know how many files it may have spawned, so we resave it to be sure.
if self.tokenizer is not None:
self.tokenizer.save_pretrained(output_dir)
# Same for the image processor
if self.image_processor is not None:
self.image_processor.save_pretrained(output_dir)
# Same for the training arguments
torch.save(self.args, os.path.join(output_dir, TRAINING_ARGS_NAME))

Expand Down Expand Up @@ -4083,7 +4070,7 @@ def push_to_hub(
**kwargs,
) -> str:
"""
Upload `self.model` and `self.tokenizer` or `self.image_processor` to the 🤗 model hub on the repo `self.args.hub_model_id`.
Upload `self.model` and `self.tokenizer` to the 🤗 model hub on the repo `self.args.hub_model_id`.
Parameters:
commit_message (`str`, *optional*, defaults to `"End of training"`):
Expand Down
6 changes: 1 addition & 5 deletions src/transformers/trainer_callback.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,6 @@ class TrainerCallback:
The model being trained.
tokenizer ([`PreTrainedTokenizer`]):
The tokenizer used for encoding the data.
image_processor ([`BaseImageProcessor`]):
The image processor used for encoding the images.
optimizer (`torch.optim.Optimizer`):
The optimizer used for the training steps.
lr_scheduler (`torch.optim.lr_scheduler.LambdaLR`):
Expand Down Expand Up @@ -309,13 +307,12 @@ def on_prediction_step(self, args: TrainingArguments, state: TrainerState, contr
class CallbackHandler(TrainerCallback):
"""Internal class that just calls the list of callbacks in order."""

def __init__(self, callbacks, model, tokenizer, image_processor, optimizer, lr_scheduler):
def __init__(self, callbacks, model, tokenizer, optimizer, lr_scheduler):
self.callbacks = []
for cb in callbacks:
self.add_callback(cb)
self.model = model
self.tokenizer = tokenizer
self.image_processor = image_processor
self.optimizer = optimizer
self.lr_scheduler = lr_scheduler
self.train_dataloader = None
Expand Down Expand Up @@ -420,7 +417,6 @@ def call_event(self, event, args, state, control, **kwargs):
control,
model=self.model,
tokenizer=self.tokenizer,
image_processor=self.image_processor,
optimizer=self.optimizer,
lr_scheduler=self.lr_scheduler,
train_dataloader=self.train_dataloader,
Expand Down

0 comments on commit e9c23fa

Please sign in to comment.