기계 학습 모델 재학습 및 배포

적용 대상:적용 대상.Machine Learning Studio(클래식) 적용되지 않는 대상.Azure Machine Learning

중요

Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.

2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.

ML Studio(클래식) 설명서는 사용 중지되며 나중에 업데이트되지 않을 수 있습니다.

기계 학습 모델 다시 학습은 사용 가능한 가장 관련성 있는 데이터를 기반으로 계속 정확성을 유지하는 한 가지 방법입니다. 이 문서에서는 Studio(클래식)에서 기계 학습 모델을 다시 학습하고 새 웹 서비스로 배포하는 방법을 보여 줍니다. 클래식 웹 서비스를 다시 학습하려는 경우 이 방법 문서를 확인하세요.

이 문서는 예측 웹 서비스를 이미 배포했다고 가정합니다. 예측 웹 서비스가 아직 없는 경우 여기서 Studio(클래식) 웹 서비스 배포 방법을 알아봅니다.

다음 단계에 따라 기계 학습의 새 웹 서비스를 다시 학습하고 배포합니다.

  1. 재학습 웹 서비스 배포
  2. 재학습 웹 서비스를 사용하여 새 모델 학습
  3. 새 모델을 사용하도록 기존 예측 실험 업데이트

참고

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

재학습 웹 서비스 배포

재학습 웹 서비스를 사용하여 새 데이터와 같은 새로운 매개 변수 세트로 모델을 다시 학습한 후 나중에 사용할 수 있게 저장할 수 있습니다. 웹 서비스 출력모델 학습에 연결하면 학습 실험이 사용할 수 있는 새 모델을 출력합니다.

다음 단계에 따라 재학습 웹 서비스를 배포합니다.

  1. 웹 서비스 입력 모듈을 데이터 입력에 연결합니다. 일반적으로 이 입력 데이터가 원래 학습 데이터와 동일한 방식으로 처리해야 합니다.

  2. 웹 서비스 출력 모듈을 모델 학습의 출력에 연결합니다.

  3. 모델 평가 모듈이 있는 경우 웹 서비스 출력 모듈을 연결하여 평가 결과를 출력할 수 있습니다.

  4. 실험을 실행합니다.

    실험을 실행한 후 결과 워크플로는 다음 이미지와 비슷합니다.

    결과 워크플로

    다음으로, 학습 실험을 학습된 모델 및 모델 평가 결과를 출력하는 재학습 웹 서비스로 배포합니다.

  5. 실험 캔버스 맨 아래에서 웹 서비스 설정을 클릭합니다.

  6. 웹 서비스 배포[신규]를 선택합니다. Machine Learning Web Services 포털은 웹 서비스 배포 페이지에 열립니다.

  7. 웹 서비스의 이름을 입력하고 결제 방식을 선택합니다.

  8. 배포를 선택합니다.

모델 재교육

이 예에서는 재학습 애플리케이션을 만드는 데 C#을 사용합니다. 또한 Python 또는 R 샘플 코드를 사용하여 이 작업을 수행할 수 있습니다.

다음 단계에 따라 재학습 API를 호출합니다.

  1. Visual Studio(새로 만들기>프로젝트>Visual C#>Windows 클래식 바탕 화면>콘솔 앱(.NET Framework) )에서 C# 콘솔 애플리케이션을 만듭니다.
  2. Machine Learning Web Service 포털에 로그인합니다.
  3. 현재 작업 중인 웹 서비스를 클릭합니다.
  4. 사용을 클릭합니다.
  5. 사용 페이지의 맨 아래에 있는 샘플 코드 섹션에서 Batch를 클릭합니다.
  6. 배치 실행을 위해 샘플 C# 코드를 복사한 다음 Program.cs 파일에 붙여 넣습니다. 네임스페이스를 그대로 유지하도록 합니다.

설명에서 지정된 대로 NuGet 패키지인 Microsoft.AspNet.WebApi.Client를 추가합니다. Microsoft.WindowsAzure.Storage.dll에 참조를 추가하려면 Azure Storage 서비스용 클라이언트 라이브러리를 설치해야 할 수도 있습니다.

다음 스크린샷은 Machine Learning Web Services 포털의 사용 페이지를 보여줍니다.

사용 페이지

apikey 선언 업데이트

apikey 선언을 찾습니다.

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

사용 페이지의 기본 사용량 정보 섹션에서 기본 키를 찾아 apikey 선언으로 복사합니다.

Azure Storage 정보 업데이트

BES 샘플 코드는 로컬 드라이브에서(예: "C:\temp\CensusInput.csv") Azure Storage로 파일을 업로드하고 이를 처리하고 결과를 Azure Storage에 다시 작성합니다.

  1. Azure Portal에 로그인합니다.
  2. 왼쪽 탐색 열에서 추가 서비스를 클릭하고, 스토리지 계정을 검색하고 선택합니다.
  3. 스토리지 계정 목록에서 하나를 선택하여 재학습된 모델을 저장합니다.
  4. 왼쪽 탐색 열에서 선택키를 클릭합니다.
  5. 기본 선택키를 복사하고 저장합니다.
  6. 왼쪽 탐색 열에서 Blob을 클릭합니다.
  7. 기존 컨테이너를 선택하거나 새 컨테이너를 만들어 이름을 저장합니다.

StorageAccountName, StorageAccountKeyStorageContainerName 선언을 찾아 포털에서 저장한 값을 업데이트합니다.

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

또한 코드에 지정한 위치에서 입력 파일을 사용할 수 있는지 확인해야 합니다.

출력 위치를 지정합니다.

요청 페이로드에서 출력 위치를 지정할 때 RelativeLocation 에서 지정된 파일의 확장명을 csv에서 ilearner으로 지정해야 합니다.

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)*/
        }
    },

