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

적용 대상: 적용 대상Machine Learning Studio(클래식) 미적용 대상Azure Machine Learning

Important

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 웹 서비스 포털에 로그인합니다.
  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. 왼쪽 탐색 열에서 추가 서비스를 클릭하고 Storage 계정을 검색한 다음 선택합니다.
  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지정된 파일의 확장명은 로 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, RelativeLocation 및 SasBlobToken을 결합하고 전체 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를 확인합니다. 리소스 그룹의 이름은 resourceGroups 요소 바로 뒤 ID의 네 번째 요소입니다. 다음 예제에서 리소스 그룹 이름은 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 웹 서비스 포털에 로그인합니다. 웹 서비스를 선택합니다. 리소스 그룹 이름은 웹 서비스 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을 웹 서비스 정의 개체로 가져오기

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

$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'

다음 단계

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