Makine öğrenmesi modelini yeniden eğitme ve dağıtma

UYGULANDI:Şunlar için geçerlidir.Machine Learning Studio (klasik) için geçerli değildir.Azure Machine Learning

Önemli

Machine Learning Stüdyosu (klasik) desteği 31 Ağustos 2024'te sona erecektir. Bu tarihe kadar Azure Machine Learning'e geçmenizi öneririz.

1 Aralık 2021'den başlayarak artık yeni Machine Learning Stüdyosu (klasik) kaynakları oluşturamayacaksınız. 31 Ağustos 2024'e kadar mevcut Machine Learning Stüdyosu (klasik) kaynaklarını kullanmaya devam edebilirsiniz.

ML Stüdyosu (klasik) belgeleri kullanımdan kaldırılacak ve gelecekte güncelleştirilmeyecektir.

Yeniden eğitme, makine öğrenmesi modellerinin doğru kalmasını ve en uygun verilere dayalı olmasını sağlamanın bir yoludur. Bu makalede, Studio'da (klasik) yeni bir web hizmeti olarak makine öğrenmesi modelini yeniden eğitme ve dağıtma gösterilmektedir. Klasik bir web hizmetini yeniden eğitmek istiyorsanız bu nasıl yapılır makalesini görüntüleyin.

Bu makalede, önceden dağıtılan tahmine dayalı bir web hizmetiniz olduğu varsayılır. Tahmine dayalı bir web hizmetiniz yoksa burada Studio (klasik) web hizmeti dağıtmayı öğrenin.

Makine öğrenmesi yeni bir web hizmetini yeniden eğitmek ve dağıtmak için şu adımları izleyeceksiniz:

  1. Yeniden eğitme web hizmeti dağıtma
  2. Yeniden eğitme web hizmetinizi kullanarak yeni bir model eğitme
  3. Mevcut tahmine dayalı denemenizi yeni modeli kullanacak şekilde güncelleştirme

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Yeniden eğitme web hizmetini dağıtma

Yeniden eğitme web hizmeti, modelinizi yeni veriler gibi yeni bir parametre kümesiyle yeniden eğitmenizi ve daha sonra kaydetmenizi sağlar. Bir Web Hizmeti ÇıktısınıBir Eğitim Modeline bağladığınızda, eğitim denemesi kullanmanız için yeni bir model oluşturur.

Yeniden eğitme web hizmetini dağıtmak için aşağıdaki adımları kullanın:

  1. Bir Web Hizmeti Giriş modülünü veri girişinize bağlayın. Genellikle giriş verilerinizin özgün eğitim verilerinizle aynı şekilde işlendiğinden emin olmak istersiniz.

  2. Eğitim Modelinizin çıkışına bir Web Hizmeti Çıktısı modülü bağlayın.

  3. Modeli Değerlendirme modülüne sahipseniz, değerlendirme sonuçlarının çıkışını almak için bir Web Hizmeti Çıkış modülü bağlayabilirsiniz

  4. Denemenizi çalıştırın.

    Denemenizi çalıştırdıktan sonra elde edilen iş akışı aşağıdaki görüntüye benzer olmalıdır:

    Sonuçta elde edilen iş akışı

    Şimdi, eğitim denemesini eğitilmiş bir model ve model değerlendirme sonuçlarının çıkışını veren bir yeniden eğitme web hizmeti olarak dağıtacaksınız.

  5. Deneme tuvalinin en altında Web Hizmetini Ayarla'ya tıklayın

  6. Web Hizmetini Dağıt [Yeni] öğesini seçin. Machine Learning Web Hizmetleri portalı Web Hizmeti Dağıt sayfasında açılır.

  7. Web hizmetiniz için bir ad yazın ve bir ödeme planı seçin.

  8. Dağıt'ı seçin.

Modeli yeniden eğitme

Bu örnekte, yeniden eğitme uygulamasını oluşturmak için C# kullanıyoruz. Bu görevi gerçekleştirmek için Python veya R örnek kodunu da kullanabilirsiniz.

Yeniden eğitme API'lerini çağırmak için aşağıdaki adımları kullanın:

  1. Visual Studio'da C# konsol uygulaması oluşturma: Yeni>Project>Visual C#>Windows Klasik Masaüstü>Konsol Uygulaması (.NET Framework).
  2. Machine Learning Web Hizmetleri portalında oturum açın.
  3. Üzerinde çalıştığınız web hizmetine tıklayın.
  4. Tüket'e tıklayın.
  5. Tüket sayfasının alt kısmındaki Örnek Kod bölümünde Batch'e tıklayın.
  6. Toplu yürütme için örnek C# kodunu kopyalayın ve Program.cs dosyasına yapıştırın. Ad alanının değişmediğinden emin olun.

Açıklamalarda belirtildiği gibi Microsoft.AspNet.WebApi.Client NuGet paketini ekleyin. başvuruyu Microsoft.WindowsAzure.Storage.dll eklemek için Azure Depolama hizmetleri için istemci kitaplığını yüklemeniz gerekebilir.

Aşağıdaki ekran görüntüsünde Machine Learning Web Hizmetleri portalındaki Tüket sayfası gösterilmektedir.

Sayfayı tüket

Apikey bildirimini güncelleştirme

apikey bildirimini bulun:

const string apiKey = "abc123"; // Replace this with the API key for the web service

Tüket sayfasının Temel tüketim bilgileri bölümünde birincil anahtarı bulun ve apikey bildirimine kopyalayın.

