in templates/inference-endpoints/preprocessing/1/model.py [0:0]
def initialize(self, args):
"""`initialize` is called only once when the model is being loaded.
Implementing `initialize` function is optional. This function allows
the model to initialize any state associated with this model.
Parameters
----------
args : dict
Both keys and values are strings. The dictionary keys and values are:
* model_config: A JSON string containing the model configuration
* model_instance_kind: A string containing model instance kind
* model_instance_device_id: A string containing model instance device ID
* model_repository: Model repository path
* model_version: Model version
* model_name: Model name
"""
# Parse model configs
model_config = json.loads(args['model_config'])
tokenizer_dir = Path(model_config['parameters']['tokenizer_dir']['string_value'])
tokenizer_path = tokenizer_dir.joinpath("tokenizer.json")
pad_to_multiple_of = int(model_config['parameters']['pad_to_multiple_of']['string_value'])
special_tokens_map_path = tokenizer_dir.joinpath("special_tokens_map.json")
with open(special_tokens_map_path, "r", encoding="utf-8") as special_tokens_f:
special_tokens_map = json.load(special_tokens_f)
self.tokenizer = Tokenizer.from_file(str(tokenizer_path))
if "eos_token" in special_tokens_map:
eos_token = special_tokens_map["eos_token"]["content"]
eos_token_id = self.tokenizer.encode(eos_token, add_special_tokens=False).ids[0]
# self.tokenizer.enable_padding(
# direction="left", pad_id=eos_token_id, pad_token=eos_token, pad_to_multiple_of=pad_to_multiple_of
# )
self.pad_token = eos_token
self.pad_token_id = eos_token_id
# Parse model output configs and convert Triton types to numpy types
for name in INPUT_NAMES:
dtype = pb_utils.triton_string_to_numpy(
pb_utils.get_output_config_by_name(model_config, name)['data_type']
)
setattr(self, name.lower() + "_dtype", dtype)