다음은 재학습 출력 예제입니다.

재학습 출력

재학습 결과 평가

애플리케이션을 실행할 때 출력은 평가 결과를 액세스하는 데 필요한 URL 및 공유 액세스 서명 토큰을 포함합니다.

output2에 대한 출력 결과의 BaseLocation, RelativeLocationSasBlobToken을 조합하고 브라우저 주소 표시줄에 전체 URL을 붙여넣어 다시 학습된 모델의 성능 결과를 확인할 수 있습니다.

결과를 검사하여 새로 학습된 모델이 기존 모델보다 성능이 뛰어난지 여부를 확인합니다.

출력 결과에서 BaseLocation, RelativeLocationSasBlobToken을 저장합니다.

예측 실험 업데이트

Azure Resource Manager로 로그인

먼저 Connect-AzAccount cmdlet을 사용하여 PowerShell 환경 내에서 Azure 계정에 로그인합니다.

웹 서비스 정의 개체 가져오기

다음으로 Get-AzMlWebService cmdlet을 호출하여 웹 서비스 정의 개체를 가져옵니다.

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

기존 웹 서비스의 리소스 그룹 이름을 결정하려면 구독 중인 웹 서비스를 표시하도록 매개 변수 없이 Get-AzMlWebService cmdlet을 실행합니다. 웹 서비스를 찾은 다음 웹 서비스 ID를 살펴봅니다. 리소스 그룹 이름은 ID의 네 번째 요소로 resourceGroups 요소 바로 뒤에 있습니다. 다음 예제에서 리소스 그룹 이름은 Default-MachineLearning-SouthCentralUS입니다.

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 : {}

또는 기존 웹 서비스의 리소스 그룹 이름을 결정하려면 Machine Learning Web Services 포털에 로그인합니다. 웹 서비스를 선택합니다. 리소스 그룹 이름은 웹 서비스 URL의 다섯 번째 요소로 resourceGroups 요소 바로 뒤에 있습니다. 다음 예제에서 리소스 그룹 이름은 Default-MachineLearning-SouthCentralUS입니다.

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

JSON으로 웹 서비스 정의 개체 내보내기

새로 학습된 모델을 사용하여 새로 학습된 모델에 대한 정의를 수정하려면 먼저 Export-AzMlWebService cmdlet을 사용하여 JSON 형식 파일에 내보내기해야 합니다.

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

ilearner blob에 대한 참조 업데이트

자산에서 [학습된 모델]을 찾아, ilearner Blob의 URI와 함께 locationInfo 노드의 uri 값을 업데이트합니다. URI는 BES 재학습 호출의 출력에서 BaseLocationRelativeLocation을 조합하여 만듭니다.

"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을 웹 서비스 정의 개체로 가져오기

수정된 JSON 파일을 예측 실험을 업데이트하는 데 사용할 수 있는 웹 서비스 정의 개체로 변환하려면 Import-AzMlWebService cmdlet을 사용합니다.

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

웹 서비스 업데이트

마지막으로, Update-AzMlWebService cmdlet를 사용하여 예측 실험을 업데이트합니다.

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

다음 단계

웹 서비스를 관리하거나 여러 실험 실행을 추적하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.