# 수업계획서

## 과정 설명

이 수업은 실제 운영 환경에서 기계 학습 시스템의 설계, 구현 및 관리에 대한 실질적인 측면을 다룹니다. 본 과정은 학생들에게 기계 학습 워크플로를 기존 소프트웨어 개발 및 운영 프로세스와 원활하게 통합하는 데 필요한 기술을 제공합니다. 이 과정에서는 DevOps, MLOps 및 보안 관행을 강조합니다. 학생들은 실습 프로젝트를 통해 dot 파일, git, Docker, Kubernetes, CI/CD 파이프라인, Weights & Biases 등 첨단 도구와 방법론을 사용하여 강력한 기계 학습 모델을 구축, 배포하고 유지 관리합니다. 또한, 이 과정은 학생들에게 GitOps, DevSecOps 및 LLMOps의 새로운 분야를 소개하여 실제 기계 학습 애플리케이션의 복잡성에 대비합니다.

## 학습 목표

이 과정을 성공적으로 마치면 학생들은 다음을 수행할 수 있습니다.

- 확장성, 효율성 및 보안을 보장하면서 운영 환경에서 고급 기계 학습 시스템을 설계, 구축 및 배포.
- 기계 학습 프로젝트를 보다 광범위한 소프트웨어 개발 및 IT 운영 (DevOps 및 MLOps)에 통합하는 방법 탐색.
- 기계 학습 워크플로에서 지속적인 통합/지속적인 배포 (CI/CD), 실험 추적, 모델 버전 관리 및 보안을 위한 필수 도구 및 사례의 사용을 마스터.
- 컨테이너화, 서버리스 아키텍처 및 클라우드 컴퓨팅을 활용하여 안전하고 재현 가능하며 효율적인 기계 학습 파이프라인 구현.

## 선수 조건

- Python 프로그래밍 및 기본 머신러닝 개념에 대한 숙련도.
- 소프트웨어 개발 관행 및 도구에 대한 기본 이해.

## 과정 개요

### 1주차: 머신러닝 시스템 디자인 소개

**개요**:

- 머신러닝 시스템 아키텍처 개요.
- 운영환경에서 머신러닝 모델을 배포하는 도전 과제.

**핵심 학습 성과**:

- 머신러닝 시스템의 구성 요소 및 아키텍처 이해.
- 운영환경에서 모델을 배포할 때 발생하는 도전 과제 식별.

### 2주차: MLOps 및 DevOps 소개

**개요**:

- MLOps의 기초 및 중요성.
- 머신러닝에 적용된 DevOps 원칙.

**핵심 학습 성과**:

- 머신러닝 수명 주기에서 MLOps의 중요성 파악.
- 머신러닝 프로젝트에 DevOps 원칙 적용.

### 3주차: 머신러닝을 위한 Git 및 GitOps

**개요**:

- Git을 사용한 버전 관리 모범 사례.
- 머신러닝 프로젝트에 GitOps 적용 소개.

**핵심 학습 성과**:

- 머신러닝 맥락에서 Git으로 버전 관리 숙달.
- 머신러닝 워크플로우에서 GitOps 적용 이해.

### 4주차: 머신러닝에서의 보안 관행(DevSecOps)

**개요**:

- 머신러닝 모델에 대한 보안 고려 사항.
- 머신러닝 맥락에서 DevSecOps 소개.

**핵심 학습 성과**:

- 머신러닝에 특정한 보안 고려 사항 식별.
- 머신러닝에 적용된 DevSecOps 원칙 이해.

### 5주차: Dotfiles 및 Dotdrop을 사용한 효율적인 환경 관리

**개요**:

- dot 파일을 사용한 개발 환경 관리.
- dotfiles 관리를 위한 Dotdrop 설정.

**핵심 학습 성과**:

- dot 파일을 사용하여 개발 환경을 효율적으로 관리.
- dotfiles 관리를 위한 Dotdrop 구현.

### 6주차: 개발을 위한 안전한 설정(SSH, GPG, AGE)

**개요**:

- 머신러닝 시스템을 위한 보안 프로토콜.
- 안전한 개발을 위한 SSH, GPG, AGE 실용적 설정.

**핵심 학습 성과**:

- 머신러닝 프로젝트에서 안전한 통신 프로토콜 구현.
- 개발 보안을 위한 SSH, GPG, AGE 설정.

### 7주차: 고급 버전 관리 및 프로젝트 관리

**개요**:

- GitHub 설정 및 워크플로우 최적화.
- 머신러닝 프로젝트에서 비밀 안전하게 관리를 위한 SOPS, Pass 및 Passage 사용.

**핵심 학습 성과**:

- 머신러닝 프로젝트를 위한 GitHub 워크플로우 최적화.
- 머신러닝 프로젝트에서 비밀을 안전하게 관리.

### 8주차: ML을 위한 지속적 통합 및 지속적 배포(CI/CD)

**개요**:

- 머신러닝 프로젝트에서 CI/CD 파이프라인 설정.
- 머신러닝을 위한 Dockerfiles 및 컨테이너 관리.

**핵심 학습 성과**:

- 머신러닝 프로젝트를 위한 CI/CD 파이프라인 구축.
- 머신러닝 배포를 위한 Dockerfiles 및 컨테이너 활용.

### 9주차: 컨테이너화 및 오케스트레이션

**개요**:

- ML 애플리케이션을 위한 Docker 및 containerd 심층 탐구.
- 머신러닝 모델을 위한 Kubernetes 오케스트레이션.

**핵심 학습 성과**:

- 머신러닝 애플리케이션을 위한 컨테이너화 기법 숙달.
- 머신러닝 모델 오케스트레이션을 위한 Kubernetes 구현.

### 10주차: 재현 가능한 ML 파이프라인 구축

**개요**:

- 데이터 버전 관리를 위한 DVC 소개 및 모범 사례.
- Weights & Biases를 사용한 실험 추적 및 모델 버전 관리.

**핵심 학습 성과**:

- 데이터 및 모델 버전 관리를 위한 DVC 구현.
- 실험 추적 및 모델 버전 관리를 위한 Weights & Biases 사용.

### 11주차: 운영환경에서의 모니터링 및 지속 학습

**개요**:

- Grafana를 사용한 모니터링 솔루션 구현.
- 지속적 학습 및 모델 업데이트 전략.

**핵심 학습 성과**:

- 머신러닝 모델을 위한 모니터링 솔루션 배포.
- 지속적 학습 및 모델 개선을 위한 전략 적용.

### 12주차: 데이터 관리 및 실험

**개요**:

- 효율적인 훈련 데이터 관리 및 주석 기법.
- Weights & Biases를 사용한 고급 실험 추적.

**핵심 학습 성과**:

- 효과적인 데이터 관리 및 주석 기법 구현.
- 실험 추적을 위한 Weights & Biases의 고급 활용.

### 13주차: 서버리스 머신러닝 및 LLMOps

**개요**:

- ML 배포를 위한 서버리스 컴퓨팅 소개.
- 가벼운 모델을 배포하기 위한 LLMOps 개요.

**핵심 학습 성과**:

- 머신러닝 맥락에서 서버리스 컴퓨팅 이해.
- 효율적인 모델 배포를 위한 LLMOps 개념 파악.

### 14주차: 실제 애플리케이션 및 사례 연구

**개요**:

- LangChain 및 Gradio를 사용한 음성 기반 챗봇 배포.
- MLOps 도전 과제 및 해결책에 대한 업계 전문가의 강연.

**핵심 학습 성과**:

- 과정 개념을 적용하여 실제 머신러닝 애플리케이션 배포.
- 업계 전문가로부터 실제 MLOps 도전 과제 및 해결책 학습.

### 15주차: 최종 프로젝트

**개요**:

- 과정 학습을 통합하여 클라우드 서버에 머신러닝 애플리케이션 개발 및 배포.

**핵심 학습 성과**:

- 머신러닝 시스템을 설계, 구축 및 배포하는 능력 시연.
- 실제 프로젝트에 MLOps, DevOps 및 보안 관행 통합.

## 평가

- 수업 참여: 20%
- 과제: 30%
- 학기 프로젝트: 50%

## 교재 및 자료

필수 교재는 없습니다. 다음의 자료가 제공됩니다:

- 강의노트: https://lecture.entelecheia.ai/lectures/mlops/index.html
