Tworzenie pakietów artefaktów niestandardowych na potrzeby obsługi modelu
W tym artykule opisano, jak upewnić się, że zależności pliku i artefaktu modelu są dostępne w usłudze Model obsługującym punkt końcowy usługi Azure Databricks .
Wymagania
MLflow 1.29 i nowsze
Tworzenie pakietów artefaktów za pomocą modeli
Gdy model wymaga plików lub artefaktów podczas wnioskowania, możesz spakować je do artefaktu modelu podczas rejestrowania modelu.
Jeśli pracujesz z notesami usługi Azure Databricks, typowym rozwiązaniem jest posiadanie tych plików w woluminach wykazu aparatu Unity. Modele są również czasami skonfigurowane do pobierania artefaktów z Internetu (takich jak HuggingFace Tokenizers). Obciążenia w czasie rzeczywistym na dużą skalę działają najlepiej, gdy wszystkie wymagane zależności są statycznie przechwytywane w czasie wdrażania. Z tego powodu obsługa modelu wymaga, aby artefakty woluminów wykazu aparatu Unity zostały spakowane do samego artefaktu modelu przy użyciu interfejsów MLflow. Artefakty sieciowe ładowane z modelem powinny być pakowane razem z modelem, jeśli jest to możliwe.
Za pomocą polecenia MLflow log_model() można rejestrować model i jego zależne artefakty za pomocą parametru artifacts
.
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)
W modelach PyFunc ścieżki tych artefaktów są dostępne z context
obiektu w obszarze context.artifacts
i można je załadować w standardowy sposób dla tego typu pliku.
Na przykład w niestandardowym modelu MLflow:
class ModelPyfunc(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
self.tokenizer = transformers.BertweetTokenizer.from_pretrained("model-base", local_files_only=True, cache_dir=context.artifacts["tokenizer_cache"])
...
Gdy pliki i artefakty zostaną spakowane w ramach artefaktu modelu, możesz służyć modelowi do punktu końcowego obsługującego model.