Aracılığıyla paylaş


Model Sunma ile Python kodu dağıtma

Bu makalede, Model Sunma ile Python kodunun nasıl dağıtılacağı açıklanmaktadır.

MLflow'un Python işlevi, pyfuncpython kodunun herhangi bir parçasını veya herhangi bir Python modelini dağıtma esnekliği sağlar. Aşağıda, kılavuzu kullanmak isteyebileceğiniz örnek senaryolar verilmiştir.

  • Girişler modelin tahmin işlevine geçirilmeden önce modeliniz için ön işleme gerekir.
  • Model çerçeveniz MLflow tarafından yerel olarak desteklenmiyor.
  • Uygulamanız, modelin ham çıkışlarının tüketim için işlemden sonra işlenmesini gerektiriyor.
  • Modelin kendisi istek başına dallanma mantığına sahiptir.
  • Tam özel kodu bir model olarak dağıtmak istiyorsunuz.

Özel bir MLflow Python işlev modeli oluşturma

MLflow, Python kodunu özel Python modelleri biçimiyle günlüğe kaydetme olanağı sunar.

MLflow ile rastgele python kodu paketleme sırasında iki gerekli işlev vardır:

  • load_context - Modelin çalışması için yalnızca bir kez yüklenmesi gereken her şey bu işlevde tanımlanmalıdır. Bu, sistemin işlev sırasında yüklenen yapıt sayısını en aza indirerek çıkarımı hızlandırması predict açısından kritik önem taşır.
  • predict - bu işlev, her giriş isteği yapıldığında çalıştırılacak tüm mantığı barındırabilir.

Python işlev modelinizi günlüğe kaydetme

Modelinizi özel kodla yazıyor olsanız bile, kuruluşunuzdan paylaşılan kod modüllerini kullanabilirsiniz. parametresiyle code_path , modellerin yazarları yola yüklenen ve diğer özel pyfunc modellerden kullanılabilen tam kod başvurularını günlüğe kaydedebilir.

Örneğin, bir model şu şekilde günlüğe kaydedildiyse:

mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])

dosyasındaki preprocessing_utils kod, modelin yüklenen bağlamında kullanılabilir. Aşağıda bu kodu kullanan örnek bir model verilmiştir.

class CustomModel(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
        self.model = torch.load(context.artifacts["model-weights"])
        from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
        self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])

    def format_inputs(self, model_input):
        # insert some code that formats your inputs
        pass

    def format_outputs(self, outputs):
        predictions = (torch.sigmoid(outputs)).data.numpy()
        return predictions

    def predict(self, context, model_input):
        model_input = self.format_inputs(model_input)
        outputs = self.model.predict(model_input)
        return self.format_outputs(outputs)

Modelinize hizmet etme

Özel pyfunc modelinizi günlüğe kaydettikten sonra Unity Kataloğu'na veya Çalışma Alanı Kayıt Defteri'ne kaydedebilir ve modelinizi Model Sunma uç noktasına sağlayabilirsiniz.

Not defteri örneği

Aşağıdaki not defteri örneği, sorgulanan modelin ham çıkışının tüketim için işlenmesi gerektiğinde model çıkışını özelleştirmeyi gösterir.

MLflow PyFunc not defteriyle model sunum çıkışını özelleştirme

Not defterini alma