Çalışma alanları arasında modelleri paylaşma

Önemli

Databricks, çalışma alanları arasında modelleri paylaşmak için Unity Kataloğu'ndaki Modellerin kullanılmasını önerir. Bu makaledeki yaklaşım kullanım dışıdır.

Azure Databricks, modelleri birden çok çalışma alanı arasında paylaşmayı destekler. Örneğin, geliştirme çalışma alanında bir model geliştirip günlüğe kaydedebilir ve ardından modele erişip ayrı bir üretim çalışma alanındaki modellerle karşılaştırabilirsiniz. Bu, birden çok ekip modellere erişimi paylaştığında veya kuruluşunuzun geliştirmenin farklı aşamalarını işlemek için birden çok çalışma alanı olduğunda kullanışlıdır. Çalışma alanları arası model geliştirme ve dağıtım için Databricks, model eğitim kodunun birden çok ortam için dağıtıldığı dağıtım kodu yaklaşımını önerir.

Çok çalışma alanılı durumlarda, uzak model kayıt defterini kullanarak Azure Databricks çalışma alanlarındaki modellere erişebilirsiniz. Örneğin, veri bilimciler üretim modeli kayıt defterine salt okunur erişimle erişebilir ve geliştirme modellerini geçerli üretim modelleriyle karşılaştırabilir. Aşağıda örnek bir çoklu çalışma alanı kurulumu gösterilmiştir.

Birden çok çalışma alanı

Uzak kayıt defterine erişim belirteçler tarafından denetlenmektedir. Erişim gerektiren her kullanıcı veya betik, uzak kayıt defterinde bir kişisel erişim belirteci oluşturur ve bu belirteci kendi yerel çalışma alanının gizli dizi yöneticisine kopyalar. Uzak kayıt defteri çalışma alanına gönderilen her API isteğinin erişim belirtecini içermesi gerekir; MLflow, model kayıt defteri işlemleri gerçekleştirilirken kullanılacak gizli dizileri belirtmek için basit bir mekanizma sağlar.

Not

En iyi güvenlik uygulaması olarak otomatik araçlar, sistemler, betikler ve uygulamalarla kimlik doğrulaması yaptığınızda Databricks, çalışma alanı kullanıcıları yerine hizmet sorumlularına ait kişisel erişim belirteçlerini kullanmanızı önerir. Hizmet sorumlularına yönelik belirteçler oluşturmak için bkz . Hizmet sorumlusu için belirteçleri yönetme.

Model kayıt defteri için tüm istemci ve akıcı API yöntemleri uzak çalışma alanları için desteklenir.

Gereksinimler

Çalışma alanları arasında model kayıt defteri kullanmak için MLflow Python istemcisi, sürüm 1.11.0 veya üzeri gerekir.

Not

Bu iş akışı MLflow istemcisindeki mantıktan uygulanır. İstemciyi çalıştıran ortamın uzak model kayıt defterini içeren Azure Databricks çalışma alanında ağ isteklerinde bulunma erişimi olduğundan emin olun. Kayıt defteri çalışma alanına uygulanan yaygın bir kısıtlama, başka bir çalışma alanındaki bir kümede çalışan MLflow istemcilerinden gelen bağlantılara izin verebilen bir IP izin listesidir.

Uzak kayıt defteri için API belirtecini ayarlama

  1. Model kayıt defteri çalışma alanında bir erişim belirteci oluşturun.
  2. Yerel çalışma alanında erişim belirtecini ve uzak çalışma alanı bilgilerini depolamak için gizli diziler oluşturun:
    1. Gizli dizi kapsamı oluşturun: databricks secrets create-scope <scope>.
    2. Hedef çalışma alanı için burada olarak <prefix>gösterilen benzersiz bir ad seçin. Ardından üç gizli dizi oluşturun:
      • databricks secrets put-secret <scope> <prefix>-host : Model kayıt defteri çalışma alanının ana bilgisayar adını girin. Örneğin, https://westus.azuredatabricks.net/ veya https://adb-5555555555555555.19.azuredatabricks.net/.
      • databricks secrets put-secret <scope> <prefix>-token : Model kayıt defteri çalışma alanından erişim belirtecini girin.
      • databricks secrets put-secret <scope> <prefix>-workspace-id: Herhangi bir sayfanın URL'sinde bulunabilecek model kayıt defteri çalışma alanının çalışma alanı kimliğini girin.

Uzak kayıt defteri belirtme

Uzak kayıt defteri çalışma alanı için oluşturduğunuz gizli dizi kapsamına ve ad ön eklerine bağlı olarak, formun kayıt defteri URI'sini oluşturabilirsiniz:

registry_uri = f'databricks://<scope>:<prefix>'

URI'yi kullanarak ilk çağrıyı yaparak akıcı API yöntemleri için uzak bir kayıt defteri belirtebilirsiniz:

mlflow.set_registry_uri(registry_uri)

İsterseniz, örneğini MlflowClientoluştururken bunu açıkça belirtebilirsiniz:

client = MlflowClient(registry_uri=registry_uri)

Aşağıdaki iş akışları her iki yaklaşımın örneklerini gösterir.

Modeli uzak kayıt defterine kaydetme

Modeli kaydetmenin bir yolu API'yi mlflow.register_model kullanmaktır:

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Diğer model kayıt yöntemlerine yönelik örnekler bu sayfanın sonundaki not defterinde bulunabilir.

Not

Bir modeli uzak çalışma alanına kaydetmek, uzak çalışma alanında DBFS'deki model yapıtlarının geçici bir kopyasını oluşturur. Model sürümü durumunda olduğunda READY bu kopyayı silmek isteyebilirsiniz. Geçici dosyalar klasörün altında /dbfs/databricks/mlflow/tmp-external-source/<run-id> bulunabilir.

Ayrıca, başka bir tracking_uri çalışma alanındaki MLflow İzleme hizmetine işaret etmek için de benzer registry_uribir şekilde belirtebilirsiniz. Bu, uzak çalışma alanında bir çalıştırma gerçekleştirebileceğiniz ve modeli geçerli veya başka bir uzak çalışma alanına kaydedebileceğiniz anlamına gelir.

Uzak kayıt defterinden model kullanma

Önce kayıt defteri URI'sini ayarlayarak yöntemlerle mlflow.<flavor>.load_model uzak kayıt defterine model sürümü yükleyip kullanabilirsiniz:

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Öte yandan, uzak kayıt defterini URI'de models:/ açıkça belirtebilirsiniz:

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Model dosyalarına erişmek için aşağıdakiler gibi diğer yardımcı yöntemler de desteklenir:

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Uzak kayıt defterinde modeli yönetme

Gerekli izinlere sahip olduğunuz sürece uzak kayıt defterindeki modellerde herhangi bir eylem gerçekleştirebilirsiniz. Örneğin, model üzerinde CAN MANAGE izinleriniz varsa, bir model sürümü aşamasına geçiş yapabilir veya yöntemleri kullanarak MlflowClient modeli silebilirsiniz:

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Not defteri örneği: Uzak model kayıt defteri

Aşağıdaki not defteri Unity Kataloğu için etkinleştirilmemiş çalışma alanları için geçerlidir. Modelleri geçerli çalışma alanından MLflow izleme sunucusuna kaydetmeyi ve modelleri farklı bir çalışma alanında Model Kayıt Defteri'ne kaydetmeyi gösterir. Databricks, çalışma alanları arasında modelleri paylaşmak için Unity Kataloğu'ndaki Modellerin kullanılmasını önerir.

Uzak Model Kayıt Defteri örnek not defteri

Not defterini alma