2P by GN⁺ | ★ favorite | 댓글 1개
  • CMU의 17-445/17-645/17-745 Machine Learning in Production / AI Engineering Spring 2025 강좌는 ML 모델을 실제 배포·운영 가능한 소프트웨어 제품으로 만드는 과정을 다룸
  • 핵심은 데이터 과학자와 소프트웨어 엔지니어가 함께 일할 수 있는 공통 이해이며, 모델 오류를 전제로 요구사항·설계·배포·운영·품질보증을 연결함
  • 강의는 잘못된 예측 대비, MLOps, A/B 테스트와 카나리 릴리스, 데이터 품질·개념 드리프트·피드백 루프 감지, 테스트·디버깅, 공정성·프라이버시·안전성을 폭넓게 다룸
  • 학생들은 100만 사용자 규모의 영화 추천 서비스를 그룹 프로젝트로 구축·배포·평가·유지보수하며, Kafka, Jenkins, Prometheus, Grafana, Docker 등도 실습함
  • 기본 ML 경험과 프로그래밍 능력은 기대되지만 소프트웨어 엔지니어링 경험은 필수 아님; 강의 자료·과제·교재가 공개되어 자기학습과 교육 자료로 활용 가능함

강좌 목표와 대상

  • Machine Learning in Production / AI Engineering는 ML 모델이나 프롬프트로 예측을 만드는 단계 이후를 다루는 강좌임
    • 모델을 제품으로 전환하고 실제 환경에 배포함
    • 품질에 대한 신뢰를 확보함
    • 규모 있게 운영하고 유지보수함
  • Spring 2025 강좌는 어느 정도의 데이터 과학 경험을 가진 학생을 대상으로 설계됨
    • 예: ML 강좌 수강, sklearn 사용 경험
    • 기본 Python 프로그래밍과 Unix 셸 사용 능력이 기대됨
    • 테스트, 요구사항, 아키텍처, 프로세스, 팀 경험 같은 소프트웨어 엔지니어링 배경은 요구하지 않음
  • 향후 이 강좌는 적어도 매년 봄 학기에 제공될 예정이며, 일부 가을 학기에도 열릴 수 있음
    • 여름 학기 제공은 예정되어 있지 않음

공개 자료와 참고 리소스

생산 ML 시스템에서 다루는 질문

  • 잘못된 예측에 대비한 설계

    • 모델이 틀릴 수 있는 상황에서도 시스템이 어떻게 동작해야 하는지 다룸
    • 가능한 실수에도 안전성과 보안을 유지하는 방법을 다룸
    • 실제 환경에서 동작하는 사용자 인터페이스와 전체 시스템 설계를 함께 봄
  • 프로덕션 배포와 업데이트

    • 모델을 안정적으로 배포하고 업데이트하는 방법을 다룸
    • 전체 ML 파이프라인을 테스트하는 방법을 다룸
    • MLOps 도구로 배포 과정을 자동화하고 확장함
    • A/B 테스트와 카나리 릴리스 같은 프로덕션 실험을 다룸
    • 데이터 품질 문제, 개념 드리프트, 피드백 루프 감지를 다룸
  • 확장 가능한 ML 시스템

    • 대규모 학습 데이터, 텔레메트리 데이터, 사용자 요청을 처리하는 시스템 설계를 다룸
    • 스트림 처리, 배치 처리, 람다 아키텍처, 데이터 레이크 같은 선택지를 비교함
  • 테스트와 디버깅

    • 모델 예측 품질을 프로덕션에서 평가하는 방법을 다룸
    • 모델만이 아니라 ML 기반 전체 시스템을 테스트함
    • 소프트웨어 테스트, 자동 테스트 케이스 생성, 시뮬레이션, 지속적 통합의 교훈을 ML 프로덕션 테스트에 적용함
  • 정확도 외 품질 속성

    • 학습·추론 지연시간, 운영 비용, 확장성, 설명가능성, 공정성, 프라이버시, 견고성, 안전성을 다룸
    • 오프라인 동작 필요 여부와 모델 업데이트 빈도도 고려함
    • 비즈니스 프로덕션 환경에서 중요한 품질 요구사항을 식별하고 충돌과 트레이드오프를 조정함

