Amazon Web Services 한국 블로그

Amazon SageMaker Data Wrangler – 기계 학습을 위해 데이터를 준비하는 시각적 인터페이스 제공

오늘 Amazon SageMaker의 새로운 기능인 Amazon SageMaker Data Wrangler를 소개하게 되어 정말 기쁩니다. 이 기능을 사용하면 데이터 사이언티스트와 엔지니어가 시각적 인터페이스를 사용하여 기계 학습(ML) 애플리케이션을 위한 데이터를 쉽고 빠르게 준비할 수 있습니다.

데이터 사이언티스트와 ML 엔지니어 그룹에 실제로 ML 문제를 연구하는 데 얼마나 많은 시간을 할애하는지 물어볼 때마다 이들은 단체로 한숨을 쉰 후에 “운이 좋으면 20%“라고 답합니다. 그 이유를 물어보면, 한결같이 “항상 데이터 준비에만 최대 80%가 소요되기 때문“이라고 말합니다.

실제로 훈련을 위한 데이터 준비는 ML 프로세스의 중요한 단계이며, 아무도 이 사실을 부인하지 않을 것입니다. 일반적인 태스크는 다음과 같습니다.

  • 데이터 찾기: 원시 데이터가 저장되는 위치를 찾아서 액세스
  • 데이터 시각화: 데이터 세트의 각 열에 대한 통계 속성 검사, 히스토그램 작성, 이상치 연구
  • 데이터 정리: 중복 제거, 값이 누락된 항목 삭제 또는 채우기, 이상치 제거
  • 데이터 보강 및 피처 엔지니어링: 열을 처리하여 더 뛰어난 표현력의 피처 구축, 훈련을 위한 피처 하위 세트 선택

새로운 ML 프로젝트의 초기 단계에는 수동 프로세스가 많이 포함되며, 직관과 경험이 중요한 역할을 합니다. 종종 데이터 사이언티스트는 pandas 또는 PySpark와 같은 오픈 소스 도구와 맞춤형 도구를 함께 사용하여 다양한 데이터 변환의 조합으로 실험하고 모델을 훈련하기 전에 이를 사용하여 데이터 세트를 처리합니다. 그런 다음, 예측 결과를 분석하고 작업을 반복합니다. 이러한 작업이 중요하긴 하지만, 계속 반복하면 시간도 오래 걸리고 지루하며 오류가 발생하기 쉽습니다.

그러다 정확도나 원하는 다른 지표의 올바른 수준에 도달하고, 프로덕션 환경의 전체 데이터 세트에서 훈련할 수 있습니다. 그러나 먼저 샌드박스 내에서 실험한 정확한 데이터 준비 단계를 재현하고 자동화해야 합니다. 아무리 신중하게 문서화한다 해도, 이러한 작업의 대화형 특성을 감안할 때 항상 오류의 여지가 있습니다.

마지막으로, 작업을 마치기 전에 데이터 처리 인프라를 관리하고 확장해야 합니다. 다시 생각해보면 80%의 시간으로도 이 모든 작업을 수행하기에 충분하지 않을지도 모릅니다!

Amazon SageMaker Data Wrangler 소개
Amazon SageMaker Data Wrangler는 ML을 위한 완전관리형 통합 개발 환경(IDE)인 Amazon SageMaker Studio에 통합되어 있습니다. 몇 번의 클릭만으로 데이터 원본에 연결하고 데이터를 탐색 및 시각화하며 기본 제공 변환 및 고유한 변환을 적용하고 결과 코드를 자동 생성된 스크립트로 내보내며 이를 관리형 인프라에서 실행할 수 있습니다. 각 단계를 더 자세히 살펴보겠습니다.

데이터 준비는 확실히 데이터를 찾고 데이터에 액세스하는 작업으로 시작됩니다. SageMaker Data Wrangler를 사용하면 바로 Amazon Simple Storage Service(S3), Amazon Athena, Amazon RedshiftAWS Lake Formation에 쉽고 빠르게 연결할 수 있습니다. 또한 Amazon SageMaker Feature Store에서 데이터를 가져올 수도 있습니다. AWS의 다른 서비스와 마찬가지로, SageMaker Studio 인스턴스에 연결된 권한에 따라 AWS Identity and Access Management(IAM)에서 액세스 관리를 제어합니다.

