# Ask HN: 머신 러닝 엔지니어들은 업무시간에 어떤 일 하나요?

> Clean Markdown view of GeekNews topic #15267. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15267](https://news.hada.io/topic?id=15267)
- GeekNews Markdown: [https://news.hada.io/topic/15267.md](https://news.hada.io/topic/15267.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-06-10T10:26:01+09:00
- Updated: 2024-06-10T10:26:01+09:00
- Original source: [news.ycombinator.com](https://news.ycombinator.com/item?id=40610794)
- Points: 36
- Comments: 4

## Summary

1. 머신 러닝 엔지니어들은 대부분의 시간을 데이터 정리, 데이터셋 결합, 피쳐 엔지니어링 등 데이터 준비 작업에 할애하며, 모델 훈련과 테스트는 상대적으로 적은 시간을 차지합니다.
2. 엔지니어들은 다양한 도구와 시스템을 구축하거나 수정하여 모델을 프로덕션 환경에 배포하고 유지 관리하며, 이 과정에서 많은 기술적 도전과 문제 해결을 경험합니다.
3. 머신 러닝 작업은 기술적 배경이 없는 사람들과의 협업을 통해 더 큰 가치를 창출할 수 있으며, 이는 엔지니어들에게 큰 보람을 줍니다.

## Topic Body

- 질문에 답변한 사람들 내용을 정리  
  
### schmookeeg   
- 현재 기계 학습 엔지니어로 일하면서 가장 좋아하는 부분은 기술적 배경이 없는 사람들과 협업하는 것임  
  - MS Outlook을 5번 중 3번 이상 열지 못하는 사람들도 자신의 전문 분야에 대해 놀랄만한 깊이와 통찰력을 가지고 있음  
  - 이는 매우 겸허하게 만듦  
- 기술적 배경이 없는 사람들은 나를 마법사로 보고, 나는 그들을 부두교 사제로 봄  
  - 우리가 좋아하는 것을 훈련시키고 예측할 때, 양쪽 모두에게 매우 보람 있음  
- 대부분의 모델링은 의료 관련임  
  - 청구, 처방전, 의사 소견, 생체 징후, 진단 영상 등의 방대한 데이터 레이크에서 인사이트를 이끌어냄  
  - 이 정보에 매우 쉽게 접근 가능하다는 것도 엄청남 (HIPAA는 제쳐두고)  
- 시간적 현실  
  - 일주일에 회의가 약 3시간 정도 걸림  
  - 업무 준비, ETL 문제 해결, 비즈니스를 위한 일회성 쿼리 수행 등에 3시간 정도 소요됨  
  - 나머지 시간은 수백만 달러 규모의 수익을 예측하는데 약간의 우위를 찾기위해 데이터를 탐색함  
    - 이는 마치 수학으로 월리를 찾는 것과 같음  
    - 그 월리 씬은 약 50TB 크기임 :D  
  
### burnedout_dc4e3   
- 2000년대 중반부터 머신 러닝을 해왔음  
- 절반의 시간은 모델 훈련과 사용을 위해 데이터를 정리하는 "데이터 파이프라인을 계속 운영"하는 데 소비됨  
- 또 다른 절반의 시간은 코딩 능력이 거의 없는 "AI 과학자"들을 위한 기술 지원에 소비됨   
  - 그들은 다양한 챗봇 서비스에 내용을 복사/붙여넣기 하는 데 시간을 보냄  
    - Python 패키지 설치 및 Git 사용 방법 등을 알려주는 것이 주된 일임  
  - 그들의 작업이 우리가 하고 있는 프로젝트에 어떻게 적용될 것인지에 대한 계획은 없음  
    - 그러나 트랜스포머 모델이 우리의 모든 데이터 처리 문제를 해결할 것이라고 주장함  
- 이 과대 광고 사이클이 끝날 때까지 새로운 일을 하지 않고 그만둘까 고민 중  
  
### tambourineman88  
- 머신 러닝을 공부할 때 예상과는 반대되는 현실  
  - 이 일의 95%는 데이터 정리, 데이터셋 결합, 그리고 피쳐 엔지니어링임  
  - 모델 적합과 테스트는 단지 5%에 불과함  
- 이 글에 대한 답글 #1  
  - 처음부터 지금까지 그래왔고, 앞으로도 계속될 것임, 아멘  
  - 스태프/책임자 레벨에서의 중요 사항  
    - 추론 모델에 의존하는 제품 기능과 데이터 캡처 사이의 "데이터 임피던스"를 유지하는 것이 중요함  
    - 이는 제품이나 기능이 변경되더라도 데이터 저장소와 훈련 코퍼스에 데이터를 공급하는 계측과 데이터 세분성이 깨지지 않도록 하기 위함임  
  - 강화 학습(RL) 문제에서의 중요 사항  
    - 상태와 행동 공간 튜플에 대해 올바른 변수가 캡처되었는지 확인하는 것이 중요함  
    - 그 다음으로는 보상 피드백을 위해 인터페이스나 환경 모델을 조정하는 방법을 찾는 것임  
  
### davedx  
- `pip install pytorch` 실행  
- 환경이 깨짐  
- Python 환경 수정에 4시간 소요  
- `pip install Pillow` 실행  
- Mac 북의 CPU 아키텍처에 맞지 않는다는 오류 발생  
- Python 관련 모든 것을 제거한 후 처음부터 다시 설치하는 데 4시간 더 소요  
- `pip install ...` 실행하려 했으나 퇴근 시간이 됨!  
  
### Xenoamorphous   
- 일반 소프트웨어 개발자인데, 필요에 의해 ML 작업을 해야 했음  
- "진짜" ML 전문가들이 확률적/경사하강법 결과와 사람들의 기대치를 어떻게 다루는지 궁금함  
- 일반 소프트웨어 작업에서는 동작하거나 동작하지 않고, 동작하지 않으면 이유를 설명하고 바라건대 고칠 수 있음  
- 그러나 ML에서는 "이 텍스트 분류기가 이 텍스트를 올바르게 분류하지 않은 이유는 무엇인가?"라는 질문을 받음  
  - 이에 대해 "임계값을 만족하기에 0.004점 부족했다"거나 "단어 선택이나 순서 때문에 만족하지 못했다"고 밖에 말할 수 없음  
  - 이는 모두를 불만족스럽게 만드는 것 같음  
  
### angarg12  
- 직책은 ML 엔지니어이지만 실제 업무는 거의 순수한 소프트웨어 엔지니어링에 가까움  
- 프로덕션 환경에서 ML 시스템을 지원하는 시스템 구축이 주된 업무  
  - 다른 사람들이 언급했듯이 주로 데이터 변환, 모델 훈련, 모델 서빙 등이 포함됨  
- 도구를 구축하거나 기존 시스템을 수정하여 과학자들이 업무를 수행할 수 있도록 지원하는 것도 업무에 포함됨  
- 그러나 외부를 보면 필자의 회사는 이례적인 것 같음   
- 업계에서는 ML 엔지니어에 대한 기대치가 데이터/응용 과학자가 하는 일(예: 모델 구축 및 테스트)과 더 잘 맞는 것으로 보임  
  - 이는 각 회사의 각 역할에 대한 기대에 많은 모호성을 야기함  
  
### runban   
- 높은 급여를 받는 청소부  
  - 더러운 데이터로는 제대로 된 결과를 얻을 수 없음  
  - 참고로 이 작업에는 Python보다 Perl이 훨씬 더 좋음  
- 높은 급여를 받는 마더보드 문제 해결사  
  - 수랭식 쿨링을 사용하더라도 H100들은 정말 뜨거워짐  
  - 전담 하드웨어 담당자가 없기 때문  
- 모두가 그렇듯이 제멋대로 굴러가는 제3자 종속성과 싸움  
	  
### primaprashant   
- 지난 5년 동안 MLE로 일해 왔으며, 다른 댓글에서 언급했듯이 대부분의 작업은 SWE와 유사함  
- 프로젝트 단계에 따라 일상적인 작업은 다양하지만, 다음 중 하나에 해당함:  
  - 이해관계자 및 TPM과의 협업, 데이터 분석을 통해 우선순위가 높은 비즈니스 문제 해결을 위한 가설 개발  
  - 비즈니스 문제를 ML 문제로 구성하고, ML 모델과 비즈니스 문제에 적합한 메트릭 생성  
  - 새로운 기능과 아이디어의 기술적 실현 가능성을 검증하기 위한 PoC 및 프로토타입 구축  
  - 아키텍처 및 기술적 의사 결정을 위한 설계 문서 작성  
  - 플랫폼 팀과 협력하여 새로운 ML 프로젝트와 기존 ML 프로젝트의 요구사항에 따라 데이터 파이프라인 설정 및 유지 관리  
  - 추론을 위한 ML 마이크로서비스 구축, 배포 및 유지 보수  
  - A/B 테스트 실행 및 사후 테스트 분석을 위한 설계 문서 작성  
  - ML 모델 재학습을 위한 파이프라인 설정  
  
### jackspawn  
- 시간의 50% 이상을 백엔드 엔지니어링에 할애함  
  - ML이 더 큰 API 내에서 사용되기 때문  
- 해당 API의 엔드 투 엔드 경험에 대한 책임을 짐   
  - 따라서 시간 대비 최상의 가치를 제공하는 것은 무엇이든 수행함  
  - 이는 종종 ML 모델과는 아무 관련이 없음  
  
### mardifoufs  
- 추론 코드 최적화, 훈련된 모델 "제품화" 작업을 수행함  
- 현재는 클라우드 서비스가 아직 일반적으로 사용되지 않는 산업에서 일하기 때문에 로컬 훈련 및 추론 작업 중  
  - LLM이 아니기 때문에 미리 만들어진 도구가 많지 않아 흥미로움  
  - 많은 것을 직접 만들어야 함  
- 데이터 품질 평가(로컬 부분이 도전적)부터 CUDA를 직접 사용하는 것까지 다양한 작업을 수행함  
  - 이미 CUDA를 기반으로 구축되어 활용할 수 있는 신호 처리 라이브러리가 있기 때문  
- 때로는 팀(연구원/MLE 혼합 팀) 내부 도구 구축도 포함됨  
  - 매우 틈새 분야이기 때문에 데이터와 추론을 시각화하기 위해 직접 구축해야 함  
- 도구 및 내부 소프트웨어 설계와 관련하여 완전한 자유가 있어 조직 내에서 많은 영향을 미칠 수 있었음   
- 즉흥적으로 구축한 도구 중 하나가 이제 주력 제품에도 탑재될 예정임  
  
### hirako2000  
- 주요 업무는 아니지만 대부분의 시간을 "이것저것 붙이는" 작업에 소비  
  - 기존 오픈 소스 조정  
  - 리소스 최적화 방법 파악  
  - 다른 데이터 세트에서 모델 재학습  
  - 엉성하게 작성된 Python 코드 실행 시도  
  - 누락된 요구사항 파일 추가  
  - 데이터 정리  
- 이미 수년 전에 수행되지 않은, ML로 실제로 유용하게 해결할 수 있는 것이 무엇일지 고민함  
- 최신 GPU 가격을 확인하고, 호스팅 제공업체에서 비싼 시간을 빌리는 것보다 GPU를 구입하는 것이 가치 있는지 계산함  
- 머리가 아플 때까지 논문을 읽음   
  - 초록을 읽고 중간에 있는 몇 개의 다이어그램을 훑어보는 데 시간이 걸림  
  
### tenache  
- 머신러닝을 공부하고 원래 그 역할을 위해 고용되었지만, 회사가 방향을 바꾸어 현재는 LLM 작업 중  
- 대부분의 시간을 다음과 같은 작업에 할애함:  
  - 다양한 LLM의 작동 방식 파악  
  - 최적의 매개변수 찾기  
  - RAG(Retrieval-Augmented Generation) 수행 방법  
  - 다른 봇과의 통합 방법  
  
### trybackprop   
- 주어진 일주일 동안 일반적으로 다음과 같은 업무를 수행함:  
- 15%: 기술 토론 회의 또는 1:1 미팅  
  - 일반적으로 모델에 대한 아이디어, 계획 또는 ML 제품 지원에 대해 논의함  
- 40%: ML 개발  
  - 프로젝트 초기 단계에서는 제품 요구사항을 이해함  
  - 제품/비즈니스 목표 달성에 도움이 될 수 있는 ML 모델이나 알고리즘을 팀과 논의함  
  - 분석가와 데이터 과학자로부터 기존 데이터셋을 수집함  
  - 이 데이터셋을 사용하여 학습 및 검증 데이터셋을 생성하는 파이프라인을 만듦  
  - 학습/검증 데이터셋이 채워지기를 기다리는 동안(최대 2주 소요), 개발 단계가 더 앞서거나 뒤쳐진 다른 프로젝트에 동시에 작업함  
  - 새로운 모델(PyTorch로 작성)에도 작업하고, 소량의 데이터로 테스트하여 오프라인 성능을 평가하고, 기대한 대로 작동하는지 여부를 평가함  
  - 모델을 사용하여 제품 정보를 채우는 몇 가지 수동 테스트를 실행하여 모델의 건전성을 확인함 (대규모 실험 없이는 자신과 팀원의 직감에 의존할 수밖에 없음)  
  - 학습/검증 데이터셋이 채워지면 대량의 데이터에 대해 모델을 학습시키고, 오프라인 결과를 확인하고, 문제가 있으면 모델을 조정하거나 아키텍처를 변경함  
  - 오프라인 결과가 양호하거나 좋아 보이면 실험을 위해 모델을 프로덕션에 배포함  
  - 동시에 구축한 새 모델의 테스트를 위해 제품/인프라 코드를 변경할 수 있음  
  - 실험을 실행하고 트래픽을 천천히 늘려 1-5% 할당이 되면 몇 주 또는 한 달 동안 실행함  
  - 한편, 결과를 관찰하고 모든 관련 파이프라인을 모니터링하여 모델이 적절하게 훈련되도록 하여 예기치 않은 인프라/버그/제품 요인으로 인해 실험 결과가 변경되지 않도록 함   
  - 결과가 예상대로 보이고 초기 가설과 일치하면 팀과 출시 여부를 논의하고, 출시하기로 결정하면 출시함!   
    - (참고: 모델 개발에는 특징 작성, 데이터셋 준비, 분석, ML 모델 자체 생성, 제품/인프라 코드 변경 구현 등이 포함됨)  
- 20%: 유지 관리   
  - 새 모델을 개발하고 있다고 해서 기존 모델을 무시하는 것은 아님  
  - 매일 확인하여 성능이 저하되거나 예기치 않은 방식으로 성능이 변경되지 않았는지 확인함   
  - 또한 파이프라인을 수정하고 더 효율적으로 만듦  
- 15%: 연구 논문 및 기술 습득  
  - AI/ML 세계가 빠르게 변화하고 있어 지속적으로 새로운 연구 논문을 읽고 최신 상태를 유지하기 위해 가정에서 새로운 기술을 테스트함  
  - 재미있어서 부담스럽지 않음  
  - 최신 상태를 유지하기 위한 일로 보지 않음   
- 10%: 내부 연구  
  - 팀이나 회사 내 다른 제품에 대해 더 배우고, 우리 팀이 어떻게 도울 수 있는지 또는 그들로부터 어떤 기술/기법을 빌릴 수 있는지 알아보는 데 이 시간을 사용함  
  - 또한 지난 6개월/1년 동안의 작업을 되돌아보면서 얻은 통찰력을 적는 데도 이 시간을 사용함

## Comments



### Comment 26350

- Author: ohyecloudy
- Created: 2024-06-17T22:30:36+09:00
- Points: 1

'기술적 배경이 없는 사람들은 나를 마법사로 보고, 나는 그들을 부두교 사제로 봄' 표현이 재미있네요.

### Comment 26180

- Author: nutella
- Created: 2024-06-12T13:48:38+09:00
- Points: 1

데이터... 데이터... 공감가네요

### Comment 26105

- Author: halfenif
- Created: 2024-06-10T17:23:10+09:00
- Points: 2

막연하게 그러고들 있을거라고 생각한 그대로군요.

### Comment 26096

- Author: tttttaa
- Created: 2024-06-10T10:33:43+09:00
- Points: 1

흥미로운 내용이네요!
