Patch for NLP vocab artifacts
shouldn't tokenizer_model be handled similarly? > shouldn't tokenizer_model be handled similarly?

ok, got it.
Changed setup_tokenizer logic so that if the model is being restored it will try to use the vocab file "tokenizer.vocab_file" first.

If "tokenizer.vocab_file" doesn't exist, then it will fall back to cfg.vocab_file.

If no `vocab_file` is given, we will try to get the vocab from the tokenizer and then register the `vocab_dict` and the `vocab_file`.
When writing the `vocab_dict` and `vocab_file` that we get from the tokenizer we write them to a cache directory based on a hash of the `vocab_dict`.

TODO: create docstring to clarify the flow