데이터 원본에 연결한 후에는 데이터를 시각화할 수 있습니다. SageMaker Data Wrangler 사용자 인터페이스를 사용하면 테이블 요약, 히스토그램 및 산점도를 몇 초 안에 확인할 수 있습니다. 또한 널리 사용되는 Altair 오픈 소스 라이브러리를 사용해 작성한 코드를 복사하고 실행하여 사용자 지정 그래프를 작성할 수도 있습니다.

데이터의 표시 형식을 충분히 파악했으면 이제 데이터 준비를 시작합니다. SageMaker Data Wrangler는 300개가 넘는 기본 제공 변환(예: 데이터 찾기 및 바꾸기, 열 분할/이름 바꾸기/삭제, 숫자 값 비례 조정, 범주 값 인코딩 등)을 포함합니다. 드롭다운 목록에서 변환을 선택하고 필요한 파라미터를 입력하기만 하면 됩니다. 그리고 변경 사항을 미리 보고 이 데이터 세트에 대한 준비 단계 목록에 추가할지 여부를 결정할 수 있습니다. 원하는 경우 pandas, PySpark 또는 PySpark SQL을 사용하여 사용자 지정 변환을 구현하도록 고유한 코드를 추가할 수도 있습니다.

처리 파이프라인에 변환 단계를 추가하면 SageMaker Studio에서 그래픽 형식으로 요약 정보를 볼 수 있습니다. 새 데이터 원본 또는 다른 변환 단계 그룹(즉, 데이터 정리 그룹과 피처 엔지니어링 그룹)과 같은 새 스테이지를 파이프라인에 추가할 수도 있습니다. 직관적인 사용자 인터페이스 덕분에, 데이터 준비 파이프라인을 구체화하여 처리되는 데이터가 예상대로 표시되는지 바로 확인할 수 있습니다.

조기에 데이터 준비 단계를 확인하고 예측 기능이 어떠한지 살펴보는 것이 확실히 좋지 않을까요? 그렇다면, 좋은 소식이 있습니다! 회귀 및 분류 문제 유형의 경우 “빠른 모델” 기능을 사용하면 데이터의 하위 집합을 선택하고 모델을 훈련하며 예측 결과에 가장 많이 기여하는 피처를 확인할 수 있습니다. 모델을 살펴보면 가능한 한 빨리 데이터 준비 문제를 쉽게 진단하고 수정할 수 있으며, 모델 성능을 향상시키기 위해 추가 피처 엔지니어링이 필요한지 결정할 수 있습니다.

파이프라인에 만족하면 한 번의 클릭으로 수동 단계를 충실하게 재현하는 Python 스크립트로 이를 내보낼 수 있습니다. 불일치를 찾는 데 시간을 낭비하지 않아도 되며, 이 코드를 ML 프로젝트에 직접 추가할 수도 있습니다.

또한 처리 코드를 다음 위치로 내보낼 수 있습니다.

이제 간단한 데모를 통해 SageMaker Data Wrangler의 간편한 작동 방식을 보여드리겠습니다.

Amazon SageMaker Data Wrangler 사용
SageMaker Studio를 열고 승객 정보를 포함하는 Titanic 데이터 세트와 난파 후 생존 여부를 표시하는 레이블을 처리하는 새 데이터 플로우를 생성합니다.

SageMaker 스크린샷

데이터 세트는 Amazon Simple Storage Service(S3)에서 CSV 파일로 저장됩니다. 이제 적절한 데이터 원본을 선택합니다.

SageMaker 스크린샷

기본 제공 도구를 사용하여 S3 버킷을 빠르게 탐색하고 데이터가 포함된 CSV 파일을 찾습니다. SageMaker Data Wrangler는 큰 데이터 세트에 대해 Parquet 형식도 지원합니다.

