728x90
728x90

애저(Azure) Machine Learning Service의 Designer 사용해보기

들어가며

  • Azure의 Machine Learning Service를 배포해보고, Desginer를 이용하여 실습해보자.

 

실습하기

Azure Machine Learning 서비스 만들기

  • 애저 포털의 검색창에 @Azure Machine Learning@을 검색한 후 @[Azure Machine Learning]@ 서비스로 진입한다.

  • @[Azure Machine Learning]@ 페이지에서 @[만들기]@ 버튼을 클릭하여 리소스를 만들어준다.

 

Azure Machine Learning Studio 페이지에서 가상 머신 생성하기

  • 별도의 포탈에 진입해야 한다. @[Studio 시작하기]@ 버튼을 누르면 Azure Machine Learning Studio로 진입하게 된다.
  • @[Compute]@ 탭을 클릭한 후, @[New]@ 버튼을 클릭한다.
이름(compute name)을 설정해주고, Virtual Machine Type을 CPU로 설정해준다. (간단한 Scikit-Learn 실습을 진행할 것이다.)
가상 머신을 생성하는데 시간이 오래 걸린다.
  • 가상 머신이 생성되면, 왼쪽의 @[Designer]@ 탭을 클릭한 후, @[Create a new pipeline using classing prebuilt components]@를 클릭한다. 

 

  • 여러가지 컴포넌트(Component)들을 볼 수 있다. Orange 프로그램처럼 여러가지 컴포넌트들을 끌어다 사용할 수 있다.

 

간단한 모델 만들어보기

  • Designer를 이용하여 근속 연수에 따라 연봉을 예측해주는 간단한 모델을 만들어보자.
  • @[Data Input and Output]@ 섹션에서 @[Enter Data Manually]@ 컴포넌트를 끌어다 놓고, 해당 컴포넌트를 더블 클릭해준다. 그리고 @[Data]@를 아래의 사진처럼 입력해준다.

 

  • 좌측 상단의 @[Submit]@ 버튼을 클릭한다. 아직 가상 머신을 등록하지 않았기 때문에 오류 메시지가 출력된다.

 

  • 좌측 상단에서 @[Settings]@ 버튼을 클릭한 후, Compute Type을 @Compute Instance@로 설정한다. 그리고 Compute Instance를 생성했던 처음에 생성했던 가상 머신을 설정해준다. 그리고 상단의 @[Submit]@ 버튼을 클릭한다.

 

  • @[Experiment name]@을 @Create new@로 설정한 후 @[Submit]@ 버튼을 클릭한다. 왼쪽에 성공적으로 Submitted 되었다는 메시지를 확인할 수 있다. 그리고 메시지의 @[Job detail]@ 링크를 클릭한다.

 

  • 다음과 같이 모듈의 @o@ 아이콘을 클릭한 후 마우스 오른쪽 버튼을 클릭한 후. @[Preview data]@ 항목을 클릭하면 데이터에 대한 분석 정보를 확인할 수 있다.

 

  • @[Component]@ 탭 > @[Machine Learning Algorithms]@ 섹션에서 @[Linear Regression]@ 컴포넌트를 끌어온다.

 

  • 그리고 컴포넌트 검색창에 @[Split]@을 검색하여 @[Split Data]@ 컴포넌트를 끌어온다. 그리고 @[Enter Data Manually]@ 컴포넌트의 데이터셋(Dataset)을 @[Split Data]@ 컴포넌트의 상단에 연결해준다. @[Split Data]@ 컴포넌트의 왼쪽 Output은 학습용 데이터로 사용하고, 오른쪽 Output은 테스트용 데이터로 사용하게끔 하면 된다.

 

  • @[Split Data]@ 컴포넌트를 더블 클릭한 후, 다음과 같이 @[Fraction of rows in the output database...]@를 @0.7@로 설정해준다.

