Aracılığıyla paylaş


Model Sunma ile Python kodu dağıtma

Bu makalede, Mozaik Yapay Zeka Modeli Sunmaile özelleştirilmiş Python kodunuzun nasıl dağıtılacağı açıklanmaktadır. Bu makaledeki örnek, modelinize önişlem ve son işlem mantığı ekleme ve dağıtma yönergeleri sağlamaya odaklanmaktadır.

MLflow'un pyfuncPython işlevi, herhangi bir Python kodu 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.

  • Modelinizin tahmin işlevine girişler aktarılmadan önce ön işleme tabi tutulması 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.
  • Tamamen özel kodu bir model olarak dağıtmak istiyorsunuz.

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

MLflow,özel Python modelleri biçimiyle Python kodunu 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 predict işlevi sırasında yüklenen yapıt sayısını en aza indirerek çıkarımı hızlandırması 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.

Not

Özel kodunuzu model olarak dağıtmadan önce, modelin kullanıma sunulduğundan emin olmak yararlı olur. dağıtım önce modelleri doğrulamakiçin mlflow.models.predict nasıl kullanabileceğiniz hakkında MLflow belgelerine bakın.

Python işlev modelinizi kaydetme logu oluşturun.

Modelinizi özel kodla yazıyor olsanız bile, kuruluşunuzdan paylaşılan kod modüllerini kullanabilirsiniz. code_path parametresiyle, modellerin yazarları yola yüklenen ve diğer özel pyfunc modellerinden 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/"])

preprocessing_utils kodu, 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 kaydettikten sonra Unity Kataloğu'na veya Çalışma Alanı Kayıt Defteri'ne kaydedebilir ve modelinizi Model Servis Sunma uç birimine sağlayabilirsiniz.

Not defteri örneği

Aşağıdaki not defteri örneği, sorgulanan modelin ham çıkışını kullanıma uygun hale getirmek için son işlemden geçirildiğinde model çıkışının nasıl özelleştirileceğini gösterir.

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

not defteri alma