사례 연구와 그룹 프로젝트

  • 강의에서 다루는 사례 연구는 다양한 ML 기반 제품을 포함함
    • 자동 음성 전사
    • 웹캠 기반 실종 아동 분산 탐지
    • 증강현실 즉시 번역
    • 암 탐지, 낙상 탐지, COVID 진단 등 의료·건강 서비스
    • PowerPoint 자동 슬라이드 레이아웃
    • 반자동 대학 입학 평가
    • 재고 관리
    • 스마트 플레이리스트와 영화 추천
    • 광고 사기 탐지
    • 배달 로봇과 스마트 주행 기능
  • 확장 그룹 프로젝트는 영화 추천 서비스를 구축·배포·평가·유지보수하는 작업임
    • 다소 현실적인 “프로덕션” 환경을 가정함
    • 사용자 규모는 100만 명임

학습 성과와 실습 도구

  • 수강 후 학생은 ML 컴포넌트를 포함한 프로덕션 시스템 설계에서 여러 품질 속성의 트레이드오프를 분석할 수 있어야 함
    • 정확도 외에도 운영 비용, 지연시간, 업데이트 가능성, 설명가능성을 다룸
  • ML 컴포넌트의 오류 가능성을 전제로 프로덕션 품질의 견고한 시스템을 구현할 수 있어야 함
  • 모델 학습, 서빙, 버저닝, 실험을 위한 결함 허용성과 확장성을 갖춘 데이터 인프라를 설계할 수 있어야 함
  • 테스트 자동화와 품질보증 기법으로 전체 ML 파이프라인 품질을 확보함
    • 데이터 품질
    • 데이터 드리프트
    • 피드백 루프
    • 모델 품질
  • 프로덕션에서 테스트·모니터링 가능한 시스템과 견고한 배포 파이프라인을 만들 수 있어야 함
  • 안전성, 보안, 프라이버시, 공정성, 사용성 같은 시스템 수준 요구사항을 고려함
  • 익숙해질 도구는 Apache Kafka, Jenkins, Prometheus, Grafana, Docker 및 여러 MLOps 도구임

강좌 운영과 일정

  • 강좌 번호는 17-445/17-645/17-745이며 12 유닛 강좌임
  • 모든 번호에서 강좌 내용은 같지만, PhD 수준의 17-745는 두 개의 숙제를 필수 research project로 대체함
  • Spring 2025 강의는 대면으로 진행됨
    • 강의: 월·수 2:00–3:20pm, PH 100
    • 랩: 금요일 여러 시간대와 장소에서 진행되며 원격 전용 랩도 있음
  • 강의 내용은 최근 몇 년 동안 대체로 안정적이지만, 구체적 주제와 도구는 새 연구와 도구에 맞춰 계속 업데이트됨
  • 예비 일정은 변경될 수 있으며, 학기 진행 중 요청 주제나 학습 지원을 반영해 조정될 수 있음
  • 강의 주제 흐름은 모델에서 AI 기반 시스템으로 전환, 요구사항 수집, 실수 대비, 모델 품질, 협업, 행동 기반 모델 테스트, 아키텍처와 설계, 모델 배포, 프로덕션 실험, 데이터 품질, 파이프라인 자동화, 확장, 운영 계획, 버저닝·출처·재현성, 기술 부채, 윤리·공정성, 설명가능성, 안전성, 보안·프라이버시 등으로 이어짐