Azure Depolama bilgilerini güncelleştirme

BES örnek kodu yerel bir sürücüden ("C:\temp\CensusInput.csv") Azure Depolama'ya bir dosya yükler, işler ve sonuçları Azure Depolama'ya geri yazar.

  1. Azure portalda oturum açma
  2. Sol gezinti sütununda Diğer hizmetler'e tıklayın, Depolama hesapları'nı arayın ve seçin.
  3. Depolama hesapları listesinden, yeniden eğitilen modeli depolamak için birini seçin.
  4. Sol gezinti sütununda Erişim anahtarları'na tıklayın.
  5. Birincil Erişim Anahtarı'nı kopyalayın ve kaydedin.
  6. Sol gezinti sütununda Bloblar'a tıklayın.
  7. Var olan bir kapsayıcıyı seçin veya yeni bir kapsayıcı oluşturup adı kaydedin.

StorageAccountName, StorageAccountKey ve StorageContainerName bildirimlerini bulun ve portaldan kaydettiğiniz değerleri güncelleştirin.

const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name

Giriş dosyasının kodda belirttiğiniz konumda kullanılabilir olduğundan da emin olmanız gerekir.

Çıkış konumunu belirtme

İstek Yükü'nde çıkış konumunu belirttiğinizde, RelativeLocation içinde belirtilen dosyanın uzantısı olarak ilearnerbelirtilmelidir.

Outputs = new Dictionary<string, AzureBlobDataReference>() {
    {
        "output1",
        new AzureBlobDataReference()
        {
            ConnectionString = storageConnectionString,
            RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
        }
    },

Çıktıyı yeniden eğitme örneği aşağıda verilmiştir:

Çıkışı yeniden eğitme

Yeniden eğitme sonuçlarını değerlendirme

Uygulamayı çalıştırdığınızda, çıkış değerlendirme sonuçlarına erişmek için gereken URL'yi ve paylaşılan erişim imzaları belirtecini içerir.

Output2 için çıktı sonuçlarından BaseLocation, RelativeLocation ve SasBlobToken'ı birleştirip tam URL'yi tarayıcı adres çubuğuna yapıştırarak yeniden eğitilen modelin performans sonuçlarını görebilirsiniz.

Yeni eğitilen modelin mevcut modelden daha iyi performans gösterip göstermediğini belirlemek için sonuçları inceleyin.

Çıkış sonuçlarından BaseLocation, RelativeLocation ve SasBlobToken'ı kaydedin.

Tahmine dayalı denemeyi güncelleştirme

Azure Resource Manager oturum açma

İlk olarak, Connect-AzAccount cmdlet'ini kullanarak PowerShell ortamından Azure hesabınızda oturum açın.

Web Hizmeti Tanımı nesnesini alma

Ardından, Get-AzMlWebService cmdlet'ini çağırarak Web Hizmeti Tanımı nesnesini alın.

$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Mevcut bir web hizmetinin kaynak grubu adını belirlemek için Get-AzMlWebService cmdlet'ini aboneliğinizdeki web hizmetlerini görüntülemek için herhangi bir parametre olmadan çalıştırın. Web hizmetini bulun ve ardından web hizmeti kimliğine bakın. Kaynak grubunun adı, resourceGroups öğesinden hemen sonra kimlikteki dördüncü öğedir. Aşağıdaki örnekte kaynak grubu adı Default-MachineLearning-SouthCentralUS şeklindedir.

Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}

Alternatif olarak, mevcut bir web hizmetinin kaynak grubu adını belirlemek için Machine Learning Web Hizmetleri portalında oturum açın. Web hizmetini seçin. Kaynak grubu adı, resourceGroups öğesinden hemen sonra web hizmetinin URL'sinin beşinci öğesidir. Aşağıdaki örnekte kaynak grubu adı Default-MachineLearning-SouthCentralUS şeklindedir.

https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237

Web Hizmeti Tanımı nesnesini JSON olarak dışarı aktarma

Eğitilen modelin tanımını yeni eğitilen modeli kullanacak şekilde değiştirmek için önce Export-AzMlWebService cmdlet'ini kullanarak JSON biçimli bir dosyaya aktarmanız gerekir.

Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"

ilearner blobu başvuruyu güncelleştirme

Varlıklarda [eğitilen modeli] bulun, locationInfo düğümündeki uri değerini ilearner blobunun URI'siyle güncelleştirin. URI, BES yeniden eğitme çağrısının çıktısından BaseLocation ve RelativeLocation birleştirilerek oluşturulur.

"asset3": {
    "name": "Retrain Sample [trained model]",
    "type": "Resource",
    "locationInfo": {
        "uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
    },
    "outputPorts": {
        "Results dataset": {
            "type": "Dataset"
        }
    }
},

JSON'u Bir Web Hizmeti Tanımı nesnesine aktarma

Import-AzMlWebService cmdlet'ini kullanarak değiştirilmiş JSON dosyasını, önkoşul denemesini güncelleştirmek için kullanabileceğiniz bir Web Hizmeti Tanımı nesnesine geri dönüştürün.

$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"

Web hizmetini güncelleştirme

Son olarak, tahmine dayalı denemeyi güncelleştirmek için Update-AzMlWebService cmdlet'ini kullanın.

Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Sonraki adımlar

Web hizmetlerini yönetme veya birden çok deneme çalıştırmasını izleme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: