ML 프로젝트에는 머신러닝과 관련된 다양한 기술, 전문 지식, 책임을 가진 구성원이 있는 팀이 필요합니다. 다음은 일반적인 ML팀에서 가장 일반적인 역할입니다.
역할 | 지식 및 기술 | 주요 결과물 |
---|---|---|
ML 제품 관리자 | ML 제품 관리자는 ML의 강점과 약점, ML 개발 프로세스에 대해 깊이 이해하고 있습니다. 비즈니스 문제를 조화롭게 ML팀, 최종 사용자, 다른 이해관계자에게 도움이 될 수 있습니다 제품 비전을 수립하고, 사용 사례와 요구사항을 정의하며, 프로젝트를 계획하고 우선순위를 지정합니다. |
제품 요구사항 문서(PRD) |
엔지니어링 관리자 | 엔지니어링 관리자는 팀 우선순위를 설정, 전달, 달성하여 비즈니스 목표를 달성합니다. ML 제품 관리자와 마찬가지로 비즈니스 문제에 맞게 ML 솔루션을 조정합니다. 팀원에게 명확한 기대치를 설정하고 커리어와 교육을 지원하고, 전문성 개발에 관한 것입니다. |
설계 문서, 프로젝트 계획 및 성과 평가. |
데이터 과학자 | 데이터 과학자는 정량적 및 통계적 분석을 사용하여 데이터에서 통계와 가치를 추출합니다. 특성, 프로토타입 모델을 식별하고 테스트하는 데 도움이 되며 모델 해석 가능성을 높이는 데 도움이 됩니다. | 통계 분석을 통해 비즈니스 질문에 답하는 보고서 및 데이터 시각화 |
ML 엔지니어 | ML 엔지니어는 ML 모델을 설계, 빌드, 프로덕션화, 관리합니다. ML 기술과 권장사항에 대해 깊이 이해하고 있는 우수한 소프트웨어 엔지니어입니다. | 비즈니스를 충족하기에 충분한 예측 품질로 모델을 배포함 목표를 달성할 수 있습니다 |
데이터 엔지니어 | 데이터 엔지니어는 대량의 데이터를 저장, 집계, 처리하기 위한 데이터 파이프라인을 빌드합니다. 원시 데이터를 수집하고 모델 학습 및 제공에 유용한 형식으로 변환하기 위한 인프라와 시스템을 개발합니다. 데이터 엔지니어는 전체 ML 개발 프로세스 전반에서 데이터를 담당합니다. | 필요한 모니터링 및 알림이 포함된 완전히 프로덕션화된 데이터 파이프라인 |
개발자 운영(DevOps) 엔지니어 | DevOps 엔지니어는 ML 모델의 제공 인프라를 개발, 배포, 확장, 모니터링합니다. | 모델 동작에 대한 서비스, 모니터링, 테스트, 알림을 위한 자동화된 프로세스입니다. |
성공적인 ML 프로젝트에는 각 역할이 잘 반영된 팀이 있습니다. 소규모 팀의 경우 개인이 여러 역할에 대한 책임을 집니다
팀 관행 정립
ML 개발에서 역할, 도구, 프레임워크는 매우 다양하므로 우수한 프로세스 문서를 통해 일반적인 관행을 수립하는 것이 중요합니다. 예를 들어 한 엔지니어는 올바른 데이터를 얻는 것만으로도 모델 학습을 시작하기에 충분하다고 생각하고 책임감 있는 엔지니어가 데이터 세트가 익명처리되었는지 메타데이터와 출처를 정확하게 문서화해야 합니다. 엔지니어가 프로세스 및 디자인 패턴에 관한 공통 정의로 소통하면 혼란이 줄고 팀의 속도가 빨라집니다.
프로세스 문서
프로세스 문서는 팀의 도구, 인프라, 프로세스를 정의해야 합니다. ML 개발에 사용할 수 있는 다이어그램입니다 효과적인 프로세스 문서는 신규 및 기존 문서를 정렬하는 데 도움이 됩니다. 팀원들도 있습니다 다음과 같은 유형의 질문에 답변해야 합니다.
- 모델에서 데이터는 어떻게 생성되나요?
- 데이터를 검사, 검증, 시각화하는 방법
- 학습 데이터에서 입력 특성 또는 라벨을 어떻게 수정할까요?
- 데이터 생성, 학습, 평가 파이프라인을 맞춤설정하려면 어떻게 해야 하나요?
- 입력 특성 또는 라벨의 변경사항을 수용하도록 모델 아키텍처를 변경하려면 어떻게 해야 하나요?
- 테스트 예는 어떻게 얻을 수 있나요?
- 모델 품질을 판단하는 데 어떤 측정항목을 사용하나요?
- 프로덕션에서 모델을 출시하려면 어떻게 해야 하나요?
- 모델에 문제가 있는지 어떻게 알 수 있나요?
- Google의 모델은 어떤 업스트림 시스템에 종속되나요?
- SQL을 유지관리하고 재사용 가능하게 만들려면 어떻게 해야 하나요?
가능한 질문 더보기
모델미세 조정과 같이 동일한 파이프라인에서 서로 다른 데이터 세트로 모델을 학습할 수 있나요?
파이프라인에 새 테스트 데이터 세트를 추가하려면 어떻게 해야 하나요?
- </ph>
직접 만든 예시에서 모델의 예측을 확인하려면 어떻게 해야 하나요?
모델이 실수를 한 예시를 찾아서 검사하고 시각화하려면 어떻게 해야 하나요?
특정 문제에 가장 큰 책임이 있는 기능을 판단하려면 어떻게 해야 하나요? 무엇인가요?
비즈니스 실적에 가장 큰 영향을 미치는 기능은 어떻게 알 수 있나요? 예측을 수행하려고 할까요?
선택한 데이터 세트 또는 샘플에서 모델 예측을 계산하거나 표시하려면 어떻게 해야 하나요?
에 대한 모델 예측에 대한 표준 측정항목을 계산하려면 어떻게 해야 하나요? 어떻게 해야 할까요?
커스텀 측정항목을 개발하고 계산하려면 어떻게 해야 하나요?
오프라인에서 내 모델을 다른 모델과 비교하려면 어떻게 해야 하나요?
단일 개발 환경에서 여러 모델 평가에 대한 메타분석을 실행할 수 있나요?
현재 모델을 10개월 전 모델과 비교할 수 있나요?
- </ph>
좋은 모델을 만든 것 같습니다. 프로덕션에서 실행하려면 어떻게 해야 하나요?
새 모델이 프로덕션에서 올바르게 실행 중인지 확인하려면 어떻게 해야 하나요?
시간 경과에 따른 모델 평가 기록을 가져올 수 있나요?
모델에 문제가 있는지 어떻게 알 수 있나요?
모델에 관해 언급된 페이지/버그가 할당되었습니다. 어떻게 해야 하나요?
- </ph>
데이터 생성/학습/평가를 맞춤설정하려면 어떻게 해야 하나요? 어떻게 해야 할까요?
완전히 새로운 파이프라인을 언제 어떻게 만들어야 하나요?
- </ph>
데이터를 생성하려면 SQL이 필요합니다. 어디에 배치해야 하나요?
모델 서빙은 어떻게 작동하나요? 다이어그램이 있나요?
개발자가 알아야 하는, 모델이 종속되는 업스트림 시스템은 무엇인가요?
뭐가 있는지 모르겠어. 누구에게 어떻게 문의해야 하나요?
주의사항
'ML 권장사항'의 정의는 회사, 팀, 개인마다 다를 수 있습니다. 예를 들어 일부 팀원은 실험용 Colabs를 기본 결과물로 간주할 수 있고 다른 팀원은 R에서 작업하고 싶어 할 수 있습니다. 어떤 사람은 소프트웨어 엔지니어링에 열정을 가지고 있고, 다른 사람은 모니터링이 가장 중요하다고 생각하며, 또 다른 사람은 좋은 기능 프로덕션화 관행을 알고 있지만 Scala를 사용하고 싶어 합니다. 모든 사람은 자신의 관점에서 '옳은' 의견을 가지고 있으며, 올바르게 조종하면 이러한 다양한 의견이 시너지를 발휘할 수 있습니다. 그렇지 않으면 혼란스러울 수 있습니다.
팀이 사용할 도구, 프로세스, 인프라를 확립하기 전에 코드 한 줄 작성에 따라 프로젝트가 실패하는 경우와 일정보다 4분의 1 앞선 출시를 목표로 할 수 있습니다
실적 평가
ML에 내재된 모호성과 불확실성으로 인해 인사 관리자는 명확한 기대치를 설정하고 결과물을 조기에 정의해야 합니다.
기대치와 결과물을 결정할 때는 프로젝트나 접근 방식이 성공하지 못할 경우 어떻게 평가될지 고려하세요. 즉, 팀원의 성과가 프로젝트의 성공과 직접 연결되지 않는 것이 중요합니다. 예를 들어 팀원이 궁극적으로 실패한 솔루션을 조사하는 데 몇 주를 소비하는 경우가 많습니다. 이러한 고품질 코드, 철저한 문서화 및 효과적인 대응을 위해 평가에 긍정적으로 기여해야 합니다