파일을 선택하면, SageMaker Data Wrangler에서 처음 몇 개 행을 표시합니다.

SageMaker 스크린샷

데이터 세트를 가져옵니다. 그러면 데이터 플로우의 초기 보기가 표시됩니다. 데이터 세트를 오른쪽 버튼으로 클릭하고 [데이터 유형 편집(Edit data types)]을 선택하여 SageMaker Data Wrangler가 데이터 세트의 각 열 유형을 올바르게 탐지하는지 확인합니다.

SageMaker 스크린샷

각 열을 확인하면 모든 올바른 유형으로 나옵니다.

SageMaker 스크린샷

데이터 흐름 보기로 다시 돌아가 이번에는 [분석 추가(Add analysis)]를 선택합니다. 그러면 히스토그램, 산점도 등을 사용하여 데이터를 시각화할 수 있는 새로운 보기가 열립니다. 예를 들어, 생존 상태에 따라 승객의 연령 분포를 보여주고 성별에 따른 색상으로 막대를 채색하는 히스토그램을 작성합니다. 물론, 나중에 사용할 수 있도록 저장할 수 있습니다.

SageMaker 스크린샷

데이터 흐름 보기로 다시 한 번 더 돌아가 데이터 세트 처리를 시작하기 위해 [변환 추가(Add transform)]를 선택합니다. 그러면 데이터 세트의 첫 행과 300개가 넘는 기본 제공 변환을 표시하는 새로운 보기가 열립니다.

SageMaker 스크린샷

Pclass(승객 클래스)는 범주 변수이며, 핫 인코딩을 사용하여 인코딩하기로 합니다. 그러면 서로 다른 차원을 나타내는 3개의 새로운 열이 생성되고 이를 미리 볼 수 있습니다. 원했던 그대로이므로, 이 변환을 적용합니다. 마찬가지로, Sex 열에 동일한 변환을 적용합니다.

SageMaker 스크린샷

그런 다음, 원래 Pclass 열을 삭제합니다. 동일한 변환을 사용하여 Name 열도 삭제합니다.

SageMaker 스크린샷

이러한 변환이 모델의 정확도를 높이는지, 아니면 낮추는지 빠르게 확인하기 위해 지금 모델을 훈련하는 분석을 생성할 수 있습니다. 바이너리 분류 문제이므로 SageMaker Data Wrangler는 F1 점수라고 하는 지표를 사용합니다. 0.749는 좋은 시작이며, 추가로 처리하면 확실히 정확도가 개선될 수 있습니다. 또한 어떤 피처(성별, 나이, 3등실 승객)가 예측 결과에 가장 많이 기여하는지 알 수 있습니다.

SageMaker 스크린샷

그런 다음, [내보내기(Export)] 보기로 이동하여 ML 프로젝트에 추가하기 위해 지금까지 생성한 모든 변환을 선택합니다.

SageMaker 스크린샷

여기에서는 [Python 코드(Python Code)]를 선택하여 Python 스크립트를 생성합니다. Amazon SageMaker Processing, Amazon SageMaker PipelinesAmazon SageMaker Feature Store에 대한 다른 옵션도 사용 가능합니다.

SageMaker 스크린샷

몇 초 후에 스크립트를 사용할 수 있습니다. ML 프로젝트에 그대로 추가할 수 있으며 데이터 준비 단계는 위에서 생성한 대화식 변환과 일치합니다.

SageMaker 스크린샷

시작하기
보다시피, Amazon SageMaker Data Wrangler에서는 실험 및 프로덕션에 즉시 사용할 수 있는 코드로 변환하기 전에 데이터 준비 단계를 대화식으로 쉽게 진행할 수 있습니다.

SageMaker Studio를 지원하는 모든 리전에서 이 기능을 사용하기 시작할 수 있습니다.

사용해보시고 여러분의 의견을 알려주세요. 언제든지 AWS 지원 담당자나 SageMaker에 대한 AWS 포럼을 통해 피드백을 보내 주시기 바랍니다.

– Julien

초기 테스트에 귀중한 도움을 주신 동료, Peter Liu에게 특별한 감사를 전합니다.