Sdílet prostřednictvím


Pokyny pro nasazení modelů MLflow

PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

V tomto článku se dozvíte o nasazení modelů MLflow do služby Azure Machine Learning pro odvozování v reálném čase i dávkové odvozování a o různých nástrojích, které můžete použít ke správě nasazení.

Nasazení bez kódu

Když nasadíte modely MLflow do služby Azure Machine Learning, na rozdíl od nasazení vlastního modelu, nemusíte poskytovat bodovací skript ani prostředí. Azure Machine Learning automaticky vygeneruje bodovací skript a prostředí. Tato funkce se nazývá nasazení bez kódu.

Pro nasazení bez kódu azure Machine Learning:

  • Zajišťuje, aby byly splněny všechny závislosti balíčku uvedené v modelu MLflow.
  • Poskytuje základní image nebo kurátorované prostředí MLflow, které obsahuje následující položky:
    • Balíčky potřebné k tomu, aby služba Azure Machine Learning prováděla odvozování, včetně mlflow-skinny.
    • Bodovací skript pro odvozování.

Balíčky a závislosti

Azure Machine Learning automaticky generuje prostředí pro spouštění odvozování na modelech MLflow. K sestavení prostředí azure Machine Learning přečte závislosti Conda zadané v modelu MLflow a přidá všechny balíčky potřebné ke spuštění serveru odvozování. Tyto další balíčky se liší v závislosti na typu nasazení.

Následující příklad souboru conda.yaml ukazuje závislosti Conda zadané v modelu MLflow.

channels:
- conda-forge
dependencies:
- python=3.12.3
- pip<=23.1.2
- pip:
  - mlflow
  - scikit-learn==1.6.1
  - psutil==5.9.4
name: mlflow-env

Important

MLflow automaticky rozpozná balíčky při protokolování modelu a připne verze balíčků do závislostí Conda modelu. Tato automatická detekce balíčků nemusí odrážet vaše záměry ani požadavky. Můžete také zaznamenat modely, které používají vlastní signaturu, prostředí nebo ukázky.

Modely, které zahrnují podpisy

Modely MLflow můžou obsahovat podpis, který označuje očekávané vstupy a jejich typy. Když se tyto modely nasadí do online nebo dávkových koncových bodů, Azure Machine Learning zajistí, aby počet a typy datových vstupů odpovídaly podpisu. Pokud vstupní data nelze analyzovat podle očekávání, vyvolání modelu selže.

Podpis modelu MLflow můžete zkontrolovat otevřením souboru MLmodel. Další informace o tom, jak podpisy fungují v MLflow, najdete v tématu Podpisy v MLflow.

Následující příklad souboru MLmodel zvýrazní signature.

artifact_path: model
flavors:
  python_function:
    env:
      conda: conda.yaml
      virtualenv: python_env.yaml
    loader_module: mlflow.sklearn
    model_path: model.pkl
    predict_fn: predict
    python_version: 3.12.3
  sklearn:
    code: null
    pickled_model: model.pkl
    serialization_format: cloudpickle
    sklearn_version: 1.1.2
mlflow_version: 2.7.1
model_uuid: 3f725f3264314c02808dd99d5e5b2781
run_id: 70f15bab-cf98-48f1-a2ea-9ad2108c28cd
signature:
  inputs: '[{"name": "age", "type": "double"}, {"name": "sex", "type": "double"},
    {"name": "bmi", "type": "double"}, {"name": "bp", "type": "double"}, {"name":
    "s1", "type": "double"}, {"name": "s2", "type": "double"}, {"name": "s3", "type":
    "double"}, {"name": "s4", "type": "double"}, {"name": "s5", "type": "double"},
    {"name": "s6", "type": "double"}]'
  outputs: '[{"type": "double"}]'

Tip

Podpisy v modelech MLflow se doporučují, protože poskytují pohodlný způsob, jak detekovat problémy s kompatibilitou dat. Další informace o tom, jak protokolovat modely s podpisy, najdete v tématu Modely protokolů, které používají vlastní podpis, prostředí nebo ukázky.

