Spaces:
Runtime error
Runtime error
massively improving speed
Browse files- ShaderEval.py +13 -1
ShaderEval.py
CHANGED
|
@@ -94,9 +94,21 @@ class ReturnGenerationEvaluator(evaluate.TextGenerationEvaluator):
|
|
| 94 |
raise ValueError(
|
| 95 |
f"Incompatible `model_or_pipeline`. Please specify `model_or_pipeline` compatible with the `{self.task}` task."
|
| 96 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
return pipe
|
| 98 |
|
| 99 |
-
def _resolve_context_lenght(self, model_or_pipeline=None): #TODO should really copy the typing hints here.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
# tokenizer needs to know the context length for our pipe strategy, but it has to be passed to the tokenizer, not model.
|
| 101 |
# the tokenizer should read from the model config, but that can be wrong, or it has a task overwrite (for "text-generation" for example you get 50)
|
| 102 |
#model_or_pipeline only exists via the .compute call, so we have to take it in
|
|
|
|
| 94 |
raise ValueError(
|
| 95 |
f"Incompatible `model_or_pipeline`. Please specify `model_or_pipeline` compatible with the `{self.task}` task."
|
| 96 |
)
|
| 97 |
+
|
| 98 |
+
# fixinging default for max_lenght
|
| 99 |
+
pipe.model.config.max_length = self._resolve_context_lenght(pipe=pipe)
|
| 100 |
+
|
| 101 |
+
# specify eos tokens to be all of those that include a ; so we can stop early.
|
| 102 |
+
self.PIPELINE_KWARGS.update({"eos_token_id": [v for k,v in pipe.tokenizer.vocab.items() if ";" in k]}) #didn't see that this was passed all the way already.
|
| 103 |
+
# solution found here: https://huggingface.co/docs/transformers/main_classes/text_generation#transformers.GenerationConfig.eos_token_id but does it actually work?
|
| 104 |
+
|
| 105 |
return pipe
|
| 106 |
|
| 107 |
+
def _resolve_context_lenght(self, model_or_pipeline=None, pipe=None): #TODO should really copy the typing hints here.
|
| 108 |
+
if isinstance(model_or_pipeline, transformers.GPT2Model): # you are comparing a string here -.-
|
| 109 |
+
return model_or_pipeline.config.n_ctx # how GPT2 models might handle is, seen with
|
| 110 |
+
if pipe is not None: #should I figure out a way to pass this.
|
| 111 |
+
pipe.tokenizer.model_max_length # this is set to something small for pipeline default task, but we would want to put it to the max instead.
|
| 112 |
# tokenizer needs to know the context length for our pipe strategy, but it has to be passed to the tokenizer, not model.
|
| 113 |
# the tokenizer should read from the model config, but that can be wrong, or it has a task overwrite (for "text-generation" for example you get 50)
|
| 114 |
#model_or_pipeline only exists via the .compute call, so we have to take it in
|