평가와 과제 정책

  • 과제 제출, 채점, 토론, 질문, 공지, 보조 문서는 Canvas와 Gradescope를 사용함
  • 슬라이드는 강좌 페이지에 게시되며, Slack은 숙제와 프로젝트 관련 소통에 사용됨
  • GitHub는 그룹 작업 조율에 쓰임
  • 성적 비중은 다음과 같음
    • 개인 과제 35%
    • 그룹 프로젝트 30%
    • 중간고사 15%
    • 참여 5%
    • 랩 10%
    • 읽기 퀴즈 5%
    • 기말고사는 없음
  • 채점은 명확한 명세와 배점 기준을 제공하고, 각 부분은 통과/실패로 채점됨
    • 부분 점수는 없음
    • 일부 과제에는 소량의 보너스 점수가 있음
  • 등급 경계는 비교적 높게 설정됨
    • A+는 99% 초과
    • A는 96% 초과
    • A-는 94% 초과
    • B+는 91% 초과
    • B는 86% 초과
    • B-는 82% 초과
    • C는 75% 초과
    • D는 60% 초과

선수 지식과 수강 준비

  • 공식 선수과목은 없지만, 성공적인 수강을 위해 기본 ML 경험과 기본 프로그래밍 능력이 기대됨
  • ML 배경으로는 특징 추출, 모델 구축과 평가, 학습 기법이 언제 어떻게 작동하는지에 대한 기초 이해가 권장됨
    • Python과 Jupyter notebook 경험이 도움이 됨
    • 실무 프로젝트, 독학, 온라인 강좌도 충분할 수 있음
    • 익명·무채점 prerequisite knowledge check를 통해 배경지식을 점검할 수 있음
  • 프로그래밍은 기본 숙련이 필요함
    • Python 같은 언어의 기본 유창성
    • 해당 언어의 라이브러리 설치와 학습 능력
    • Unix 머신에 ssh 접속하고 기본 명령줄 작업을 수행하는 능력
    • Docker 같은 새 도구를 설치하고 학습하는 능력
  • 특정 프로그래밍 언어를 지정하지 않지만, 거의 모든 팀은 주로 Python을 사용함
  • Git, Docker, Grafana, Jenkins 같은 필수 도구는 랩에서 소개와 예시를 제공하며, 학생이 직접 문서와 튜토리얼을 읽고 익히는 것이 기대됨
  • Flask 같은 라이브러리로 웹 서비스를 작성하는 기본 사용법은 스스로 학습할 수 있어야 함
  • 소프트웨어 엔지니어링 경험은 선수 조건이 아님
    • 요구사항 공학, 소프트웨어 설계, 소프트웨어 테스트, 분산 시스템, 지속적 배포, 팀 관리 같은 주제는 강좌에서 다룸

수업 참여, 랩, 읽기

  • 강의는 대면으로 진행되며, 수업 참여가 학습 경험의 중요한 부분임
    • 강의 녹화는 Canvas에 best effort로 제공됨
    • 동기식 원격 수업 옵션은 없음
    • 랩은 녹화하지 않음
  • Slack은 수업 중 활동에도 사용되므로 수업 중 노트북, 태블릿, 휴대폰에서 접근 가능해야 함
  • 랩은 보통 도구를 소개하고 하나 이상의 명확한 산출물을 요구함
    • 랩 과제는 약 1시간 분량으로 설계됨
    • 산출물은 해당 주 랩 시간 중 TA에게 보여주면 통과/실패로 채점됨
    • 코드, 실행 데모, 구두 질문 답변이 포함될 수 있음
  • 랩은 부담 낮은 첫 실습으로 설계됨
    • 기대치에 미달하면 랩 시간 중 계속 수정할 수 있음
    • 명시적 사유나 토큰 사용 없이 랩 종료 후 제출은 받지 않음
  • 읽기 자료로는 Goeff Hulten의 _Building Intelligent Systems: A Guide to Machine Learning Engineering_를 많이 사용함
  • 자체 교재 Machine Learning in Production은 각 강의와 밀접하게 연결되어 있지만 필수 읽기 장이 아니라 보조 읽기로 안내됨
  • 대부분의 수업에는 읽기 과제가 있으며, Canvas의 읽기 퀴즈는 수업 전 제출해야 함
    • 퀴즈는 읽기와 관련된 개방형 질문 1개로 구성됨
    • 성실한 참여 여부를 통과/실패로 평가함