Nasazení v integrovaném serveru MLflow vs. nasazení na serveru odvozování ve službě Azure Machine Learning

Vývojáři modelů můžou k místnímu testování modelů používat integrované nástroje pro nasazení MLflow. Můžete například spustit místní instanci modelu registrovaného v registru serveru MLflow pomocí mlflow models serve nebo MLflow CLI mlflow models predict. Další informace o integrovaných nástrojích pro nasazení MLflow najdete v dokumentaci MLflow, viz integrované nástroje pro nasazení.

Azure Machine Learning také podporuje nasazování modelů do online i dávkových koncových bodů. Tyto koncové body spouští různé technologie odvozování, které můžou mít různé funkce.

  • Online koncové body služby Azure Machine Learning, podobně jako integrovaný server MLflow, poskytují škálovatelný, synchronní a jednoduchý způsob spouštění modelů pro odvozování.

  • Dávkové koncové body služby Azure Machine Learning můžou spouštět asynchronní odvozování prostřednictvím dlouhotrvajících procesů odvozování, které se můžou škálovat na velké objemy dat. Server MLflow tuto funkci nemá, i když můžete dosáhnout podobné schopnosti pomocí úloh Sparku. Další informace o dávkových koncových bodech a modelech MLflow najdete v tématu Použití modelů MLflow v dávkových nasazeních.

Formáty vstupu

Následující tabulka ukazuje vstupní typy podporované integrovaným serverem MLflow a typy, které podporují online koncové body služby Azure Machine Learning.

Typ vstupu Integrovaný server MLflow Online koncový bod služby Azure Machine Learning
Datové rámce pandas serializované JSON v rozdělené orientaci
Datové rámce pandas serializované do JSON s orientací na záznamy Deprecated
Datové rámce pandas serializované pomocí csv Použijte dávkové odvozování. Další informace najdete v tématu Nasazení modelů MLflow do dávkových koncových bodů.
Vstup TensorFlow jako serializované seznamy JSON (tensory) a slovník seznamů (pojmenované tensory)
Vstup TensorFlow pomocí TensorFlow Serving API

Následující části se zaměřují na modely MLflow nasazené do online koncových bodů služby Azure Machine Learning.

Vstupní struktura

Bez ohledu na typ vstupu vyžaduje Služba Azure Machine Learning zadání vstupů v datové části JSON v klíči input_dataslovníku . Tento klíč se nevyžaduje, když použijete příkaz mlflow models serve pro obsluhu modelů, takže datové části se nedají zaměnitelně pro online koncové body služby Azure Machine Learning a integrovaný server MLflow.

Important

Struktura datové části se změnila v MLflow 2.0.

Následující příklady datových částí ukazují rozdíly mezi modelem nasazeným na integrovaném serveru MLflow a serverem odvozování azure Machine Learning.

Datový rámec pandas serializovaný pomocí JSON ve struktuře split

