REST kullanarak Azure Machine Learning kaynakları oluşturma, çalıştırma ve silme
Makale
Azure Machine Learning kaynaklarınızı yönetmenin birkaç yolu vardır. Portalı, komut satırı arabirimini veya Python SDK'sını kullanabilirsiniz. Alternatif olarak REST API'yi de seçebilirsiniz. REST API, kaynakları oluşturmak, almak, güncelleştirmek ve silmek için http fiillerini standart bir şekilde kullanır. REST API, HTTP isteğinde bulunabilen herhangi bir dil veya araçla çalışır. REST'in basit yapısı genellikle betik oluşturma ortamlarında ve MLOps otomasyonu için iyi bir seçimdir.
Bu makalede şunları öğreneceksiniz:
Yetkilendirme belirteci alma
Hizmet sorumlusu kimlik doğrulamayı kullanarak düzgün biçimlendirilmiş rest isteği oluşturma
Azure Machine Learning'in hiyerarşik kaynakları hakkında bilgi almak için GET isteklerini kullanma
Kaynakları oluşturmak ve değiştirmek için PUT ve POST isteklerini kullanma
Azure Machine Learning çalışma alanları oluşturmak için PUT isteklerini kullanma
Kaynakları temizlemek için DELETE isteklerini kullanma
Önkoşullar
Yönetici haklarına sahip olduğunuz bir Azure aboneliği. Böyle bir aboneliğiniz yoksa ücretsiz veya ücretli kişisel aboneliği deneyin
Curl yardımcı programı. Curl programı Linux için Windows Alt Sistemi veya herhangi bir UNIX dağıtımında kullanılabilir. PowerShell'de curl, Invoke-WebRequest için bir diğer addır ve curl -d "key=val" -X POST uri olurInvoke-WebRequest -Body "key=val" -Method POST -Uri uri.
Hizmet sorumlusu kimlik doğrulama belirtecini alma
Yönetim REST isteklerinin kimliği OAuth2 örtük akışıyla doğrulanır. Bu kimlik doğrulama akışı, aboneliğinizin hizmet sorumlusu tarafından sağlanan bir belirteci kullanır. Bu belirteci almak için şunları yapmanız gerekir:
Kiracı kimliğiniz (aboneliğinizin ait olduğu kuruluşu tanımlama)
İstemci gizli anahtarınız (bunu korumanız gerekir)
Yanıttan hizmet sorumlunuzun oluşturulmasına kadar bu değerlere sahip olmanız gerekir. Bu değerleri almak için Azure Machine Learning kaynakları ve iş akışları için kimlik doğrulamasını ayarlama konusu ele alınmalıdır. Şirket aboneliğinizi kullanıyorsanız hizmet sorumlusu oluşturma izniniz olmayabilir. Bu durumda, ücretsiz veya ücretli bir kişisel abonelik kullanmanız gerekir.
Belirteç almak için:
Bir terminal penceresi açın
Komut satırına aşağıdaki kodu girin
, <YOUR-CLIENT-ID>ve <YOUR-CLIENT-SECRET>için <YOUR-TENANT-ID>kendi değerlerinizi değiştirin. Bu makale boyunca köşeli ayraçlarla çevrili dizeler, kendi uygun değerlerinizle değiştirmeniz gereken değişkenlerdir.
Yeni bir “kurtarma VM’si” oluşturmak ve sorunlu VM’nin işletim sistemi diskini kurtarma VM’sine veri diski olarak takmak için
Bash
curl -X POST https://login.microsoftonline.com/<YOUR-TENANT-ID>/oauth2/token \
-d "grant_type=client_credentials&resource=https%3A%2F%2Fmanagement.azure.com%2F&client_id=<YOUR-CLIENT-ID>&client_secret=<YOUR-CLIENT-SECRET>" \
Yanıt, bir saat boyunca iyi bir erişim belirteci sağlamalıdır:
Tüm yönetim isteklerinin kimliğini doğrulamak için kullanacağınız belirteci not edin. Bunu yapmak için tüm isteklerde bir Yetkilendirme üst bilgisi ayarlayacaksınız:
Azure genelinde birçok REST API yayımlanır. Her hizmet sağlayıcısı API'sini kendi tempolarında güncelleştirir, ancak mevcut programları bozmadan bunu yapar. Hizmet sağlayıcısı, uyumluluğu sağlamak için bağımsız değişkenini api-version kullanır.
Önemli
Bağımsız api-version değişken hizmetten hizmete değişir. Örneğin Machine Learning Hizmeti için geçerli API sürümü şeklindedir 2023-10-01. Diğer Azure hizmetlerinin en son API sürümünü bulmak için ilgili hizmetin Azure REST API başvurusuna bakın.
Tüm REST çağrıları api-version bağımsız değişkeni beklenen değere ayarlamalıdır. API gelişmeye devam etse bile belirtilen sürümün söz dizimine ve semantiğine güvenebilirsiniz. Bağımsız değişken olmadan api-version bir sağlayıcıya istek gönderirseniz, yanıt desteklenen değerlerin insan tarafından okunabilir bir listesini içerir.
Yukarıdaki çağrı, formun sıkıştırılmış JSON yanıtına neden olur:
Bir kaynak grubundaki çalışma alanı kümesini almak için , ve <YOUR-ACCESS-TOKEN>yerine <YOUR-SUBSCRIPTION-ID><YOUR-RESOURCE-GROUP>aşağıdakileri çalıştırın:
Çalışma alanı içindeki kaynaklarla çalışmak için, genel management.azure.com sunucusundan çalışma alanının konumuna özgü bir REST API sunucusuna geçiş yapacaksınız. Yukarıdaki JSON yanıtında anahtarın değerini discoveryUrl not edin. Bu URL'yi alırsanız aşağıdaki gibi bir yanıt alırsınız:
Yanıtın api değeri, daha fazla istek için kullanacağınız sunucunun URL'sidir. Örneğin, denemeleri listelemek için aşağıdaki komutu gönderin. değerini REGIONAL-API-SERVER yanıtın api değeriyle değiştirin (örneğin, centralus.api.azureml.ms). Ayrıca , , YOUR-RESOURCE-GROUPYOUR-WORKSPACE-NAMEve YOUR-ACCESS-TOKEN öğesini her zamanki gibi değiştirinYOUR-SUBSCRIPTION-ID:
Denemeleri listelemek için yolun history/v1.0 , modelleri listelemek için ise ile modelmanagement/v1.0başladığına dikkat edin. REST API, her biri ayrı bir yola sahip olan birkaç işlem grubuna ayrılır.
Alan
Yol
Artifacts
/rest/api/azureml
Veri depolama alanları
/azure/machine-learning/how-to-access-data
Hiper parametre ayarı
hyperdrive/v1.0/
Modeller
modelmanagement/v1.0/
Çalıştırma geçmişi
execution/v1.0/ ve history/v1.0/
REST API'yi genel desenini kullanarak keşfedebilirsiniz:
çalışma alanları/MyWorkspace/experiments/FirstExperiment/runs/1/
operations-endpoint/
yapıtlar/meta veriler/
PUT ve POST isteklerini kullanarak kaynak oluşturma ve değiştirme
GET fiiliyle kaynak alma işlemine ek olarak, REST API ML çözümlerini eğitmek, dağıtmak ve izlemek için gereken tüm kaynakların oluşturulmasını destekler.
ML modellerini eğitip çalıştırmak için işlem kaynakları gerekir. Bir çalışma alanının işlem kaynaklarını şu şekilde listeleyebilirsiniz:
Adlandırılmış işlem kaynağı oluşturmak veya üzerine yazmak için PUT isteği kullanacaksınız. Aşağıdaki örnekte, , , ve , YOUR-RESOURCE-GROUPdeğerlerinin yerine , , YOUR-WORKSPACE-NAMEve YOUR-ACCESS-TOKENdeğerlerinin artık alışılageldik değiştirmelerine locationYOUR-SUBSCRIPTION-IDek olarak , vmSizevmPriority, ve scaleSettingsdeğerlerini de değiştirebilirsinizYOUR-COMPUTE-NAME. Aşağıdaki komut, 30 dakika sonra ölçeği azaltacak ayrılmış, tek düğümlü bir Standard_D1 (temel CPU işlem kaynağı) oluşturur:
Windows terminallerinde JSON verileri gönderirken çift tırnak simgelerinden kaçış yapmanız gerekebilir. Yani gibi "location" bir metin olur \"location\".
Başarılı bir istek yanıt 201 Created alır, ancak bu yanıtın yalnızca sağlama işleminin başladığı anlamına geldiğini unutmayın. Başarıyla tamamlanmasını onaylamak için yoklamanız (veya portalı kullanmanız) gerekir.
REST kullanarak çalışma alanı oluşturma
Her Azure Machine Learning çalışma alanının diğer dört Azure kaynağına bağımlılığı vardır: Azure Container Registry kaynağı, Azure Key Vault, Azure Uygulaması lication Insights ve bir Azure Depolama hesabı. Bu kaynaklar var olana kadar çalışma alanı oluşturamazsınız. Bu tür her kaynağı oluşturma ayrıntıları için REST API başvurusuna başvurun.
Çalışma alanı oluşturmak için aşağıdakine management.azure.combenzer bir çağrı ekleyin. Bu çağrı çok sayıda değişken ayarlamanızı gerektirse de, yapısal olarak bu makalede ele alınan diğer çağrılarla aynıdır.
Bir yanıt ve döndürülen üst bilgilerde bir Location URI almanız 202 Accepted gerekir. Bağımlı kaynaklarınızdan biriyle ilgili bir sorun varsa (örneğin, kapsayıcı kayıt defterinizde yönetici erişimini etkinleştirmeyi unuttuysanız) yararlı hata ayıklama bilgileri de dahil olmak üzere dağıtımla ilgili bilgiler için bu URI'yi ALABILIRSINIZ.
Kullanıcı tarafından atanan yönetilen kimliği kullanarak çalışma alanı oluşturma
Çalışma alanı oluştururken, ilişkili kaynaklara erişmek için kullanılacak kullanıcı tarafından atanan yönetilen kimliği belirtebilirsiniz: ACR, KeyVault, Depolama ve App Insights. Kullanıcı tarafından atanan yönetilen kimlikle bir çalışma alanı oluşturmak için aşağıdaki istek gövdesini kullanın.
Müşteri tarafından yönetilen şifreleme anahtarlarını kullanarak çalışma alanı oluşturma
Varsayılan olarak, çalışma alanının meta verileri Microsoft'un koruduğu bir Azure Cosmos DB örneğinde depolanır. Bu veriler Microsoft tarafından yönetilen anahtarlar kullanılarak şifrelenir. Microsoft tarafından yönetilen anahtarı kullanmak yerine kendi anahtarınızı da sağlayabilirsiniz. Bunu yaptığınızda Azure aboneliğinizde verilerinizi depolamak için başka bir kaynak kümesi oluşturulur.
Şifreleme için anahtarlarınızı kullanan bir çalışma alanı oluşturmak için aşağıdaki önkoşulları karşılamanız gerekir:
Azure Machine Learning hizmet sorumlusunun Azure aboneliğinize katkıda bulunan erişimi olmalıdır.
Şifreleme anahtarı içeren mevcut bir Azure Key Vault'a sahip olmanız gerekir.
Azure Key Vault, Azure Machine Learning çalışma alanını oluşturacağınız Azure bölgesinde bulunmalıdır.
Azure Key Vault'ta yanlışlıkla silme işlemi olduğunda veri kaybına karşı koruma sağlamak için geçici silme ve temizleme koruması etkinleştirilmelidir.
Azure Key Vault'ta Azure Cosmos DB uygulamasına alma, sarmalama ve kaldırma erişimi veren bir erişim ilkeniz olmalıdır.
Şifreleme için kullanıcı tarafından atanan yönetilen kimliği ve müşteri tarafından yönetilen anahtarları kullanan bir çalışma alanı oluşturmak için aşağıdaki istek gövdesini kullanın. Çalışma alanı için kullanıcı tarafından atanan bir yönetilen kimlik kullanırken, özelliğini yönetilen kimliğin kaynak kimliği olarak da ayarlayın userAssignedIdentity .
Azure Machine Learning çalışma alanı veya çalışma alanı tarafından kullanılan bir kaynak oluştururken aşağıdaki iletilere benzer bir hata alabilirsiniz:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Çoğu kaynak sağlayıcısı otomatik olarak kaydedilir, ancak tümü kaydedilmez. Bu iletiyi alırsanız, bahsedilen sağlayıcıyı kaydetmeniz gerekir.
Aşağıdaki tabloda Azure Machine Learning tarafından gereken kaynak sağlayıcılarının listesi yer alır:
Kaynak sağlayıcısı
Neden gereklidir?
Microsoft.MachineLearningServices
Azure Machine Learning çalışma alanını oluşturma.
Microsoft.Storage
Azure Depolama Hesabı, çalışma alanı için varsayılan depolama alanı olarak kullanılır.
Microsoft.ContainerRegistry
Azure Container Registry, çalışma alanı tarafından Docker görüntüleri oluşturmak için kullanılır.
Microsoft.KeyVault
Azure Key Vault, çalışma alanı tarafından gizli dizileri depolamak için kullanılır.
Microsoft.Notebooks
Azure Machine Learning işlem örneğindeki tümleşik not defterleri.
Azure Machine Learning ile müşteri tarafından yönetilen bir anahtar kullanmayı planlıyorsanız aşağıdaki hizmet sağlayıcılarının kaydedilmesi gerekir:
Kaynak sağlayıcısı
Neden gereklidir?
Microsoft.DocumentDB
Çalışma alanı için meta verileri günlüğe kaydeden Azure CosmosDB örneği.
Microsoft.Search
Azure Search, çalışma alanı için dizin oluşturma özellikleri sağlar.
Azure Machine Learning ile yönetilen bir sanal ağ kullanmayı planlıyorsanız Microsoft.Network kaynak sağlayıcısının kayıtlı olması gerekir. Bu kaynak sağlayıcısı, yönetilen sanal ağ için özel uç noktalar oluştururken çalışma alanı tarafından kullanılır.
Azure Machine Learning çalışma alanınızı farklı bir aboneliğe taşıma veya sahip olan aboneliği yeni bir kiracıya taşıma desteklenmez. Bunu yapmak hatalara neden olabilir.
Azure Container Registry'yi silme
Azure Machine Learning çalışma alanı, bazı işlemler için Azure Container Registry'yi (ACR) kullanır. İlk ihtiyaç duyduğunda otomatik olarak bir ACR örneği oluşturur.
Uyarı
Bir çalışma alanı için Azure Container Registry oluşturulduktan sonra silmeyin. Bunu yaptığınızda Azure Machine Learning çalışma alanınız bozulur.
Sonraki adımlar
Azure Machine Learning REST API başvurusunun tamamını keşfedin.
Python, Azure Machine Learning ve MLflow ile veri alımını ve hazırlığını, model eğitimini ve dağıtımlarını ve makine öğrenmesi çözümü izlemeyi yönetin.
Veri bilimciler ve yapay zeka geliştiricileri, makine öğrenmesi iş akışları oluşturmak ve çalıştırmak için Python için Azure Machine Learning SDK'sını kullanır.