팀워크와 제출 유연성

  • 팀워크는 강좌의 필수 요소임
    • 그룹 프로젝트는 3–5명 팀으로 수행함
    • 팀은 강사가 배정함
    • 각 팀에는 TA 멘토가 배정됨
  • 팀 과제에는 team citizenship 기준의 동료 평가가 적용됨
    • 적극적이고 협조적인 팀원 역할을 평가함
    • 팀 멘토는 각 마일스톤 뒤 팀과 디브리핑하고 팀워크 개선 전략을 논의함
  • 각 학생은 학기 중 사용할 수 있는 개인 토큰 8개를 받음
    • 토큰 1개로 개인 숙제 1일 지각 제출 가능
    • 토큰 3개로 개인 숙제를 개선 또는 재작업해 짧은 회고와 함께 재제출 가능
    • 토큰 1개로 읽기 퀴즈 지각 제출 또는 재제출 가능
    • 토큰 1개로 랩 지각 완료 또는 재수행 가능
    • 남은 개인 토큰은 학기 말 참여 1일로 계산됨
  • 각 팀도 별도로 팀 토큰 8개를 받음
    • 마일스톤 기한 연장에 1일당 1개 사용 가능
    • 회고와 함께 마일스톤 재제출 시 3개 사용 가능
  • 개인 토큰과 팀 토큰은 서로 대체할 수 없음
  • 토큰이 없을 때 개인·팀 과제 지각 제출에는 시작된 하루마다 15% 감점이 적용됨

AI 도구, 협업, 연구 참여

  • 강좌 성격상 콘텐츠 생성 AI 도구 사용에 제한을 두지 않음
    • ChatGPT, Bard, Co-Pilot, Stable Diffusion 같은 도구 사용 가능
    • StackOverflow나 튜토리얼 같은 외부 코드 재사용도 가능함
  • 제출물의 정확성은 전적으로 학생 책임임
    • 콘텐츠 생성 도구는 그럴듯하지만 틀린 답을 만들 수 있으며, 그런 답은 점수를 받지 못함
    • 적용 가능한 라이선스 준수도 학생 책임임
  • 일반적인 학업 정직성 정책이 적용됨
    • 다른 학생의 해답을 복사하거나 함께 작성한 해답을 가져오면 안 됨
    • 다른 학생의 해답을 보거나 자신의 해답을 제공하거나 다른 학생이 볼 수 있는 곳에 두면 안 됨
    • 해답을 공개 GitHub에 올리는 것도 허용되지 않음
  • 랩에서는 다른 학생과 협업할 수 있지만, 읽기 퀴즈·숙제·시험에서는 협업할 수 없음
  • 부정행위의 최소 제재는 해당 전체 과제 0점이며, 대학 절차에 따라 추가 징계가 가능함
  • 강좌에서는 학생 과제를 분석하는 학술 연구도 수행함
    • 참여하지 않아도 성적이나 CMU 학업 경력에 영향이 없음
    • 연구 데이터에는 학생 성적이 포함되지 않음
    • 분석은 강좌 종료와 최종 성적 제출 후 비식별·집계 형태로 수행됨

댓글과 토론

