in optimum/exporters/openvino/__main__.py [0:0]
def maybe_convert_tokenizers(library_name: str, output: Path, model=None, preprocessors=None, task=None):
"""
Tries to convert tokenizers to OV format and export them to disk.
Arguments:
library_name (`str`):
The library name.
output (`Path`):
Path to save converted tokenizers to.
model (`PreTrainedModel`, *optional*, defaults to None):
Model instance.
preprocessors (`Iterable`, *optional*, defaults to None):
Iterable possibly containing tokenizers to be converted.
task (`str`, *optional*, defaults to None):
The task to export the model for. Affects tokenizer conversion parameters.
"""
from optimum.exporters.openvino.convert import export_tokenizer
if is_openvino_tokenizers_available():
if library_name != "diffusers" and preprocessors:
processor_chat_template = None
tokenizer = next(filter(lambda it: isinstance(it, PreTrainedTokenizerBase), preprocessors), None)
if len(preprocessors) > 1:
for processor in preprocessors:
if isinstance(processor, ProcessorMixin) and hasattr(processor, "chat_template"):
processor_chat_template = processor.chat_template
if tokenizer:
try:
export_tokenizer(tokenizer, output, task=task, processor_chat_template=processor_chat_template)
except Exception as exception:
logger.warning(
"Could not load tokenizer using specified model ID or path. OpenVINO tokenizer/detokenizer "
f"models won't be generated. Exception: {exception}"
)
elif model:
for tokenizer_name in ("tokenizer", "tokenizer_2", "tokenizer_3"):
tokenizer = getattr(model, tokenizer_name, None)
if tokenizer:
export_tokenizer(tokenizer, output / tokenizer_name, task=task)
else:
logger.warning("Tokenizer won't be converted.")