모델 훈련 모범 사례 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

모델 훈련 모범 사례

Neptune ML 모델의 성능을 개선하기 위해 할 수 있는 일이 몇 가지 있습니다.

적절한 노드 속성 선택

그래프의 모든 속성이 기계 학습 작업에 의미가 있거나 관련이 있는 것은 아닙니다. 관련 없는 속성은 데이터를 내보내는 동안 제외해야 합니다.

다음은 몇 가지 모범 사례입니다.

  • 도메인 전문가를 활용하여 특성의 중요성과 이를 예측에 사용할 수 있는지 평가해 보세요.

  • 중복되거나 관련이 없다고 판단되는 특성을 제거하여 데이터의 노이즈와 중요하지 않은 상관관계를 줄이세요.

  • 모델을 만들 때 반복하세요. 진행하면서 특성, 특성 조합, 조정 목표를 조절하세요.

Amazon Machine Learning 개발자 안내서의 특성 처리는 Neptune ML과 관련된 특성 처리에 대한 추가 지침을 제공합니다.

이상값 데이터 포인트 처리

이상값은 나머지 데이터와 크게 다른 데이터 포인트입니다. 데이터 이상값은 훈련 프로세스를 망치거나 오도하여 훈련 시간이 길어지거나 모델의 정확도가 떨어지게 만들 수 있습니다. 정말 중요한 경우가 아니라면 데이터를 내보내기 전에 이상값을 제거해야 합니다.

중복된 노드와 엣지 제거

Neptune에 저장된 그래프에는 중복된 노드 또는 엣지가 있을 수 있습니다. 이러한 중복 요소는 ML 모델 훈련에 노이즈를 일으킬 수 있습니다. 데이터를 내보내기 전에 중복된 노드나 엣지를 제거하세요.

그래프 구조 조정

그래프를 내보낼 때 특성이 처리되는 방식과 그래프가 구성되는 방식을 변경하여 모델 성능을 개선할 수 있습니다.

다음은 몇 가지 모범 사례입니다.

  • 엣지 속성에 엣지 범주라는 의미가 있다면 경우에 따라 엣지 유형으로 바꾸는 것이 좋습니다.

  • 수치 속성에 사용되는 기본 정규화 정책은 min-max이지만, 다른 정규화 정책이 더 효과적인 경우도 있습니다. model-HPO-configuration.json 파일 요소에 설명된 대로 속성을 사전 처리하고 정규화 정책을 변경할 수 있습니다.

  • 내보내기 프로세스는 속성 유형에 따라 특성 유형을 자동으로 생성합니다. 예를 들어, String 속성을 범주형 특성으로 취급하고 FloatInt 속성을 수치형 특성으로 취급합니다. 필요한 경우 내보낸 후 특성 유형을 수정할 수 있습니다(model-HPO-configuration.json 파일 요소 참조).

하이퍼파라미터 범위와 기본값 조정

데이터 처리 작업은 그래프에서 하이퍼파라미터 구성 범위를 유추합니다. 생성된 모델 하이퍼파라미터 범위와 기본값이 그래프 데이터에 맞지 않는 경우 HPO 구성 파일을 편집하여 고유한 하이퍼파라미터 조정 전략을 만들 수 있습니다.

다음은 몇 가지 모범 사례입니다.

  • 그래프가 커지면 숨겨진 차원 기본 크기가 모든 정보를 저장할 만큼 충분히 크지 않을 수 있습니다. num-hidden 하이퍼파라미터를 변경하여 숨겨진 차원 크기를 제어할 수 있습니다.

  • 지식 그래프 임베딩(KGE) 모델의 경우 그래프 구조 및 예산에 따라 사용 중인 특정 모델을 변경하고 싶을 수 있습니다.

    TrainsE 모델로는 일대다(1-N), 다대일(N-1), 다대다(NN) 관계를 처리하기가 어려우며, DistMult 모델은 대칭 관계를 잘 처리하지 못합니다. RotatE는 모든 유형의 관계를 모델링하는 데 능숙하지만, 훈련 중에는 TrainsEDistMult보다 비용이 많이 듭니다.

  • 노드 식별과 노드 특성 정보가 모두 중요한 경우에는 `concat-node-embed`를 통해 Neptune ML 모델에 노드의 특성을 초기 임베딩과 연결하여 노드의 초기 표현을 가져오도록 지시해야 합니다.

  • 일부 하이퍼파라미터에 대한 성능이 상당히 좋으면 해당 결과에 따라 하이퍼파라미터 검색 공간을 조정할 수 있습니다.

