Newer
Older
---
html:
toc: true
offline: true
export_on_save:
html: true
---
# AutoML 학습하기 (BatchAutoMLTrainInSingleEngine)
---
이 예제에서는 자동기계학습 (**AutoML**: Automated Machine Learning)을 이용하여 최적모델을 학습하는 방법을 설명합니다.
자동기계학습은 기계학습 전문가의 도움없이 주어진 입력자료에 대해 최적의 기계학습모델을 자동으로 찾아내는 기술입니다. KSB 프레임워크는 독자적으로 개발된 Auto-SparkML (Automated Machine Learning for Apache Spark)을 통해 Big-Data 분석용 AutoML 기능을 제공합니다.
## 입력 데이터 준비하기
입력데이터는 Apache Spark이 제공하는 DataFrame 을 저장하고 있는 parquet 파일이어야 합니다. 이 때 DataFrame은 "features" 칼럼과 "label" 칼럼을 반드시 포함하고 있어야 합니다. "features" 칼럼은 VectorAssembler 형태의 자료여야 합니다 (참고: https://spark.apache.org/docs/latest/ml-features.html#vectorassembler). "label" 칼럼은 Classification의 경우에는 수치 혹은 문자열이어야 하며 (예: "cat", "dog"), Regression의 경우에는 수치값이어야 합니다.
본 예제에서는 Host PC의 "/home/csle/ksb-csle/pyML/autosparkml/datasets/iris_dataset" 폴더를 사용자 HDFS repository 의 "dataset/iris_dataset" 로 업로드하여 사용합니다. 이 자료는 DataFrame 을 저장하고 있는 parquet 형태의 자료입니다.
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.3.CSV2Parquet.md">CSV 파일 Parquet 변환</a>
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
## 워크플로우 생성하기
워크플로우 편집화면을 이용하여 아래 과정을 거쳐 워크플로우를 생성합니다.
### 엔진 선택
AutoML 기능을 사용하기 위해 External 엔진을 드래그앤 드롭합니다. "Workflow Property"는 아래와 같이 지정합니다.
field |value | 설명
--|---|--
name | BatchAutoMLTrainInSingleEngine | 워크플로우 이름
description | AutoML 학습 예제 | 워크플로우 설명
isBatch | true | Batch 실행여부
#### Reader
파일형태의 입력자료를 읽기위해 FileReader를 드래그앤 드롭하고, 아래표와 같이 속성을 지정합니다.
field |value | 설명
--|---|--
filePath | dataset/iris_dataset | 파일경로
fileType | CSV | 파일형태
delimiter | , | 구분자
field | | 상세설정
header | false | 헤더포함여부
filePath는 직접 입력할 수도 있으며, 아래 화면처럼 GUI를 이용해 선택할 수도 있습니다 (filePath 속성에 "File" 버튼 클릭). 기타 속성은 기본값으로 두면 됩니다. <b>참고</b>: 상기하였듯이, 입력파일 형태는 parquet 만 지원하기 때문에 기타 속성을 변경하여도 적용되지 않습니다.
![파일 읽기](images/2.5.5_read.png)
#### Writer
학습결과물을 파일형태로 저장하기 위해 FileWriter를 드래그앤 드롭합니다.
field |value | 설명
--|---|--
filePath | autosparkml | 저장경로
fileType | CSV | 파일형태
delimiter | , | 구분자
field | | 상세설정
header | false | 헤더포함여부
Reader의 경우와 마찬가지로 filePath는 직접 입력할 수도 있으며, GUI를 이용해 선택할 수도 있습니다. 이 외의 속성은 기본값으로 설정합니다.
#### Controller
Controller는 PySparkMLTrainer를 사용합니다.
#### Runner
PySparkRunner를 드래그앤 드롭합니다.
field |value | 설명
--|---|--
pyEntry | file:////home/csle/ksb-csle/pyML/autosparkml/bridge/call_trainer.py | 실행 Python 스크립트
sparkArgs | | Spark 상세설정
inJason | false | Jason 형태 파라미터 전달여부
sparkArgs 버튼을 누르면 아래와 같이 Apache Spark 실행환경을 설정할 수 있는 창이 뜹니다. 이 예제에서는 기본값을 사용합니다.
![Spark 세부 설정](images/2.5.5_spark_args.png)
#### Operator
AutoML 기능을 사용하기 위해 AutoSparkMLOperator를 드래그앤 드롭합니다. AutoML은 모든 과정이 자동으로 수행되지만 기계학습 유형은 선택해야 합니다 (예: Classification 혹은 Regression).
field |value | 설명
--|---|--
type | Classification | 기계학습 유형
### 워크플로우 완성 화면
아래 그림은 위 과정을 거쳐 완성된 워크플로우 화면입니다. ksbuser@etri.re.kr 계정으로 접속하면 동일한 이름의 워크플로우가 이미 만들어져있으며 (BatchAutoMLTrainInSingleEngine), 이 워크플로우를 불러와 실행해 볼 수도 있습니다.
<b>참고</b>: 이미 만들어진 워크플로우를 사용할 때에도, iris_dataset 은 HDFS 에 따로 업로드하여야 합니다.
![워크플로우 완성 화면](images/2.5.5_workflow.png)
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행버튼 (<span style="color:#778899">▶</span>)을 누릅니다. 이 예제의 엔진은 배치형태로 실행되므로 "Batch" 체크박스를 체크하고 워크플로우를 제출합니다.
![Batch 체크](images/2.5.5_run_workflow.png)
### 워크플로우 모니터링 하기
#### 워크플로우 상태 확인
KSB 웹툴킷 상단 "Monitoring" 메뉴의 "Workflow" 탭에서 작성한 워크플로우가 실행 중 (<span style="color:#6698FF">Inprogress</span>)인 것을 확인할 수 있습니다. 이 화면에서 실행 중인 워크플로우를 종료(<span style="color:red">◼</span>)할 수 있으며, 종료된 워크를로우를 다시 실행(<span style="color:#6698FF">▶</span>)할 수도 있습니다.
![워크플로우 동작 상태 확인](images/2.5.5_monitor.png)
#### 워크플로우 로그 보기
위 화면에서 "WorkFlow History" 탭을 선택하면, KSB 프레임워크가 수행한 워크플로우들의 목록 및 각각의 로그 (목록 최우측의 <b><span style="color:#6698FF">i</span></b> 버튼 클릭)를 확인할 수 있습니다.
![워크플로우 히스토리](images/2.5.5_history.png)
위 화면에서 "Text 결과 파일 보기" 버튼을 누르면 학습성능 파일을 아래처럼 열어볼 수 있습니다. Classification 경우에는 $F_1$ 스코어가 기록됩니다. Regression의 경우에는 MAE (Mean Absolute Error), MSE (Mean Squared Error) 및 MAPE (Mean Absolute Percentage Error)가 기록됩니다.
![워크플로우 히스토리](images/2.5.5_metric.png)
## 결과 확인하기
### 최적학습모델 확인하기
워크플로우 실행의 결과물인 최적학습모델은 FileWriter 속성에서 설정한 저장경로에 저장되어 있으며, KSB 웹툴킷 상단의 "Repository" 메뉴에서 확인할 수 있습니다. 먼저 "applications" 폴더 안의 워크플로우 ID 폴더로 들어갑니다 (워크플로우 ID는 Monitoring 메뉴에서 확인 가능합니다). 해당 저장경로 ("autosparkml") 안에 모델을 포함하는 폴더 및 파일이 생성되어 있으면 워크플로우가 성공적으로 수행된 것입니다 (아래 그림 참조). 동일한 폴더 아래에 있는 "acc.csv" 파일은 위에서 설명한 "Text 결과 파일 보기" 버튼을 눌러 보이는 결과를 포함하는 파일입니다.
![결과확인](images/2.5.5_output.png)