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 pyfunc
Python 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,
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, sisteminpredict
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