Neptune ML의 모델 훈련 프로세스 조기 중단

조기 중단은 모델 성능을 저하시키지 않으면서 모델 훈련 실행 시간 및 관련 비용을 크게 줄이는 데 도움이 됩니다. 또한 모델이 훈련 데이터에 과적합되는 것을 방지할 수 있습니다.

조기 중단은 검증 세트 성능의 정기적인 측정에 달려 있습니다. 처음에는 훈련이 진행되면서 성능이 향상되지만, 모델이 과적합되기 시작하면 다시 성능이 저하되기 시작합니다. 조기 중단 기능은 모델이 과적합되기 시작하는 지점을 식별하고 해당 시점에서 모델 훈련을 중단합니다.

Neptune ML은 검증 지표 호출을 모니터링하고 가장 최근의 검증 지표를 마지막 n 평가의 검증 지표 평균과 비교합니다. 여기서 nwindow-for-early-stop 파라미터를 사용하여 설정된 숫자입니다. 검증 지표가 평균보다 나빠지면 Neptune ML은 모델 훈련을 중단하고 지금까지 중에서 최고의 모델을 저장합니다.

다음 파라미터를 사용하여 조기 중단을 제어할 수 있습니다.

  • window-for-early-stop   –   이 파라미터의 값은 조기 중단을 결정할 때 평균으로 구해야 할 최근 검증 점수 수를 지정하는 정수입니다. 기본값은 3입니다.

  • enable-early-stop   –   이 부울 파라미터를 사용하면 조기 중단 기능을 끌 수 있습니다. 기본적으로 해당 값은 true입니다.

Neptune ML의 HPO 프로세스 조기 중단

또한 Neptune ML의 조기 중단 기능은 SageMaker HPO 웜 스타트 기능을 사용하여 다른 훈련 작업에 비해 성과가 좋지 않은 훈련 작업을 중지합니다. 이 역시 비용을 절감하고 HPO의 품질을 개선하는 데 도움이 됩니다.

작동 방식에 대한 설명은 웜 스타트 하이퍼파라미터 조정 작업 실행을 참조하세요.

웜 스타트는 이전 훈련 작업에서 학습한 정보를 후속 훈련 작업으로 전달하는 기능을 제공하며, 다음과 같은 2가지 뚜렷한 이점을 제공합니다.

  • 첫째, 이전 훈련 작업의 결과를 바탕으로 새로운 조정 작업에서 검색할 우수한 하이퍼파라미터 조합을 선택합니다.

  • 둘째, 조기 중단으로 더 많은 모델 실행에 액세스할 수 있어 조정 시간이 단축됩니다.

이 기능은 Neptune ML에서 자동으로 활성화되며, 이를 통해 모델 훈련 시간과 성능 간의 균형을 맞출 수 있습니다. 현재 모델의 성능이 만족스러우면 해당 모델을 사용하면 됩니다. 그렇지 않다면 더 나은 모델을 찾기 위해 이전 실행 결과를 바탕으로 웜 스타트 처리된 HPO를 더 많이 실행해야 합니다.

전문 지원 서비스 받기

AWS는 Neptune 프로젝트에서 기계 학습의 문제를 해결하는 데 도움이 되는 전문 지원 서비스를 제공합니다. 문제가 생기면 AWS Support에 문의하세요.