[Split Data] 컴포넌트의 왼쪽으로 0.7이 빠지고, 오른쪽으로 0.3이 빠지게 된다.

 

  • 컴포넌트 검색창에 @[Train]@을 검색한 후, @[Train Model]@ 컴포넌트를 끌어온다. 그리고 아래 그림처럼 @[Split Data]@ 컴포넌트와 @[Linear Regression]@ 컴포넌트를 @[Train Model]@ 컴포넌트에 연결해준다.

 

  • @[Train Model]@ 컴포넌트에 경고 표시가 되어있다. 레이블 컬럼(Label Column)이 설정되지 않았기 때문이다. 이 문제를 해결하기 위해 @[Train Model]@ 컴포넌트를 더블 클릭한 후, @Label Column@을 @연봉@으로 설정해준다.
  • 컴포넌트 검색창에 @[Score]@을 검색한 후, @[Score Model]@ 컴포넌트를 끌어온다. 그리고 아래 그림처럼 @[Split Data]@ 컴포넌트와 @[Train Model]@ 컴포넌트를 @[Score Model]@ 컴포넌트에 연결해준다. (@[Split Data]@ 모델의 오른쪽 데이터셋(테스트 데이터셋)을 @[Score Model]@ 컴포넌트의 입력으로 주어, @[Split Data]@ 모델의 왼쪽 데이터셋(훈련용 데이터셋)을 Linear Regression으로 훈련한 모델을 검증해보는 작업이다.)

 

  • 컴포넌트 검색창에 @[Evaluate]@을 검색한 후, @[Evaluate Model]@ 컴포넌트를 끌어온다. 그리고 아래 그림처럼 @[Score Model]@ 컴포넌트의 @Scored dataset@을 @[Evaluate Model]@ 컴포넌트에 연결해준다. 그리고 우측 상단의 @[Submit]@ 버튼을 클릭한다.

 

  • @The port(s) Scored_dataset ... Recommender ...@ 에러 메시지가 출력되면 무시하고 @[Submit anyway]@ 버튼을 클릭해준다. 그리고 처음에 생성해주었던 job을 선택해준다. (@Select existing@) 학습이 완료되면, 성공했다는 알림에 있는 @[Job detail]@을 클릭한다.
학습이 완료된 후의 모습

 

  • @[Split Data]@ 컴포넌트의 @o@ 아이콘에 마우스 커서를 올리고, 마우스 오른쪽 버튼을 눌러서 @[Preview data]@를 클릭해본다. 데이터가 초기에 설정햇던데로 7:3의 비율로 분할되어 있는 것을 확인할 수 있다.

 

  • 똑같이 @[Score Model]@ 컴포넌트의 @o@ 아이콘에 마우스 커서를 올리고, 마우스 오른쪽 버튼을 눌러서 @[Preview data]@를 클릭해본다. 모델이 예측한 정보를 확인할 수 있다.

 

  • 똑같이 @[Evaluate Model]@ 컴포넌트의 @o@ 아이콘에 마우스 커서를 올리고, 마우스 오른쪽 버튼을 눌러서 @[Preview data]@를 클릭해본다. 

정확도가 0.999986인 것을 확인할 수 있다.

 

  • 이로써 근속 연수에 따른 연봉 예측 모델이 만들어졌다. 이제 이 모델을 배포해보자. 상단의 @[Publish]@ 버튼을 클릭한 후, @[PipelineEndpoint@ 옵션을 @[Create new]@로 설정한 후, @PipelineEndpoint@ 이름을 지정해준다. 그리고 @[Publish]@ 버튼을 클릭한다. 배포가 완료되면 상단의 알림창에서 본인이 지정한 PipelineEndpoint 이름(@SalaryService@)의 링크를 클릭한다. 그러면 접속에 필요한 엔드포인트(Endpoint)를 확인할 수 있다.

 

  • ChatGPT에게 '이 엔드포인트(@REST endpoint documentation@)를 활용하여 파이썬 코드를 만들어줘.'와 같이 요구하여 코드를 간편하게 얻을 수 있다.

import requests

def submit_pipeline_endpoint(pipeline_endpoint, api_key, experiment_name):
    # 파이프라인 엔드포인트 URL
    url = f"{pipeline_endpoint}/runs"

    # 엔드포인트에 전달할 데이터
    data = {
        "ExperimentName": experiment_name
    }

    # 요청 헤더에 API 키 추가
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    try:
        # POST 요청 보내기
        response = requests.post(url, json=data, headers=headers)
        response.raise_for_status()

        # 응답 확인
        response_json = response.json()
        run_id = response_json.get("runId")

        if run_id:
            print(f"파이프라인 실행이 성공적으로 제출되었습니다. (Run ID: {run_id})")
        else:
            print("파이프라인 실행 제출에 실패했습니다.")

    except requests.exceptions.RequestException as e:
        print(f"파이프라인 실행 제출 중 오류가 발생했습니다: {e}")


# 파이프라인 엔드포인트 정보
pipeline_endpoint = "https://koreacentral.api.azureml.ms/pipelines/swagger/pipelineendpointsubmit"
api_key = "YOUR_API_KEY"
experiment_name = "YOUR_EXPERIMENT_NAME"

# 파이프라인 엔드포인트 호출 및 실행 제출
submit_pipeline_endpoint(pipeline_endpoint, api_key, experiment_name)

 

Azure Machine Learning Designer는 실무에서 거의 사용되지 않으니 참고만 한다.

 

  • 다시 @Designer@로 돌아간다.

728x90
728x90