Model Sunma ile Python kodu dağıtma
Bu makalede, Mozaik AI Modeli Sunma ile Python kodunun nasıl dağıtılacağı açıklanmaktadır.
MLflow'un Python işlevi, pyfunc
python 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.