Udostępnij za pośrednictwem


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.artifactsi 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.