{
    "input_data": {
        "columns": [
            "age", "sex", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
        ],
        "index": [1],
        "data": [
            [1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
        ]
    }
}

Vstup Tensoru

{
    "input_data": [
          [1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
          [1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
          [1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
          [1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
    ]
}

Vstup pojmenovaného tensoru

{
    "input_data": {
        "tokens": [
          [0, 655, 85, 5, 23, 84, 23, 52, 856, 5, 23, 1]
        ],
        "mask": [
          [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
        ]
    }
}

Přizpůsobení odvozování pro modely MLflow

Bodovací skripty přizpůsobují spouštění odvozování pro vlastní modely. V případě nasazení modelu MLflow se ale rozhodnutí o tom, jak spustit odvozování, provádí tvůrce modelů místo inženýra nasazení. Každá architektura modelu může automaticky používat konkrétní rutiny odvozování.

Pokud potřebujete změnit způsob odvozování pro model MLflow, můžete provést jednu z následujících akcí:

  • Změňte způsob zapisování vašeho modelu během trénovacího procesu.
  • Přizpůsobte odvozování pomocí hodnoticího skriptu v době nasazení.

Změňte způsob zaznamenávání modelu během školení

Při protokolování modelu buď pomocí mlflow.autolog nebo mlflow.<flavor>.log_model určuje příchuť použitá pro model, jak provést inference a jaké výsledky se mají vrátit. MLflow nevynucuje žádné konkrétní chování pro způsob, jakým predict() funkce generuje výsledky.

V některých případech můžete chtít provést předběžné zpracování nebo následné zpracování před a po spuštění modelu. Nebo můžete chtít změnit vrácené hodnoty, například pravděpodobnosti místo tříd. Jedním řešením je implementovat datové linky strojového učení, které se přesouvají od vstupů přímo k výstupům.

Například sklearn.pipeline.Pipeline nebo pyspark.ml.Pipeline jsou oblíbené způsoby implementace potrubí a někdy se doporučují ke zlepšení výkonu. Způsob, jakým váš model provádí inferenci, můžete také přizpůsobit zaznamenáváním vlastních modelů.

Přizpůsobení odvozování pomocí hodnoticího skriptu

I když modely MLflow nevyžadují bodovací skript, můžete ho přesto poskytnout k přizpůsobení provádění odvozování pro modely MLflow v případě potřeby. Další informace o přizpůsobení odvozování najdete v tématu Přizpůsobení nasazení modelu MLflow pro online koncové body nebo Přizpůsobení nasazení modelu pomocí skriptu bodování pro dávkové koncové body.

Important

Pokud se rozhodnete zadat bodovací skript pro nasazení modelu MLflow, musíte také poskytnout prostředí pro nasazení.

Nástroje pro nasazení

Azure Machine Learning poskytuje následující nástroje pro nasazení modelů MLflow do online a dávkových koncových bodů:

Každý nástroj má různé možnosti, zejména pro který typ výpočetních prostředků může cílit. Následující tabulka ukazuje podporu pro různé scénáře nasazení MLflow.

Scenario MLflow SDK Azure Machine Learning CLI/SDK nebo studio
Nasaďte je do spravovaných online koncových bodů. 1 Supported. Podívejte se na progresivní zavedení modelů MLflow do online koncových bodů. Supported. Viz Nasazení modelů MLflow do online koncových bodů.
Nasaďte je do spravovaných online koncových bodů pomocí hodnoticího skriptu. Nepodporuje se. 3 Supported. Viz Přizpůsobení nasazení modelů MLflow.
Nasaďte je do dávkových koncových bodů. Nepodporuje se. 3 Supported. Viz Použití modelů MLflow v dávkových nasazeních.
Nasaďte je do dávkových koncových bodů pomocí hodnoticího skriptu. Nepodporuje se. 3 Supported. Viz Přizpůsobení nasazení modelu pomocí hodnoticího skriptu.
Nasazení do webových služeb, jako jsou Azure Container Instances nebo Azure Kubernetes Service (AKS). Podpora starších systémů 2 Nepodporuje se. 2
Nasaďte je do webových služeb, jako jsou Container Instances nebo AKS, pomocí hodnoticího skriptu. Nepodporuje se. 3 Podpora starších systémů 2

1 Pokud je to možné, přepněte na spravované online koncové body .

2 Open source MLflow nepodporuje bodovací skripty ani dávkové spouštění.

Volba nástroje pro nasazení

Sadu MLflow SDK použijte, pokud jsou splněné obě tyto podmínky:

  • Znáte MLflow a chcete dál používat stejné metody.
  • Používáte platformu, jako je Azure Databricks, která nativně podporuje MLflow.

Pokud platí některá z následujících možností, použijte Azure Machine Learning CLI v2 nebo SDK pro Python:

  • Znáte nástroj.
  • Chcete automatizovat nasazení pomocí kanálů.
  • Chcete uložit konfiguraci nasazení do úložiště Git.

Pokud chcete rychle nasazovat a testovat modely natrénované pomocí MLflow, použijte uživatelské rozhraní nástroje Azure Machine Learning Studio.