Не удалось запустить trainer.train () с трансформатором huggingface - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь настроить фреймворк тонкой настройки TensorFlow для проекта с ответами на вопросы. Используется hugging-face / transformer в качестве прототипа, но не может пройти через трейнер.

Эксперимент проводится в Databricks, предварительно обученная модель загружена как base-bert, наборы train и dev загружаются из hugging- примеры лиц SQUAD 2.0 https://github.com/huggingface/transformers/tree/master/examples/question-answering

Журнал ошибок жалуется на неожиданный аргумент ключевого слова ' is_impossible ', который является функцией формата данных SQUAD 2.

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = TFAutoModelForQuestionAnswering.from_pretrained('bert-base-uncased')

processor = SquadV2Processor()

train_examples = processor.get_train_examples(data_dir, train_file_name)
eval_examples = processor.get_dev_examples(data_dir, dev_file_name)

train_dataset = (squad_convert_examples_to_features(
            examples=train_examples,
            tokenizer=tokenizer,
            max_seq_length=max_seq_length,
            doc_stride=doc_stride,
            max_query_length=max_query_length,
            is_training=True,
            return_dataset="tf"
        )) 

eval_dataset = (squad_convert_examples_to_features(
            examples=eval_examples,
            tokenizer=tokenizer,
            max_seq_length=max_seq_length,
            doc_stride=doc_stride,
            max_query_length=max_query_length,
            is_training=False,
            return_dataset="tf"
        )) 

training_args = (TFTrainingArguments(
    output_dir=output_dir, 
    num_train_epochs=2,
    do_train=True, 
    per_device_train_batch_size = 8, 
    per_device_eval_batch_size = 16,
    logging_steps=10, 
    learning_rate=3e-5))

trainer = TFTrainer(model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset)

trainer.train()

Журнал ошибок, как показано ниже:

TypeError Traceback (последний вызов последним) в ----> 1 trainer.train ()

/ databricks / python / lib / python3 .7 / site-packages / transformers / trainer_tf. py in train (self) 410, если self.args.past_index> = 0: 411 self._past = None -> 412 для шага, training_loss in enumerate (self._training_steps (train_ds, optimizer)): 413 self.global_step = iterations . numpy () 414 self.epoch_logging = epoch_iter - 1 + (step + 1) / steps_per_epoch

/ databricks / python / lib / python3 .7 / site-packages / transformers / trainer_tf.py in _training_steps (self, ds, optimizer) 457 Возвращает генератор по шагам обучения (т. е. обновлению параметров). 458 "" "-> 459 для i, потеря в перечислении (self._accumulate_next_gradients (ds)): 460, если i% self.args.gradient_accumulation_steps == 0: 461 self._apply_gradients (оптимизатор)

/ databricks / python / lib / python3 .7 / site-packages / transformers / trainer_tf.py в _accumulate_next_gradients (self, ds) 490 while True: 491 try: -> 492 yield _accumulate_next () 493 за исключением tf.errors.OutOfRangeError : 494 перерыв

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / eager / def_function.py в call (self, * args, ** kwds) 566 xla_context.Exit () 567 else: -> 568 result = self._call (* args, ** kwds) 569570 if tracing_count == self._get_tracing_count ():

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / eager / def_function.py в _call ( self, * args, ** kwds) 613 # Это первый вызов call , поэтому мы должны инициализировать. 614 initializers = [] -> 615 self._initialize (args, kwds, add_initializers_to = initializers) 616 finally: 617 # На этом этапе мы знаем, что инициализация завершена (или меньше

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / eager / def_function.py в _initialize (self, args, kwds, add_initializers_to) 495 self._concrete_store. 496 self._stateful_fn._get_concrete_function_internal_garbage_collected (

pylint: disable = protected-access

-> 497 * args, ** kwds)) 498 499 def invalid_creator_scope (* unused_args, ** unused_kwds) :

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / eager / selected function.py в _get_concrete_garden (self_concrete_function, self * args, ** kwargs) 2387 args, kwargs = None, None 2388 с self._lock: -> 2389 graph_function, _, _ = self._maybe_define_functio n (args, kwargs) 2390 return graph_function 2391

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tenorflow_core / python /function.py в _maybe_define_function (self, args, kwargs) 2701 2702 self._function_cache.missed.add (call_context_key) -> 2703 graph_function = self._create_graph_function (args, kwargs) 2704 self._function_cache. primary [cache_key] = graph_function 2705 return graph_function, args, kwargs

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site_core-packages / tensorflow-packages / tensorflow python / eager / function.py в _create_graph_function (self, args, kwargs, override_flat_arg_shapes) 2591 arg_names = arg_names, 2592 override_flat_arg_shapes = override_flat_arg_shapes, -> 2593 capture_by_value_shapes, -> 2593 capture_by_value_value95, self.by_value_value, 2593 вверх по графику после выхода из

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / framework / func_graph .py в func_graph_from_py_fun c (имя, python_fun c, args, kwargs, подпись, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value77, override_78sport_arg) * 976fun_arg) func_output s = python_fun c (* func_args, ** func_kwargs) 979 980 # invariant: func_outputs содержит только тензоры, CompositeTensors,

/ local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e459-df9-e459-df9-f56565e5-e45b-44df9 /lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py в wrapped_fn (* args, ** kwds) 437 # wrapped позволяет AutoGraph заменять преобразованную функцию. Мы даем функции 438 # слабую ссылку на себя, чтобы избежать цикла ссылок. -> 439 return weak_wrapped_fn (). завернутый (* args, ** kwds) 440 weak_wrapped_fn = weakref.ref (wrapped_fn) 441

/ local_disk0 / pythonVirtualEnvDirs / virtualbenv-f565 -447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / framework / func_graph.py в оболочке (* args, ** kwargs) 966, кроме Exception as e: # pylint: disable = wide -except 967 if hasattr (e, "ag_error_metadata"): -> 968 поднять e.ag_error_metadata.to_exception (e) 969 else: 970 поднять

TypeError: в преобразованном коде:

/databricks/python/lib/python3.7/site-packages/transformers/trainer_tf.py:488

_accumulate_next * return self._accumulate_gradients (per_replica_features, per_replica_labels) /databricks/python/lib/python3.7/site-packages/transformers/trainer_tf.py:498 _excumulate_radients * per_replica_radients * per_replica local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / distribute / one_device_strategy.py: 180 экспериментальный_run_v2 return super OneDeviceStrategy, self) .experimental_run_v2 (fn, args, kwargs) /databricks/python/lib/python3.7/site-packages/transformers/trainer_tf.py:511 _forward * per_example_loss, _ = self._run_model (features, labels , True) /databricks/python/lib/python3.7/site-packages/transformers/trainer_tf.py:532 _run_model * output = self.model (features, training = training, ** label) [: 2] / local_disk0 / pythonVirtualEnvDirs / virtualEnv-f56565e5-e45b-447a-b7df-50daf9109495 / lib / python3 .7 / site-packages / tensorflow_core / python / keras / engine / base_layer.py выводит: 778 вызов call_fn (cast_inputs, * аргументы, ** kwargs)

TypeError: tf__call() got an unexpected keyword argument 'is_impossible'
...