Hacker News 의견들
  • 자료는 확실히 실용적임. Kafka, Docker, Kubernetes, Jenkins는 모두 업계 표준 도구이고, MLOps에 초점을 둔 점도 신선함
    단순히 모델을 만드는 데서 멈추지 않고 머신러닝과 실제 운영 시스템 사이의 간극을 다루는 과정이라 좋음. 설명가능성, 공정성, 모니터링까지 다루는 것도 마음에 듦. 다만 실습을 보면 중급 소프트웨어 엔지니어나 의욕 있는 초보도 튜토리얼로 익힐 수 있는 내용이 많아 보임. Git, Flask, 컨테이너 오케스트레이션은 유용하지만 운영 환경을 이미 겪어본 사람에게는 꽤 기본적임. 분산 학습 네트워킹 최적화나 대규모 추론 운영 같은 더 깊은 과제는 덜 다뤄지는 듯하고, 그룹 프로젝트에서 나오는지 궁금함. Jenkins는 널리 쓰이지만 CI/CD에 GitHub Actions나 ArgoCD 같은 더 현대적인 도구도 소개하는 편이 낫지 않나 싶음. Kubernetes도 필수지만 엣지 배포나 서버리스 시스템을 위한 대안·보완 도구까지 다루면 더 미래지향적일 수 있음

    • 너무 입문 수준이라고 보긴 어려움. 각 도구가 입문용이라 해도 전부 엮어서 실제로 동작하게 만드는 일은 어렵고, 학부 중후반 수준 자료로 보임
      Jenkins와 다른 CI/CD 프레임워크 사이에 개념적으로 큰 차이가 없다면, 인기 있는 것 중 하나를 골라 쓰면 되고 실제로 그렇게 한 것처럼 보임
    • 지금은 이게 컴퓨터과학 1학년의 진입점이 된 것 같음. 요즘 학생들은 머신러닝을 하고 싶어서 들어옴
      20년 전에는 Java로 데이터베이스를 만들며 배웠고, 그때도 “언젠가 폐기될 것 같은 도구”를 썼음. 그냥 새로운 출발점이 바뀐 셈임
    • 도구의 장기적 적합성은 나도 궁금함. 언젠가는 로컬 단일 머신이든 클라우드 분산 환경이든, 어떤 신경망이든 어떤 하드웨어에서든 실행해주는 도구가 나올 것 같음
  • 실습을 훑어보니 흥미로움. LLM 경험이 많지 않은 풀스택 개발자인데도 Git, Flask, Kafka, Kubernetes 같은 절반은 이미 익숙하고, 나머지 절반도 그냥 코드처럼 보임
    머신러닝 하면 떠올리던 복잡한 수학은 거의 없음. 그렇다면 MLOps는 박사 학위 없는 일반 개발자도 실제로 접근하기 어렵지 않은 분야라는 뜻인지 궁금함

    • 머신러닝을 많이 몰라도 MLOps에서 꽤 멀리 갈 수 있음. 팀에 시니어 머신러닝 엔지니어가 있다면 그들이 확장하고 구축하는 일을 돕게 됨
      예를 들어 시뮬레이션으로 대량의 합성 데이터를 만들려면, 편향 없는 데이터셋 생성 자체보다 배치 처리, 인코딩 형식, 데이터 적재 같은 문제에 더 관심이 갈 수 있음. 크라우드소싱으로 데이터를 수집·샘플링해야 한다면 저수지 샘플링 이론보다 온라인으로 빠르게 처리하고 비용·컴퓨팅을 효율적으로 쓰는 구현이 더 중요할 때가 많음
    • 맞는 말임. 그냥 그럴듯한 이름이 붙은 소프트웨어 엔지니어링임. 이 업무 분류는 DevOps보다 약간 더 나은 정도로 정리된 개념에 가까움
      대부분의 회사에서 머신러닝 엔지니어는 소프트웨어와 머신러닝 일부를 이해하는 엔지니어이고, 좋은 경우엔 둘 다 잘하지만 나쁜 경우엔 둘 다 못함
    • 박사 학위 요구는 실제 연구 직무이거나, 회사가 너무 많은 지원자 풀을 줄이기 위한 거름망 역할일 때가 많음
    • 보통 “운영” 역할에 박사 학위가 필요하다고 보진 않음
  • 이 과정은 데이터 품질을 거의 다루지 않고 16장에 가서야 나오는 듯함. 저자들이 산업 현장 경험이 얼마나 있는지 궁금함
    실제로는 시간의 90%를 데이터 품질과 데이터 정리에 쓰게 됨

    • 그건 별도의, 물론 매우 중요한 관심사라고 볼 수도 있음. 파이프라인 안에 존재하는 한 단계로 추상화하고, 그 자체의 관심사·과제·방법론을 따로 깊게 공부하게 하는 편이 낫다고 봄
      예를 들어 내 머신러닝 업무는 거의 전부 공학 시뮬레이션 회귀·대리모델 개발 맥락이라 데이터 품질이나 정리는 거의 문제가 안 됨. 대부분의 일은 데이터셋 생성과 모델 선택·학습·배포 쪽에 있음. 일마다 다름
    • 실제 현장의 데이터 품질은 엄청나게 큰 문제임. 큰 조직에서 계보와 품질 체계를 세우는 일을 이끌어봤는데, 나중에 붙이려면 엄청난 작업이 됨
      데이터 파이프라인이 원천 생성, 변환, 전처리 단계에서 굳어지기 전에 미리 갖춰두면 나중에 골치 아픈 일을 많이 줄일 수 있음
  • 학생이 아닌 사람들도 같이 따라갈 수 있는 곳이 있는지 궁금함

  • 아무나 등록할 수 있는지, 아니면 국내 최상위 컴퓨터과학 프로그램 중 하나에 합격해야 하는지 궁금함

    • 강의 노트, 책 챕터, 추가 읽을거리, 과제를 올려놨음
      좋아 보임. LLM Systems 과정도 마찬가지임
    • 할 수 있다고 믿음. 이 과정 강사 중 한 명임
  • 머신러닝 클러스터 인프라 구축 관련 문헌이나 강의를 아는 사람이 있는지 궁금함. 특히 스토리지 인프라 확장, 네트워킹, 스케줄링 접근법에 관심이 있음

    • 특별한 건 없음. 핵심 원리는 같고, 머신러닝이 가져오는 작업 부하 변화에 맞춰 조정해야 함
      스토리지는 모델이나 데이터 저장이라면 S3 같은 객체 저장소나 EFS, Lustre 같은 공유 네트워크 파일 시스템을 쓰면 됨. 대형 GPU 네트워킹에 대해서는 확정적인 자료를 잘 모름. 스케줄링은 이제 사실상 해결된 문제에 가까워서 무엇이든 동작함. 주기적으로 Docker 이미지 기반 작업을 실행하는 자체 코디네이터를 만들 수도 있고, 메시지 큐 기반 메타데이터·트리거 시스템을 붙이면 꽤 빨리 만들 수 있음. Airflow나 대규모 작업용 AWS Batch도 가능함. 빠뜨린 건 모델 서빙일 수 있음. 특히 추천 시스템에서는 어렵고 지연 시간에 민감하며, 지연 급증과 트래픽 급증에 취약함. 잘 작성된 Python 코드라도 한계에 꽤 빨리 부딪힐 수 있음
  • 이 과정이 올라와서 반가움. Christian은 사람으로서도 훌륭하고 작업도 좋음. 이 과정과 책의 초기 모습을 어느 정도 알고 있어서 강력히 추천할 수 있음

  • 여러 규모의 머신러닝 플랫폼과 시스템에서 9.5년 일해봤는데, 자료가 좋아 보임

    • REST CRUD 앱을 만들던 백엔드 개발자가 머신러닝 플랫폼 쪽으로 옮기려면 무엇을 추천하는지 궁금함
  • 과정 난이도를 과소평가하는 것일 수도 있지만, 입문 과정처럼 들림. 모델 설명가능성 도구 전까지는 대부분 꽤 직관적으로 보임
    그래도 대부분의 사용 사례에 업계 표준 도구를 쓰는 점은 좋다고 봄