Bu makalede, herhangi bir kesintiye neden olmadan üretimde makine öğrenmesi modelinin yeni bir sürümünü dağıtmayı öğreneceksiniz. Web hizmetinin yeni sürümünü üretime tanıtmak için mavi-yeşil dağıtım stratejisini (güvenli dağıtım stratejisi olarak da bilinir) kullanacaksınız. Bu strateji, web hizmetinin yeni sürümünü tamamen kullanıma sunmadan önce kullanıcıların veya isteklerin küçük bir alt kümesine dağıtmanıza olanak sağlar.
Bu makalede, çevrimiçi (gerçek zamanlı) çıkarım için kullanılan çevrimiçi uç noktaları, yani uç noktaları kullandığınız varsayılır. İki tür çevrimiçi uç nokta vardır: yönetilen çevrimiçi uç noktalar ve Kubernetes çevrimiçi uç noktaları. Uç noktalar ve yönetilen çevrimiçi uç noktalar ile Kubernetes çevrimiçi uç noktaları arasındaki farklar hakkında daha fazla bilgi için bkz . Azure Machine Learning uç noktaları nedir?.
Bu makaledeki ana örnek, dağıtım için yönetilen çevrimiçi uç noktaları kullanır. Bunun yerine Kubernetes uç noktalarını kullanmak için, bu belgedeki yönetilen çevrimiçi uç nokta tartışmasıyla satır içi notlara bakın.
Bu makalede şunları öğreneceksiniz:
Bir modelin 1. sürümüne hizmet vermek için "mavi" adlı bir dağıtımla çevrimiçi uç nokta tanımlama
Daha fazla isteği işleyebilmesi için mavi dağıtımı ölçeklendirin
Modelin sürüm 2'sini ("yeşil" dağıtım olarak adlandırılır) uç noktaya dağıtın, ancak dağıtımı canlı trafik olmadan gönderin
Yeşil dağıtımı yalıtarak test edin
Canlı trafiğin yüzdesini doğrulamak için yeşil dağıtıma yansıtma
Yeşil dağıtıma canlı trafiğin küçük bir yüzdesini gönderme
Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için sahip veya katkıda bulunan rolü ya da izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*özel bir rol atanmalıdır. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
(İsteğe bağlı) Yerel olarak dağıtmak için Docker Engine'i yerel bilgisayarınıza yüklemeniz gerekir. Sorunlarda hata ayıklamak daha kolay olması için bu seçeneği kesinlikle öneririz .
Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için sahip veya katkıda bulunan rolü ya da izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*özel bir rol atanmalıdır. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
(İsteğe bağlı) Yerel olarak dağıtmak için Docker Engine'i yerel bilgisayarınıza yüklemeniz gerekir. Sorunlarda hata ayıklamak daha kolay olması için bu seçeneği kesinlikle öneririz .
Bu makaledeki adımları takip etmeden önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:
Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
Azure Machine Learning çalışma alanı ve işlem örneği. Bunlara sahip değilseniz, bunları oluşturmak için Hızlı Başlangıç: Çalışma alanı kaynakları oluşturma makalesindeki adımları kullanın.
Azure Machine Learning’deki işlemlere erişim vermek için Azure rol tabanlı erişim denetimleri (Azure RBAC) kullanılır. Bu makaledeki adımları gerçekleştirmek için kullanıcı hesabınıza Azure Machine Learning çalışma alanı için sahip veya katkıda bulunan rolü ya da izin veren Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*özel bir rol atanmalıdır. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.
Azure CLI için varsayılan ayarları henüz ayarlamadıysanız varsayılan ayarlarınızı kaydedin. Aboneliğinizin, çalışma alanınızın ve kaynak grubunuzun değerlerinin birden çok kez geçirilmesini önlemek için şu kodu çalıştırın:
az account set --subscription <subscription id>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Örnek deposunu kopyalama
Bu makaleyi takip etmek için önce örnek deposunu (azureml-examples) kopyalayın. Ardından deponun cli/ dizinine gidin:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
İpucu
Depoya yalnızca en son işlemeyi kopyalamak için kullanın --depth 1 . Bu işlem, işlemin tamamlanması için gereken süreyi azaltır.
Bu öğreticideki komutlar dizindeki dosyada deploy-safe-rollout-online-endpoints.shcli ve YAML yapılandırma dosyaları alt dizindedir endpoints/online/managed/sample/ .
Not
Kubernetes çevrimiçi uç noktaları için YAML yapılandırma dosyaları alt dizindedir endpoints/online/kubernetes/ .
Örnek deposunu kopyalama
Eğitim örneklerini çalıştırmak için önce örnek deposunu (azureml-examples) kopyalayın. Ardından dizinine azureml-examples/sdk/python/endpoints/online/managed gidin:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
İpucu
Depoya yalnızca en son işlemeyi kopyalamak için kullanın --depth 1 . Bu işlem, işlemin tamamlanması için gereken süreyi azaltır.
Bu makaledeki bilgiler online-endpoints-safe-rollout.ipynb not defterini temel alır. Kodların sırası biraz farklı olsa da, bu makaleyle aynı içeriği içerir.
Not
Kubernetes çevrimiçi uç noktası için adımlar kubernetes-online-endpoints-safe-rollout.ipynb not defterini temel alır.
Azure Machine Learning çalışma alanına Bağlan
Çalışma alanı , Azure Machine Learning'in en üst düzey kaynağıdır ve Azure Machine Learning'i kullanırken oluşturduğunuz tüm yapıtlarla çalışmak için merkezi bir yer sağlar. Bu bölümde, dağıtım görevlerini gerçekleştireceğiniz çalışma alanına bağlanacağız. Takip etmek için not defterinizi online-endpoints-safe-rollout.ipynb açın.
Gerekli kitaplıkları içeri aktarın:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Çalışma alanı ayrıntılarını yapılandırın ve çalışma alanına bir tanıtıcı alın:
Bir çalışma alanına bağlanmak için tanımlayıcı parametrelerine (abonelik, kaynak grubu ve çalışma alanı adı) ihtiyacımız vardır. Gerekli Azure Machine Learning çalışma alanına yönelik bir tanıtıcı elde etmek için içindeki bu ayrıntıları MLClientazure.ai.ml kullanacağız. Bu örnek varsayılan Azure kimlik doğrulamasını kullanır.
# enter details of your AML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Yerel makinenizde Git yüklüyse örnek deposunu kopyalamak için yönergeleri izleyebilirsiniz. Aksi takdirde, örnek deposundaki dosyaları indirmek için yönergeleri izleyin.
Örnek deposunu kopyalama
Bu makaleyi takip etmek için önce örnek deposunu (azureml-examples) kopyalayın ve ardından dizinine azureml-examples/cli/endpoints/online/model-1 geçin.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
İpucu
Yalnızca en son işlemeyi depoya kopyalamak için kullanın --depth 1 ; bu işlem tamamlanma süresini kısaltılır.
Örnek deposundan dosya indirme
Örnek depoyu kopyaladıysanız, yerel makinenizde bu örnekteki dosyaların kopyaları zaten vardır ve sonraki bölüme atlayabilirsiniz. Depoyu kopyalamadıysanız yerel makinenize indirebilirsiniz.
<> Sayfadaki Kod düğmesine gidin ve Yerel sekmesinden ZIP İndir'i seçin.
İlk model-1model için model klasörünü /cli/endpoints/online/model-1/model ve puanlama betiğini /cli/endpoints/online/model-1/onlinescoring/score.py bulun.
İkinci model-2bir model için model klasörünü /cli/endpoints/online/model-2/model ve puanlama betiğini /cli/endpoints/online/model-2/onlinescoring/score.py bulun.
Uç noktayı ve dağıtımı tanımlama
Çevrimiçi uç noktalar çevrimiçi (gerçek zamanlı) çıkarım için kullanılır. Çevrimiçi uç noktalar, istemcilerden veri almaya ve yanıtları gerçek zamanlı olarak geri göndermeye hazır dağıtımlar içerir.
Uç nokta tanımlama
Aşağıdaki tabloda, bir uç nokta tanımladığınızda belirtilmesi gereken temel öznitelikler listelemektedir.
Öznitelik
Tanım
Ad
Gerekli. Uç noktanın adı. Azure bölgesinde benzersiz olmalıdır. Adlandırma kuralları hakkında daha fazla bilgi için bkz . uç nokta sınırları.
Kimlik doğrulaması modu
Uç nokta için kimlik doğrulama yöntemi. Anahtar tabanlı kimlik doğrulaması key ile Azure Machine Learning belirteç tabanlı kimlik doğrulaması aml_tokenarasında seçim yapın. Anahtarın süresi dolmaz, ancak belirtecin süresi dolmaz. Kimlik doğrulaması hakkında daha fazla bilgi için bkz . Çevrimiçi uç noktada kimlik doğrulaması yapma.
Açıklama
Uç noktanın açıklaması.
Etiketler
Uç nokta için etiket sözlüğü.
Trafik
Dağıtımlar arasında trafiği yönlendirme kuralları. Trafiği anahtar-değer çiftlerinin sözlüğü olarak temsil eder; burada anahtar dağıtım adını, değer ise söz dizimine gelen trafiğin yüzdesini temsil eder. Trafiği yalnızca bir uç noktanın altındaki dağıtımlar oluşturulduğunda ayarlayabilirsiniz. Dağıtımlar oluşturulduktan sonra çevrimiçi uç nokta trafiğini de güncelleştirebilirsiniz. Yansıtılmış trafiği kullanma hakkında daha fazla bilgi için bkz . Yeni dağıtıma canlı trafiğin küçük bir yüzdesini ayırma.
Yansıtma trafiği
Dağıtıma yansıtılan canlı trafiğin yüzdesi. Yansıtılmış trafiği kullanma hakkında daha fazla bilgi için bkz . Dağıtımı yansıtılmış trafikle test etme.
Dağıtım, gerçek çıkarım yapan modeli barındırmak için gereken bir kaynak kümesidir. Aşağıdaki tabloda, bir dağıtım tanımladığınızda belirtilmesi gereken temel öznitelikler açıklanmaktadır.
Dağıtım için kullanılacak model. Bu değer, çalışma alanında var olan bir sürüme sahip modelin başvurusu veya satır içi model belirtimi olabilir. Örnekte regresyona neden olan bir scikit-learn modelimiz vardır.
Kod yolu
Modeli puanlama için tüm Python kaynak kodunu içeren yerel geliştirme ortamında dizinin yolu. İç içe dizinleri ve paketleri kullanabilirsiniz.
Puanlama betiği
Belirli bir giriş isteğinde modeli yürüten Python kodu. Bu değer, kaynak kod dizinindeki puanlama dosyasının göreli yolu olabilir. Puanlama betiği dağıtılan bir web hizmetine gönderilen verileri alır ve modele geçirir. Betik daha sonra modeli yürütür ve istemciye yanıtını döndürür. Puanlama betiği modelinize özgüdür ve modelin giriş olarak beklediği ve çıkış olarak döndürdüğü verileri anlaması gerekir. Bu örnekte score.py bir dosyamız vardır. Bu Python kodunun bir init() işlevi ve bir run() işlevi olmalıdır. İşlev, init() model oluşturulduktan veya güncelleştirildikten sonra çağrılır (örneğin, modeli bellekte önbelleğe almak için kullanabilirsiniz). İşlev run() , gerçek puanlama ve tahmin gerçekleştirmek için uç noktanın her çağrısında çağrılır.
Ortam
Gerekli. Modeli ve kodu barındıracak ortam. Bu değer, çalışma alanında var olan bir sürüme sahip ortama başvuru veya satır içi ortam belirtimi olabilir. Ortam, Conda bağımlılıklarına sahip bir Docker görüntüsü, dockerfile veya kayıtlı bir ortam olabilir.
Gerekli. Dağıtım için kullanılacak örnek sayısı. Değeri beklediğiniz iş yüküne dayandırın. Yüksek kullanılabilirlik için değerini en az 3olarak ayarlamanızı öneririz. Yükseltmeleri gerçekleştirmek için fazladan %20 ayırıyoruz. Daha fazla bilgi için bkz . Çevrimiçi uç noktaların sınırları.
Önce uç noktanın adını ayarlayın ve ardından yapılandırın. Bu makalede uç noktayı yapılandırmak için endpoints/online/managed/sample/endpoint.yml dosyasını kullanacaksınız. Aşağıdaki kod parçacığı dosyanın içeriğini gösterir:
Uç nokta YAML biçimi başvurusu aşağıdaki tabloda açıklanmıştır. Bu özniteliklerin nasıl belirtileceğini öğrenmek için çevrimiçi uç nokta YAML başvurusuna bakın. Yönetilen çevrimiçi uç noktalarla ilgili sınırlar hakkında bilgi için bkz . Çevrimiçi uç noktaların sınırları.
Tuş
Açıklama
$schema
(İsteğe bağlı) YAML şeması. YAML dosyasındaki tüm kullanılabilir seçenekleri görmek için, şemayı bir tarayıcıdaki önceki kod parçacığında görüntüleyebilirsiniz.
name
Uç noktanın adı.
auth_mode
Anahtar tabanlı kimlik doğrulaması için kullanın key . Azure Machine Learning belirteç tabanlı kimlik doğrulaması için kullanın aml_token . En son belirteci almak için komutunu kullanın az ml online-endpoint get-credentials .
Çevrimiçi uç nokta oluşturmak için:
Uç nokta adınızı ayarlayın:
Unix için şu komutu çalıştırın (değerini benzersiz bir adla değiştirin YOUR_ENDPOINT_NAME ):
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Önemli
Uç nokta adları bir Azure bölgesinde benzersiz olmalıdır. Örneğin, Azure westus2 bölgesinde adıyla my-endpointyalnızca bir uç nokta olabilir.
Uç noktayı bulutta oluşturun:
Uç noktayı yapılandırmak üzere dosyasını kullanmak endpoint.yml için aşağıdaki kodu çalıştırın:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
'mavi' dağıtımı oluşturma
Bu makalede dağıtımın önemli yönlerini yapılandırmak için endpoints/online/managed/sample/blue-deployment.yml dosyasını kullanacaksınız. Aşağıdaki kod parçacığı dosyanın içeriğini gösterir:
Uç noktanız için adlı blue bir dağıtım oluşturmak üzere aşağıdaki komutu çalıştırarak blue-deployment.yml dosyasını kullanarak
az ml online-deployment create --name blue --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Önemli
--all-traffic içindeki az ml online-deployment create bayrağı uç nokta trafiğinin %100'unu yeni oluşturulan mavi dağıtıma ayırır.
Dosyada blue-deployment.yaml , satır içi (dosyaların karşıya yüklendiği yer) belirteceğiz path . CLI dosyaları otomatik olarak karşıya yükler ve modeli ve ortamı kaydeder. Üretim için en iyi yöntem olarak, modeli ve ortamı kaydetmeli ve kayıtlı adı ve sürümü YAML'de ayrı olarak belirtmelisiniz. veya environment: azureml:my-env:1formunu model: azureml:my-model:1 kullanın.
Kayıt için ve'nin modelenvironment YAML tanımlarını ayrı YAML dosyalarına ayıklayabilir ve ve az ml environment createkomutlarını az ml model create kullanabilirsiniz. Bu komutlar hakkında daha fazla bilgi edinmek için ve az ml environment create -hkomutunu çalıştırınaz ml model create -h.
Modelinizi varlık olarak kaydetme hakkında daha fazla bilgi için bkz . CLI kullanarak modelinizi Machine Learning'de varlık olarak kaydetme. Ortam oluşturma hakkında daha fazla bilgi için bkz . CLI ve SDK (v2) ile Azure Machine Learning ortamlarını yönetme.
Çevrimiçi uç nokta oluşturma
Yönetilen çevrimiçi uç nokta oluşturmak için sınıfını ManagedOnlineEndpoint kullanın. Bu sınıf, kullanıcıların uç noktanın önemli yönlerini yapılandırmasına olanak tanır.
Uç noktayı yapılandırın:
# Creating a unique endpoint name with current datetime to avoid conflicts
import random
online_endpoint_name = "endpt-moe-" + str(random.randint(0, 10000))
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
tags={"foo": "bar"},
)
Not
Kubernetes çevrimiçi uç noktası oluşturmak için sınıfını KubernetesOnlineEndpoint kullanın.
Yönetilen çevrimiçi uç noktanız için dağıtım oluşturmak için sınıfını ManagedOnlineDeployment kullanın. Bu sınıf, kullanıcıların dağıtımın temel yönlerini yapılandırmasına olanak tanır.
Aşağıdaki tabloda, bir deploymentözniteliğinin öznitelikleri açıklanmaktadır:
Bu örnekte, satır içi (dosyaların karşıya yüklendiği yer) belirteceğiz path . SDK, dosyaları otomatik olarak karşıya yükler ve modeli ve ortamı kaydeder. Üretim için en iyi yöntem olarak, modeli ve ortamı kaydetmeli ve kayıtlı adı ve sürümü kodlarda ayrı olarak belirtmelisiniz.
Modelinizi varlık olarak kaydetme hakkında daha fazla bilgi için bkz . SDK'yı kullanarak modelinizi Machine Learning'de varlık olarak kaydetme.
Ortam oluşturma hakkında daha fazla bilgi için bkz . CLI ve SDK (v2) ile Azure Machine Learning ortamlarını yönetme.
Not
Kubernetes çevrimiçi uç noktası için dağıtım oluşturmak için sınıfını KubernetesOnlineDeployment kullanın.
Azure Machine Learning stüdyosu yönetilen bir çevrimiçi uç nokta oluşturduğunuzda, uç nokta için bir ilk dağıtım tanımlamanız gerekir. Dağıtım tanımlayabilmeniz için önce çalışma alanınızda kayıtlı bir model olması gerekir. Dağıtım için kullanılacak modeli kaydederek başlayalım.
Modelinizi kaydetme
Model kaydı, çalışma alanındaki mantıksal bir varlıktır. Bu varlık tek bir model dosyası veya birden çok dosyadan oluşan bir dizin içerebilir. Üretim için en iyi uygulama olarak modeli ve ortamı kaydetmeniz gerekir. Bu makalede uç noktayı ve dağıtımı oluştururken, modeli içeren model klasörünü kaydettiğinizi varsayacağız.
\azureml-examples\cli\endpoints\online\model-1\model Daha önce kopyaladığınız veya indirdiğiniz deponun yerel kopyasından klasörü seçin. İstendiğinde Karşıya Yükle'yi seçin ve karşıya yüklemenin tamamlanmasını bekleyin.
Klasör karşıya yükleme tamamlandıktan sonra İleri'yi seçin.
Model için kolay bir Ad girin. Bu makaledeki adımlarda modelin adı olduğu model-1varsayılır.
kaydı tamamlamak için İleri'yi ve ardından Kaydet'i seçin.
Önceki adımları tekrarlayarak daha önce kopyaladığınız veya indirdiğiniz deponun yerel kopyasındaki klasörden bir model-2\azureml-examples\cli\endpoints\online\model-2\model kaydedin.
Stüdyoda ortam oluşturma hakkında bilgi için bkz . Ortam oluşturma.
Yönetilen çevrimiçi uç nokta ve 'mavi' dağıtım oluşturma
Doğrudan tarayıcınızda yönetilen bir çevrimiçi uç nokta oluşturmak için Azure Machine Learning stüdyosu kullanın. Stüdyoda yönetilen bir çevrimiçi uç nokta oluşturduğunuzda, ilk dağıtımı tanımlamanız gerekir. Boş bir yönetilen çevrimiçi uç nokta oluşturamazsınız.
Stüdyoda yönetilen çevrimiçi uç nokta oluşturmanın bir yolu Modeller sayfasındandır. Bu yöntem ayrıca mevcut yönetilen çevrimiçi dağıtıma model eklemenin kolay bir yolunu sağlar. Modelinizi kaydetme bölümünde daha önce kaydettiğiniz adlı model-1 modeli dağıtmak için:
Adının yanındaki daireyi denetleyerek adlı model-1 modeli seçin.
Gerçek zamanlı uç noktayı dağıt'ı>seçin.
Bu eylem, uç noktanızla ilgili ayrıntıları belirtebileceğiniz bir pencere açar.
Bir Uç nokta adı girin.
Varsayılan seçimleri koruyun: İşlem türü için yönetilen ve kimlik doğrulama türü için anahtar tabanlı kimlik doğrulaması .
"Dağıtım" sayfasına gelene kadar İleri'yi seçin. Burada aşağıdaki görevleri gerçekleştirin:
Dağıtımı "mavi" olarak adlandırın.
Daha sonra stüdyoda uç noktanızın etkinliklerinin grafiklerini görüntülemenizi sağlamak için Uygulama Analizler tanılama ve veri toplamayı etkinleştir kutusunu işaretleyin.
"Ortam" sayfasına gitmek için İleri'yi seçin. Burada aşağıdaki adımları gerçekleştirin:
"Puanlama dosyası ve bağımlılıkları seçin" kutusunda, daha önce kopyaladığınız veya indirdiğiniz depodan dosyaya göz atın ve dosyayı seçin \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py .
Ortam listesinin üzerindeki arama kutusuna yazmaya sklearn başlayın ve AzureML-sklearn-0.24 seçilmiş ortamını seçin.
"İşlem" sayfasına gitmek için İleri'yi seçin. Burada, "Standard_DS3_v2" sanal makinesi için varsayılan seçimi koruyun ve Örnek sayısını 1 olarak değiştirin.
Mavi dağıtıma varsayılan trafik ayırmasını (%100) kabul etmek için İleri'yi seçin.
Dağıtım ayarlarınızı gözden geçirin ve Oluştur düğmesini seçin.
Alternatif olarak, stüdyodaki Uç Noktalar sayfasından yönetilen bir çevrimiçi uç nokta oluşturabilirsiniz.
Sol gezinti çubuğunda Uç Noktalar sayfasını seçin.
+Oluştur'u seçin.
Bu eylem, uç noktanız ve dağıtımınız hakkındaki ayrıntıları belirtmeniz için bir pencere açar. 5-11 arası önceki adımlarda açıklandığı gibi uç noktanızın ve dağıtımınızın ayarlarını girin ve dağıtımı oluşturmanız istenene kadar varsayılanları kabul edin.
Mevcut dağıtımınızı onaylayın
Mevcut dağıtımınızı doğrulamanın bir yolu, belirli bir giriş isteği için modelinizi puanlandırmak üzere uç noktanızı çağırmaktır. Uç noktanızı CLI veya Python SDK aracılığıyla çağırdığınızda, gelen trafiği alacak dağıtımın adını belirtmeyi seçebilirsiniz.
Not
CLI veya Python SDK'sının aksine Azure Machine Learning stüdyosu, uç noktayı çağırdığınızda bir dağıtım belirtmenizi gerektirir.
Dağıtım adıyla uç noktayı çağırma
Uç noktayı trafik alacak dağıtımın adıyla çağırırsanız Azure Machine Learning uç noktanın trafiğini doğrudan belirtilen dağıtıma yönlendirir ve çıkışını döndürür. CLI v2 seçeneğini veya deployment_name dağıtımı belirtmek için SDK v2 seçeneğini kullanabilirsiniz--deployment-name.
Trafik denetimi ayarları, uç noktadaki her dağıtıma belirtilen gelen trafik yüzdelerini ayırır. Örneğin trafik kurallarınız uç noktanızdaki belirli bir dağıtımın gelen trafiği %40 oranında alacağını belirtirse, Azure Machine Learning uç nokta trafiğinin %40'ını bu dağıtıma yönlendirir.
Daha önce oluşturulan öğesini MLClient kullanarak uç noktaya bir tanıtıcı alacağız. Uç nokta aşağıdaki parametrelerle invoke komutu kullanılarak çağrılabilir:
endpoint_name - Uç noktanın adı
request_file - İstek verilerini içeren dosya
deployment_name - Bir uç noktada test etmek için belirli dağıtımın adı
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Yönetilen çevrimiçi uç noktaları görüntüleme
Tüm yönetilen çevrimiçi uç noktalarınızı Uç Noktalar sayfasında görüntüleyebilirsiniz. Uç nokta URI'si , durum, test araçları, etkinlik izleyicileri, dağıtım günlükleri ve örnek tüketim kodu gibi kritik bilgileri bulmak için uç noktanın Ayrıntılar sayfasına gidin:
Sol gezinti çubuğunda Uç Noktalar'ı seçin. Burada, çalışma alanında tüm uç noktaların listesini görebilirsiniz.
(İsteğe bağlı) Yalnızca Yönetilen işlem türlerini göstermek için İşlem türünde filtre oluşturma.
Uç noktanın Ayrıntılar sayfasını görüntülemek için bir uç nokta adı seçin.
Uç noktayı örnek verilerle test edin
Yönetilen çevrimiçi dağıtımınızı test etmek için uç noktanın ayrıntılar sayfasındaki Test sekmesini kullanın. Örnek girişi girin ve sonuçları görüntüleyin.
Uç noktanın ayrıntı sayfasında Test sekmesini seçin. Açılan menüde mavi dağıtım zaten seçilidir.
az ml online-deployment update --name blue --endpoint-name $ENDPOINT_NAME --set instance_count=2
Not
Yukarıdaki komutta dağıtım yapılandırmasını geçersiz kılmak için kullandığımıza --set dikkat edin. Alternatif olarak yaml dosyasını güncelleştirebilir ve girişi kullanarak --file komutuna update giriş olarak geçirebilirsiniz.
Daha önce oluşturulan öğesini MLClient kullanarak dağıtım için bir tanıtıcı alacağız. Dağıtım, artırılarak veya küçültülerek instance_countölçeklendirilebilir.
# Get the details for online endpoint
endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)
# existing traffic details
print(endpoint.traffic)
# Get the scoring URI
print(endpoint.scoring_uri)
Örnek sayısını ayarlayarak dağıtımın ölçeğini büyütmek veya küçültmek için aşağıdaki yönergeleri kullanın:
Uç nokta Ayrıntıları sayfasında. Mavi dağıtımın kartını bulun.
Mavi dağıtımın kartının üst bilgisindeki düzenle simgesini seçin.
Örnek sayısını 2 olarak değiştirin.
Güncelleştir'i seçin.
Yeni bir model dağıtın, ancak henüz trafik göndermeyin
az ml online-deployment create --name green --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/green-deployment.yml
'a açıkça herhangi bir trafik ayırmadığımız için green, buna ayrılmış sıfır trafik var. Komutunu kullanarak bunu doğrulayabilirsiniz:
az ml online-endpoint show -n $ENDPOINT_NAME --query traffic
Yeni dağıtımı test edin
Trafiğin %0'ı ayrılmış olsa green da, adı belirterek --deployment doğrudan çağırabilirsiniz:
az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment-name green --request-file endpoints/online/model-2/sample-request.json
Trafik kurallarından geçmeden dağıtımı doğrudan çağırmak için bir REST istemcisi kullanmak istiyorsanız, aşağıdaki HTTP üst bilgisini ayarlayın: azureml-model-deployment: <deployment-name>. Aşağıdaki kod parçacığı, dağıtımı doğrudan çağırmak için kullanır curl . Kod parçacığı Unix/WSL ortamlarında çalışmalıdır:
# get the scoring uri
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
# use curl to invoke the endpoint
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --header "azureml-model-deployment: green" --data @endpoints/online/model-2/sample-request.json
Yönetilen çevrimiçi uç noktanız için yeni bir dağıtım oluşturun ve dağıtımı greenadlandırın:
# use MLClient to create green deployment
ml_client.online_deployments.begin_create_or_update(green_deployment).result()
Not
Kubernetes çevrimiçi uç noktası için dağıtım oluşturuyorsanız sınıfını KubernetesOnlineDeployment kullanın ve Kubernetes kümenizde bir Kubernetes örnek türü belirtin.
Yeni dağıtımı test edin
Trafiğin %0'ını ayırmış olsa green da json dosyasıyla uç noktayı ve dağıtımı çağırabilirsiniz.
Yönetilen çevrimiçi uç noktanıza eklemek için yeni bir dağıtım oluşturun ve dağıtımı greenadlandırın.
Uç nokta ayrıntıları sayfasından
Uç nokta "Ayrıntılar" sayfasında + Dağıtım Ekle düğmesini seçin.
Model dağıt'ı seçin.
İleri'yi seçerek "Model" sayfasına gidin ve model-2 modelini seçin.
İleri'yi seçerek "Dağıtım" sayfasına gidin ve aşağıdaki görevleri gerçekleştirin:
Dağıtımı "yeşil" olarak adlandırın.
Uygulama içgörüleri tanılamasını ve veri toplamayı etkinleştirin.
"Ortam" sayfasına gitmek için İleri'yi seçin. Burada aşağıdaki adımları gerçekleştirin:
"Puanlama dosyası ve bağımlılıkları seçin" kutusunda, daha önce kopyaladığınız veya indirdiğiniz depodan dosyaya göz atın ve dosyayı seçin \azureml-examples\cli\endpoints\online\model-2\onlinescoring\score.py .
Ortam listesinin üzerindeki arama kutusuna yazmaya sklearn başlayın ve AzureML-sklearn-0.24 seçilmiş ortamını seçin.
"İşlem" sayfasına gitmek için İleri'yi seçin. Burada, "Standard_DS3_v2" sanal makinesi için varsayılan seçimi koruyun ve Örnek sayısını 1 olarak değiştirin.
"Trafik" sayfasına gitmek için İleri'yi seçin. Burada, dağıtımlara varsayılan trafik ayırmayı (%100 trafik "mavi" ve %0 trafik "yeşil") tutun.
Dağıtım ayarlarınızı gözden geçirmek için İleri'yi seçin.
Dağıtımı oluşturmak için Oluştur'u seçin.
Alternatif olarak, dağıtım eklemek için Modeller sayfasını kullanabilirsiniz:
Sol gezinti çubuğunda Modeller sayfasını seçin.
Model adının yanındaki daireyi denetleyerek bir model seçin.
Gerçek zamanlı uç noktayı dağıt'ı>seçin.
Mevcut yönetilen çevrimiçi uç noktaya dağıtmayı seçin.
Yeşil dağıtımı oluşturmayı tamamlamak için önceki 3- 9 adımlarını izleyin.
Not
Uç noktaya yeni bir dağıtım eklerken, "Trafik" sayfasında dağıtımlar arasındaki trafik dengesini ayarlayabilirsiniz. Ancak bu noktada, dağıtımlara varsayılan trafik ayırmayı ("maviye" %100 trafik ve "yeşile" %0 trafik) tutmanız gerekir.
Yeni dağıtımı test edin
Trafiğin %0'ını ayırmış olsa green da uç noktayı ve dağıtımı çağırabilirsiniz. Yönetilen çevrimiçi dağıtımınızı test etmek için uç noktanın ayrıntılar sayfasındaki Test sekmesini kullanın. Örnek girişi girin ve sonuçları görüntüleyin.
Uç noktanın ayrıntı sayfasında Test sekmesini seçin.
Dağıtımınızı green test ettikten sonra canlı trafiğin bir yüzdesini buna yansıtabilir (veya kopyalayabilirsiniz). Trafik yansıtma (gölgelendirme olarak da adlandırılır) istemcilere döndürülen sonuçları değiştirmez; istekler dağıtıma %100 akmaya blue devam eder. İstemcilerinizi etkilemeden ölçümleri ve günlüğe kaydetmeyi toplamak için trafiğin green yansıtılmış yüzdesi kopyalanır ve dağıtıma gönderilir. Yansıtma, istemcileri etkilemeden yeni bir dağıtımı doğrulamak istediğinizde kullanışlıdır. Örneğin, gecikme süresinin kabul edilebilir sınırlar içinde olup olmadığını denetlemek veya HTTP hatası olup olmadığını denetlemek için yansıtmayı kullanabilirsiniz. Yeni dağıtımı trafik yansıtma/gölgelendirme ile test etme, gölge testi olarak da bilinir. Yansıtılmış trafiği alan dağıtım (bu örnekte, green dağıtım) gölge dağıtım olarak da adlandırılabilir.
Yansıtma aşağıdaki sınırlamalara sahiptir:
Yansıtma, CLI (v2) (sürüm 2.4.0 veya üzeri) ve Python SDK 'sı (v2) (sürüm 1.0.0 veya üzeri) için desteklenir. Bir uç noktayı güncelleştirmek için CLI/SDK'nın eski bir sürümünü kullanırsanız yansıtma trafiği ayarını kaybedersiniz.
Kubernetes çevrimiçi uç noktaları için yansıtma şu anda desteklenmemektedir.
Trafiği bir uç noktadaki tek bir dağıtıma yansıtabilirsiniz.
Yansıtabileceğiniz maksimum trafik yüzdesi %50'dir. Bu sınır, uç nokta bant genişliği kotanızdaki (varsayılan 5 MBPS) etkiyi azaltmaktır; ayrılan kotayı aşarsanız uç nokta bant genişliğiniz kısıtlanır. Bant genişliği azaltmayı izleme hakkında bilgi için bkz . Yönetilen çevrimiçi uç noktaları izleme.
Ayrıca aşağıdaki davranışlara da dikkat edin:
Bir dağıtım, her ikisini birden değil yalnızca canlı veya yansıtılmış trafiği alacak şekilde yapılandırılabilir.
Bir uç noktayı çağırdığınızda, tahmin döndürmek için dağıtımlarından herhangi birinin adını (gölge dağıtım bile) belirtebilirsiniz.
Gelen trafiği alacak dağıtımın adıyla bir uç nokta çağırdığınızda Azure Machine Learning trafiği gölge dağıtıma yansıtmaz. Azure Machine Learning, bir dağıtım belirtmediğinizde uç noktaya gönderilen trafikten gelen trafiği gölge dağıtıma yansıtır.
Şimdi yeşil dağıtımı yansıtılmış trafiğin %10'unu alacak şekilde ayarlayalım. İstemciler yine de yalnızca mavi dağıtımdan tahminler alır.
Gelen trafiği alacak bir dağıtım belirtmeden uç noktayı birkaç kez çağırarak yansıtma trafiğini test edebilirsiniz:
# You can test mirror traffic by invoking the endpoint several times
for i in range(20):
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
request_file="../model-1/sample-request.json",
)
Dağıtımdaki günlükleri görerek trafiğin belirli bir yüzdesinin green dağıtıma gönderildiğini onaylayabilirsiniz:
"Dağıtım adı" açılan menüsünde yeşil dağıtımı seçin.
Varsayılan trafik ayırmasını %10 tutun.
Güncelleştir'i seçin.
Uç nokta ayrıntıları sayfasında artık dağıtıma %10'unun yansıtılmış trafik ayırması green gösterilir.
Yansıtılmış trafiği test etmek için uç noktayı birkaç kez çağırmak için Azure CLI veya Python sekmelerine bakın. Dağıtımdaki günlükleri görerek trafiğin belirli bir yüzdesinin dağıtıma gönderildiğini green onaylayın. Dağıtım günlüklerine uç noktanın Dağıtım günlükleri sekmesinden erişebilirsiniz. Yansıtılan trafiğin performansını izlemek için Ölçümler ve Günlükler'i de kullanabilirsiniz. Daha fazla bilgi için bkz . Çevrimiçi uç noktaları izleme.
Test ettikten sonra yansıtmayı devre dışı bırakabilirsiniz:
Uç nokta Ayrıntıları sayfasında Trafiği güncelleştir'i seçin.
Yansıtılmış trafiği devre dışı bırakmak için Yansıtılmış trafiği etkinleştir'in yanındaki düğmeyi yeniden kaydırın.
Güncelleştir'i seçin.
Yeni dağıtıma canlı trafiğin küçük bir yüzdesini ayırma
Dağıtımınızdan green tam olarak memnun olduktan sonra tüm trafiği buna geçin.
Uç nokta Ayrıntıları sayfasında Trafiği güncelleştir'i seçin.
Yeşil dağıtıma %100 ve mavi dağıtıma %0 ayırarak dağıtım trafiğini ayarlayın.
Güncelleştir'i seçin.
Eski dağıtımı kaldırma
Yönetilen çevrimiçi uç noktadan tek bir dağıtımı silmek için aşağıdaki adımları kullanın. Tek bir dağıtımın silinmesi, yönetilen çevrimiçi uç noktadaki diğer dağıtımları etkiler: