안녕하세요! "AI 전문가 양성 과정"에 오신 것을 환영합니다. 이 과정은 여러분이 AI 기술을 활용하여 세상에 가치를 더하는 서비스를 직접 만들 수 있도록 안내하는 나침반이 될 것입니다.
안녕하세요! "AI 전문가 양성 과정"에 오신 것을 환영합니다. 이 과정은 여러분이 AI 기술을 활용하여 세상에 가치를 더하는 서비스를 직접 만들 수 있도록 안내하는 나침반이 될 것입니다.
## 1. 이 과정을 통해 무엇을 얻게 될까요? (Course-wide Learning Objectives)
## 1. 학습 목표 (Learning Objectives)
본 과정을 완주하면 여러분은 다음과 같은 핵심 역량을 갖춘 'AI 서비스 개발자'로 거듭나게 됩니다.
본 과정을 완주하면 여러분은 다음과 같은 핵심 역량을 갖춘 'AI 서비스 개발자'로 거듭나게 됩니다.
...
@@ -12,9 +12,10 @@
...
@@ -12,9 +12,10 @@
-**최신 MLOps 및 AI 심화 지식:**[Docker](./glossary.md#도커-docker)를 활용한 배포, MLOps, 모델 최적화, 생성형 AI, AI 윤리 등 프로덕션 레벨의 전문 지식을 습득합니다.
-**최신 MLOps 및 AI 심화 지식:**[Docker](./glossary.md#도커-docker)를 활용한 배포, MLOps, 모델 최적화, 생성형 AI, AI 윤리 등 프로덕션 레벨의 전문 지식을 습득합니다.
-**나만의 AI 포트폴리오 완성:** 자신만의 아이디어를 실제 동작하는 AI 서비스로 구현한 [캡스톤 프로젝트](./glossary.md#캡스톤-프로젝트-capstone-project)를 통해 실력을 증명할 수 있습니다.
-**나만의 AI 포트폴리오 완성:** 자신만의 아이디어를 실제 동작하는 AI 서비스로 구현한 [캡스톤 프로젝트](./glossary.md#캡스톤-프로젝트-capstone-project)를 통해 실력을 증명할 수 있습니다.
## 2. 과정에서 다룰 핵심 기술 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 과정은 Python 프로그래밍, 머신러닝/딥러닝 모델링, FastAPI를 이용한 API 서버 구축, MLOps, 생성형 AI 등 AI 서비스 개발에 필요한 모든 기술을 다룹니다. 수강생은 탄탄한 이론과 실전 프로젝트 경험을 통해 자신만의 AI 서비스를 만들 수 있는 풀스택 AI 개발자로 성장하는 것을 목표로 합니다.
-**Jupyter Notebook과 VS Code**를 실행하고, 기본적인 사용법을 익혀 코드를 작성하고 실행할 수 있습니다.
-**Jupyter Notebook과 VS Code**를 실행하고, 기본적인 사용법을 익혀 코드를 작성하고 실행할 수 있습니다.
-**개발 환경 설정 중 발생할 수 있는 일반적인 문제**와 그 해결 방법을 이해합니다. ([FAQ](./glossary.md#자주-묻는-질문-faq) 참고)
-**개발 환경 설정 중 발생할 수 있는 일반적인 문제**와 그 해결 방법을 이해합니다. ([FAQ](./glossary.md#자주-묻는-질문-faq) 참고)
## 2. 왜 개발 환경 설정이 중요할까요? (Introduction)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 AI 개발의 기초가 되는 개발 환경 설정 방법을 배웁니다. Anaconda를 설치하고, 가상 환경의 중요성을 이해하며, `conda` 명령어를 사용하여 프로젝트별로 격리된 개발 환경을 직접 만들어 봅니다. 마지막으로, Jupyter Notebook과 VS Code의 기본 사용법을 익혀 실제 코드를 작성하고 실행할 준비를 마칩니다.
멋진 AI 모델을 만들고 싶다는 부푼 꿈을 안고 코딩을 시작했지만, **"어? 내 컴퓨터에서는 왜 안 되지?"** 하는 순간을 마주한 적 있으신가요? 바로 개발 환경 설정의 중요성을 간과했기 때문일 가능성이 큽니다.
멋진 AI 모델을 만들고 싶다는 부푼 꿈을 안고 코딩을 시작했지만, **"어? 내 컴퓨터에서는 왜 안 되지?"** 하는 순간을 마주한 적 있으신가요? 바로 개발 환경 설정의 중요성을 간과했기 때문일 가능성이 큽니다.
...
@@ -29,7 +34,7 @@
...
@@ -29,7 +34,7 @@
이번 시간에는 이러한 개발 환경을 구성하는 핵심 도구인 **Anaconda, Python, Jupyter Notebook, VS Code**의 설치 및 기본 사용법을 익히고, 프로젝트별 독립적인 개발 공간인 **가상 환경**을 만드는 방법을 배웁니다.
이번 시간에는 이러한 개발 환경을 구성하는 핵심 도구인 **Anaconda, Python, Jupyter Notebook, VS Code**의 설치 및 기본 사용법을 익히고, 프로젝트별 독립적인 개발 공간인 **가상 환경**을 만드는 방법을 배웁니다.
## 3. 핵심 도구 소개 (Key Tools)
## 4. 핵심 도구 소개 (Key Tools)
우리의 AI 개발 여정에 함께할 핵심 도구들을 소개합니다. 이들은 각자의 역할과 강점을 가지고 있으며, 서로 협력하여 강력한 개발 환경을 구성합니다.
우리의 AI 개발 여정에 함께할 핵심 도구들을 소개합니다. 이들은 각자의 역할과 강점을 가지고 있으며, 서로 협력하여 강력한 개발 환경을 구성합니다.
...
@@ -43,7 +48,7 @@
...
@@ -43,7 +48,7 @@
이 도구들은 마치 **레고 블록**처럼 각자의 역할을 하며, 서로 연결되어 우리가 원하는 AI 서비스를 만드는 데 필요한 환경을 구성합니다.
이 도구들은 마치 **레고 블록**처럼 각자의 역할을 하며, 서로 연결되어 우리가 원하는 AI 서비스를 만드는 데 필요한 환경을 구성합니다.
## 4. 운영체제별 Anaconda 설치 가이드 (Installation Guide)
## 5. 운영체제별 Anaconda 설치 가이드 (Installation Guide)
이제 본격적으로 Anaconda를 설치하여 AI 개발 환경 구축의 첫발을 내디뎌 보겠습니다. Anaconda는 Python과 여러 데이터 과학 패키지를 포함하고 있어, 한 번의 설치로 많은 준비를 마칠 수 있습니다.
이제 본격적으로 Anaconda를 설치하여 AI 개발 환경 구축의 첫발을 내디뎌 보겠습니다. Anaconda는 Python과 여러 데이터 과학 패키지를 포함하고 있어, 한 번의 설치로 많은 준비를 마칠 수 있습니다.
...
@@ -51,7 +56,7 @@
...
@@ -51,7 +56,7 @@
<br/>
<br/>
### 4.1. Windows에 Anaconda 설치하기
### 5.1. Windows에 Anaconda 설치하기
1.**Anaconda 다운로드:**
1.**Anaconda 다운로드:**
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
...
@@ -106,7 +111,7 @@
...
@@ -106,7 +111,7 @@
<br/>
<br/>
### 4.2. macOS에 Anaconda 설치하기
### 5.2. macOS에 Anaconda 설치하기
1.**Anaconda 다운로드:**
1.**Anaconda 다운로드:**
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
...
@@ -149,7 +154,7 @@
...
@@ -149,7 +154,7 @@
<br/>
<br/>
### 4.3. Linux에 Anaconda 설치하기
### 5.3. Linux에 Anaconda 설치하기
1.**Anaconda 다운로드:**
1.**Anaconda 다운로드:**
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
*[Anaconda 공식 웹사이트](https://www.anaconda.com/products/distribution)에 접속합니다.
...
@@ -201,11 +206,11 @@
...
@@ -201,11 +206,11 @@
<br/>
<br/>
## 5. 가상 환경 다루기 (Managing Virtual Environments)
## 6. 가상 환경 다루기 (Managing Virtual Environments)
Anaconda 설치가 완료되었다면, 이제 프로젝트별로 독립적인 개발 환경인 **가상 환경**을 만드는 방법을 알아봅니다. 가상 환경을 사용하면 각 프로젝트에 필요한 라이브러리 버전들을 격리하여 관리할 수 있어, 의존성 문제를 해결하고 프로젝트의 재현성을 높일 수 있습니다.
Anaconda 설치가 완료되었다면, 이제 프로젝트별로 독립적인 개발 환경인 **가상 환경**을 만드는 방법을 알아봅니다. 가상 환경을 사용하면 각 프로젝트에 필요한 라이브러리 버전들을 격리하여 관리할 수 있어, 의존성 문제를 해결하고 프로젝트의 재현성을 높일 수 있습니다.
### 5.1. 가상 환경이란 무엇일까요?
### 6.1. 가상 환경이란 무엇일까요?
가상 환경은 마치 **\'나만의 작은 실험실\'**과 같습니다. 각 실험실마다 필요한 도구와 재료(라이브러리와 패키지)를 독립적으로 갖추고 있어서, 한 실험실에서의 작업이 다른 실험실에 영향을 주지 않는 것과 같은 원리입니다.
가상 환경은 마치 **\'나만의 작은 실험실\'**과 같습니다. 각 실험실마다 필요한 도구와 재료(라이브러리와 패키지)를 독립적으로 갖추고 있어서, 한 실험실에서의 작업이 다른 실험실에 영향을 주지 않는 것과 같은 원리입니다.
...
@@ -213,7 +218,7 @@ Anaconda 설치가 완료되었다면, 이제 프로젝트별로 독립적인
...
@@ -213,7 +218,7 @@ Anaconda 설치가 완료되었다면, 이제 프로젝트별로 독립적인
가상 환경을 사용하면, A 프로젝트를 위한 환경에는 `numpy 1.20`을, B 프로젝트를 위한 환경에는 `numpy 1.25`를 각각 설치하여 이러한 문제를 해결할 수 있습니다.
가상 환경을 사용하면, A 프로젝트를 위한 환경에는 `numpy 1.20`을, B 프로젝트를 위한 환경에는 `numpy 1.25`를 각각 설치하여 이러한 문제를 해결할 수 있습니다.
### 5.2. `conda`를 이용한 가상 환경 관리
### 6.2. `conda`를 이용한 가상 환경 관리
Anaconda는 `conda`라는 강력한 명령줄 도구를 제공하여 가상 환경을 손쉽게 생성, 활성화, 비활성화, 삭제할 수 있도록 지원합니다.
Anaconda는 `conda`라는 강력한 명령줄 도구를 제공하여 가상 환경을 손쉽게 생성, 활성화, 비활성화, 삭제할 수 있도록 지원합니다.
...
@@ -274,11 +279,11 @@ Anaconda는 `conda`라는 강력한 명령줄 도구를 제공하여 가상 환
...
@@ -274,11 +279,11 @@ Anaconda는 `conda`라는 강력한 명령줄 도구를 제공하여 가상 환
**💡 Tip:** 앞으로 진행할 모든 프로젝트는 **반드시 새로운 가상 환경을 생성하고 활성화한 후**에 시작하는 습관을 들이는 것이 좋습니다. 이는 프로젝트 간의 의존성 충돌을 막고, 깨끗하고 관리하기 쉬운 개발 환경을 유지하는 데 매우 중요합니다. 각 파트별 실습을 시작할 때마다 해당 파트에 맞는 가상 환경을 만드는 것을 권장합니다. 예를 들어, `part2_env`, `part3_env` 와 같이 말이죠!
**💡 Tip:** 앞으로 진행할 모든 프로젝트는 **반드시 새로운 가상 환경을 생성하고 활성화한 후**에 시작하는 습관을 들이는 것이 좋습니다. 이는 프로젝트 간의 의존성 충돌을 막고, 깨끗하고 관리하기 쉬운 개발 환경을 유지하는 데 매우 중요합니다. 각 파트별 실습을 시작할 때마다 해당 파트에 맞는 가상 환경을 만드는 것을 권장합니다. 예를 들어, `part2_env`, `part3_env` 와 같이 말이죠!
## 6. 개발 도구 실행 및 기본 사용법 (Running Tools)
## 7. 개발 도구 실행 및 기본 사용법 (Running Tools)
Anaconda와 가상 환경 설정이 완료되었다면, 이제 코드를 작성하고 실행할 개발 도구인 Jupyter Notebook과 VS Code를 사용해 보겠습니다.
Anaconda와 가상 환경 설정이 완료되었다면, 이제 코드를 작성하고 실행할 개발 도구인 Jupyter Notebook과 VS Code를 사용해 보겠습니다.
### 6.1. Jupyter Notebook / JupyterLab 사용하기
### 7.1. Jupyter Notebook / JupyterLab 사용하기
[Jupyter Notebook](./glossary.md#jupyter-notebook-주피터-노트북)은 코드, 텍스트, 이미지를 하나의 문서에 통합하여 대화형으로 작업할 수 있게 해주는 강력한 도구입니다. 데이터 분석, 머신러닝 모델링, 교육 자료 작성 등에 널리 사용됩니다. [JupyterLab](./glossary.md#jupyterlab-주피터랩)은 Jupyter Notebook의 기능을 확장한 차세대 인터페이스입니다.
[Jupyter Notebook](./glossary.md#jupyter-notebook-주피터-노트북)은 코드, 텍스트, 이미지를 하나의 문서에 통합하여 대화형으로 작업할 수 있게 해주는 강력한 도구입니다. 데이터 분석, 머신러닝 모델링, 교육 자료 작성 등에 널리 사용됩니다. [JupyterLab](./glossary.md#jupyterlab-주피터랩)은 Jupyter Notebook의 기능을 확장한 차세대 인터페이스입니다.
...
@@ -308,7 +313,7 @@ Anaconda와 가상 환경 설정이 완료되었다면, 이제 코드를 작성
...
@@ -308,7 +313,7 @@ Anaconda와 가상 환경 설정이 완료되었다면, 이제 코드를 작성
Jupyter Notebook/Lab은 코드 스니펫을 빠르게 테스트하고, 데이터 시각화 결과를 바로 확인하며, 아이디어를 정리하는 데 매우 효과적입니다.
Jupyter Notebook/Lab은 코드 스니펫을 빠르게 테스트하고, 데이터 시각화 결과를 바로 확인하며, 아이디어를 정리하는 데 매우 효과적입니다.
### 6.2. Visual Studio Code (VS Code) 사용하기
### 7.2. Visual Studio Code (VS Code) 사용하기
[VS Code](./glossary.md#visual-studio-code-vs-code)는 강력한 기능과 다양한 확장 프로그램을 제공하는 현대적인 코드 편집기입니다. Python 개발을 위한 훌륭한 환경을 제공하며, Jupyter Notebook 파일(`.ipynb`)도 직접 열고 편집할 수 있습니다.
[VS Code](./glossary.md#visual-studio-code-vs-code)는 강력한 기능과 다양한 확장 프로그램을 제공하는 현대적인 코드 편집기입니다. Python 개발을 위한 훌륭한 환경을 제공하며, Jupyter Notebook 파일(`.ipynb`)도 직접 열고 편집할 수 있습니다.
...
@@ -343,7 +348,7 @@ Jupyter Notebook/Lab은 코드 스니펫을 빠르게 테스트하고, 데이터
...
@@ -343,7 +348,7 @@ Jupyter Notebook/Lab은 코드 스니펫을 빠르게 테스트하고, 데이터
VS Code는 단순한 스크립트 작성부터 대규모 프로젝트 개발까지 모두 지원하는 강력하고 유연한 도구입니다. Jupyter Notebook과 함께 사용하면 더욱 효율적인 개발이 가능합니다.
VS Code는 단순한 스크립트 작성부터 대규모 프로젝트 개발까지 모두 지원하는 강력하고 유연한 도구입니다. Jupyter Notebook과 함께 사용하면 더욱 효율적인 개발이 가능합니다.
### 6.3. AI 기반 코드 에디터 활용 (Cursor)
### 7.3. AI 기반 코드 에디터 활용 (Cursor)
지금까지 우리는 AI 개발을 위한 기초 체력을 기르기 위해 Anaconda, VS Code 등 필수적인 도구들을 설치하고 가상 환경을 구축했습니다. 이제 개발 생산성을 극대화할 수 있는 강력한 도구인 **AI 기반 코드 에디터, Cursor**의 활용법에 대해 알아봅니다.
지금까지 우리는 AI 개발을 위한 기초 체력을 기르기 위해 Anaconda, VS Code 등 필수적인 도구들을 설치하고 가상 환경을 구축했습니다. 이제 개발 생산성을 극대화할 수 있는 강력한 도구인 **AI 기반 코드 에디터, Cursor**의 활용법에 대해 알아봅니다.
...
@@ -389,68 +394,13 @@ Cursor의 핵심 기능은 단축키 `Ctrl + K` (AI에게 질문/코드 생성)
...
@@ -389,68 +394,13 @@ Cursor의 핵심 기능은 단축키 `Ctrl + K` (AI에게 질문/코드 생성)
Cursor와 같은 AI 기반 도구를 적극적으로 활용하는 것은 이제 선택이 아닌 필수입니다. 이러한 도구를 통해 반복적인 작업을 자동화하고, 창의적인 문제 해결에 더 많은 시간을 투자하여 개발자로서의 가치를 더욱 높일 수 있습니다.
Cursor와 같은 AI 기반 도구를 적극적으로 활용하는 것은 이제 선택이 아닌 필수입니다. 이러한 도구를 통해 반복적인 작업을 자동화하고, 창의적인 문제 해결에 더 많은 시간을 투자하여 개발자로서의 가치를 더욱 높일 수 있습니다.
## 7. 자주 묻는 질문(FAQ) 및 트러블슈팅 (Troubleshooting)
## 8. 연습 문제 (Exercises)
1. AI 개발에서 가상 환경을 사용하는 것이 왜 중요한가요? 가상 환경을 사용하지 않았을 때 발생할 수 있는 문제점 2가지를 설명해보세요.
개발 환경 설정 과정에서 몇 가지 일반적인 문제에 직면할 수 있습니다. 다음은 자주 묻는 질문과 해결 방법입니다. ([용어집의 FAQ 섹션](./glossary.md#자주-묻는-질문-faq)도 참고하세요.)
2.`conda`를 사용하여 `my_test_env`라는 이름의 새로운 가상 환경을 만들고, 그 환경에 `numpy`와 `pandas` 라이브러리를 설치하는 데 필요한 명령어들을 순서대로 작성해보세요.
3. 현재 활성화된 `conda` 가상 환경을 비활성화하는 명령어는 무엇인가요?
**Q1: `conda` 명령어를 찾을 수 없다고 나옵니다. (`conda: command not found`)**
4. Jupyter Notebook과 VS Code는 각각 어떤 상황에서 사용하는 것이 더 효과적일지, 두 도구의 주요 특징과 차이점을 비교하여 설명해보세요.
> **A1:**
> * **Windows:** Anaconda Prompt를 사용하고 있는지 확인하세요. 일반 명령 프롬프트(cmd)나 PowerShell에서는 PATH 설정 없이는 `conda` 명령이 인식되지 않을 수 있습니다. Anaconda 설치 시 "Add Anaconda3 to my PATH environment variable" 옵션을 선택하지 않았다면 Anaconda Prompt를 사용해야 합니다.
> * **macOS/Linux:** `conda init <shell_name>` (예: `conda init zsh` 또는 `conda init bash`) 명령을 실행한 후 터미널을 재시작했는지 확인하세요. 또는 `source ~/.bashrc` (또는 `~/.zshrc`) 명령으로 쉘 설정을 다시 로드해보세요. 그래도 문제가 해결되지 않으면 Anaconda 설치 경로가 시스템 PATH에 올바르게 추가되었는지 확인해야 합니다.
> * **재설치 고려:** 드물지만 설치 과정에 문제가 있었을 수 있습니다. Anaconda를 완전히 제거하고 재설치하는 것을 고려해볼 수 있습니다.
**Q2: 가상 환경을 활성화했는데, 여전히 기본 Python 인터프리터가 사용되는 것 같습니다.**
> **A2:**
> * VS Code와 같은 IDE를 사용하는 경우, IDE 자체에서 올바른 Python 인터프리터(가상 환경의 Python)를 선택했는지 다시 한번 확인하세요. (VS Code 하단 상태 표시줄 또는 `Ctrl+Shift+P` > `Python: Select Interpreter`)
> * 터미널에서 `which python` (macOS/Linux) 또는 `where python` (Windows) 명령어를 실행하여 현재 사용 중인 Python 실행 파일의 경로를 확인하고, 이것이 활성화된 가상 환경 내의 경로인지 확인합니다.
**Q3: 패키지 설치 시 충돌이 발생하거나 특정 버전의 패키지를 찾을 수 없습니다.**
> **A3:**
> * **채널(channel) 변경 시도:** `conda install` 명령어에 `-c conda-forge <package_name>` 와 같이 `-c` 옵션을 사용하여 다른 채널(예: `conda-forge`)에서 패키지를 검색해볼 수 있습니다.
> ```bash
> conda install -c conda-forge <package_name>
> ```
> * **패키지 버전 명시:** 특정 버전이 필요하다면 `conda install <package_name>=<version>` 형식으로 버전을 명시하여 설치해보세요.
> * **새로운 가상 환경:** 때로는 기존 가상 환경에 설치된 다른 패키지와의 충돌일 수 있습니다. 문제가 지속되면, 깨끗한 새 가상 환경을 만들고 필요한 최소한의 패키지만 설치하여 테스트해보는 것이 좋습니다.
> * **pip 사용:** `conda`로 설치할 수 없는 패키지는 `pip` (Python의 기본 패키지 관리자)를 사용하여 설치할 수 있습니다. (가상 환경이 활성화된 상태에서 `pip install <package_name>`) 하지만 `conda` 환경에서는 가급적 `conda install`을 우선적으로 사용하는 것이 권장됩니다. `conda`와 `pip`를 혼용할 경우 패키지 관리가 복잡해질 수 있습니다.
**Q4: Jupyter Notebook/Lab 실행 시 "커널 오류(Kernel Error)"가 발생합니다.**
> **A4:**
> * **`ipykernel` 설치 확인:** 현재 활성화된 가상 환경에 `ipykernel` 패키지가 설치되어 있는지 확인하고, 없다면 설치합니다.
> ```bash
> conda activate <your_env_name> # 또는 이미 활성화했다면 생략
> conda install ipykernel
> ```
> * **가상 환경을 Jupyter에 등록:** 때로는 가상 환경을 Jupyter 커널로 명시적으로 등록해야 할 수 있습니다.
> 위 명령어 실행 후 Jupyter Notebook/Lab을 재시작하고, "New" 또는 "Kernel" > "Change kernel" 메뉴에서 해당 커널을 선택해보세요.
> * **Jupyter Notebook/Lab 재시작:** 간단히 재시작하는 것만으로도 문제가 해결될 때가 있습니다.
**Q5: VS Code에서 Python 확장 프로그램이 제대로 작동하지 않거나, "Pylance server crashed"와 같은 오류가 발생합니다.**
> **A5:**
> * **VS Code 및 확장 프로그램 최신 버전 확인:** VS Code와 Python, Pylance 확장 프로그램을 최신 버전으로 업데이트해보세요.
> * **설정 초기화 또는 재설치:** VS Code의 사용자 설정을 확인하거나, 문제가 지속되면 Python 관련 확장 프로그램을 제거했다가 다시 설치해보세요.
> * **다른 확장 프로그램과의 충돌 확인:** 다른 VS Code 확장 프로그램과 충돌이 원인일 수 있습니다. 의심되는 확장 프로그램을 일시적으로 비활성화하고 문제가 해결되는지 확인해보세요.
이 외에도 다양한 문제가 발생할 수 있습니다. 문제가 발생하면 **오류 메시지를 자세히 읽어보고, 구글 등 검색 엔진에 오류 메시지를 그대로 검색**하여 유사한 사례나 해결책을 찾아보는 것이 매우 중요합니다. 개발자 커뮤니티(예: Stack Overflow)에 질문을 올릴 때는 자신의 환경(OS, Anaconda 버전, Python 버전, 가상 환경 정보 등)과 발생한 문제, 시도해본 해결 방법 등을 최대한 자세하게 설명해야 좋은 답변을 얻을 수 있습니다.
## 8. 마치며 (Conclusion)
---
축하합니다! AI 개발을 위한 첫 관문인 개발 환경 설정을 성공적으로 마쳤습니다. 이제 여러분은 Python 코드를 작성하고 실행할 수 있는 안정적이고 효율적인 작업 공간을 갖게 되었습니다.
이번 시간에 배운 Anaconda, 가상 환경, Jupyter Notebook, VS Code는 앞으로 여러분의 AI 개발 여정에서 가장 중요한 도구들이 될 것입니다. 이 도구들을 능숙하게 다루는 것은 마치 훌륭한 장인이 자신의 연장을 자유자재로 사용하는 것과 같습니다.
**핵심 요약:**
***Anaconda**는 Python과 필수 데이터 과학 패키지를 쉽게 설치하고 관리할 수 있게 해주는 배포판입니다.
***가상 환경(`conda`)**은 프로젝트별로 독립된 개발 환경을 제공하여 의존성 문제를 해결하고 재현성을 높입니다. **모든 프로젝트는 새로운 가상 환경에서 시작하는 것을 강력히 권장합니다.**
***Jupyter Notebook/Lab**은 대화형 코드 실행 및 문서화에 유용하며, 특히 데이터 분석과 실험에 효과적입니다.
***VS Code**는 강력한 기능을 갖춘 코드 편집기로, Python 개발을 비롯한 다양한 프로그래밍 작업에 널리 사용됩니다.
환경 설정은 때때로 지루하고 복잡하게 느껴질 수 있지만, 이 단계를 탄탄하게 다져놓으면 앞으로의 학습과 개발 과정이 훨씬 수월해질 것입니다.
**다음 시간에는 본격적으로 Python 프로그래밍의 세계로 뛰어들어, AI 개발의 기초 체력을 기르기 위한 핵심 문법을 배우게 됩니다.** 준비되셨나요?
**⬅️ 이전 시간: [Part 0: 시작하며](../00_introduction/part_0_introduction.md)**
**➡️ 다음 시간: [Part 2: 파이썬 핵심 문법](../02_python_core_syntax/part_2_python_core_syntax.md)**
**➡️ 다음 시간: [Part 2: 파이썬 핵심 문법](../02_python_core_syntax/part_2_python_core_syntax.md)**
- 코드의 재사용성을 높이는 [함수](./glossary.md#함수-function)를 직접 정의하고, [매개변수](./glossary.md#매개변수-parameter와-인자-argument)와 [반환 값](./glossary.md#반환-값-return-value)을 활용할 수 있습니다.
- 코드의 재사용성을 높이는 [함수](./glossary.md#함수-function)를 직접 정의하고, [매개변수](./glossary.md#매개변수-parameter와-인자-argument)와 [반환 값](./glossary.md#반환-값-return-value)을 활용할 수 있습니다.
-[리스트 컴프리헨션](./glossary.md#리스트-컴프리헨션-list-comprehension)과 같은 파이썬다운(Pythonic) 코드를 작성할 수 있습니다.
-[리스트 컴프리헨션](./glossary.md#리스트-컴프리헨션-list-comprehension)과 같은 파이썬다운(Pythonic) 코드를 작성할 수 있습니다.
## 2. 핵심 키워드 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 파이썬 프로그래밍의 가장 기본적인 구성 요소들을 배웁니다. 데이터를 저장하는 변수, 다양한 종류의 데이터를 나타내는 자료형(숫자, 문자열, 불리언)을 시작으로, 여러 데이터를 묶어서 관리하는 리스트, 튜플, 딕셔너리, 셋의 사용법과 차이점을 익힙니다. 또한, `if`, `for`, `while`과 같은 제어문을 사용하여 코드의 흐름을 제어하고, 함수를 정의하여 코드의 재사용성을 높이는 방법을 학습합니다.
-[튜플 언패킹](./glossary.md#튜플-언패킹-tuple-unpacking)을 사용하여 간결하고 가독성 높은 코드를 작성합니다.
-[튜플 언패킹](./glossary.md#튜플-언패킹-tuple-unpacking)을 사용하여 간결하고 가독성 높은 코드를 작성합니다.
- 문제 상황에 가장 적합한 [자료구조](./glossary.md#자료구조-data-structure)를 선택하여 코드의 효율성을 높일 수 있습니다.
- 문제 상황에 가장 적합한 [자료구조](./glossary.md#자료구조-data-structure)를 선택하여 코드의 효율성을 높일 수 있습니다.
## 2. 핵심 키워드 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 파이썬의 기본 컬렉션(리스트, 튜플, 딕셔너리)을 더 깊이 있게 다룹니다. 리스트의 `sort()`와 `sorted()` 함수의 차이점을 배우고, `collections` 모듈의 특수 목적 컬렉션인 `Counter`, `defaultdict`, `deque`, `namedtuple`을 학습합니다. 이러한 자료구조들을 언제, 어떻게 사용해야 코드의 효율성과 가독성을 높일 수 있는지 이해하고, 튜플 언패킹과 같은 파이썬다운 기술을 익힙니다.
- 캡슐화로 데이터를 안전하게 보호하고, 추상화로 클래스의 필수 기능을 강제할 수 있습니다.
- 캡슐화로 데이터를 안전하게 보호하고, 추상화로 클래스의 필수 기능을 강제할 수 있습니다.
- 현실 세계의 문제를 객체들 간의 상호작용으로 모델링하여 체계적인 프로그램을 설계할 수 있습니다.
- 현실 세계의 문제를 객체들 간의 상호작용으로 모델링하여 체계적인 프로그램을 설계할 수 있습니다.
## 2. 핵심 키워드 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 대규모 프로그램을 체계적으로 설계하기 위한 객체 지향 프로그래밍(OOP) 패러다임을 학습합니다. 클래스(설계도)와 객체(제품)의 기본 개념을 이해하고, 상속을 통해 코드를 재사용하며, 다형성을 이용해 유연한 코드를 작성하는 방법을 배웁니다. 또한, 캡슐화와 추상화를 통해 데이터의 안전성과 코드의 확장성을 높이는 방법을 익힙니다. `@dataclass`, `super()`, 매직 메서드와 같은 파이썬의 OOP 관련 고급 기능들도 다룹니다.
- 여러 `DataFrame`을 `merge`나 `concat`을 사용해 비즈니스 목적에 맞게 결합할 수 있습니다.
- 여러 `DataFrame`을 `merge`나 `concat`을 사용해 비즈니스 목적에 맞게 결합할 수 있습니다.
- 데이터 분석 프로젝트에서 NumPy와 Pandas가 어떻게 상호작용하며 문제를 해결하는지 큰 그림을 이해합니다.
- 데이터 분석 프로젝트에서 NumPy와 Pandas가 어떻게 상호작용하며 문제를 해결하는지 큰 그림을 이해합니다.
## 2. 핵심 키워드 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 데이터 분석과 머신러닝의 필수 라이브러리인 NumPy와 Pandas를 학습합니다. NumPy를 사용하여 고성능 다차원 배열 `ndarray`를 다루고, 벡터화 연산과 브로드캐스팅을 통해 효율적인 수치 계산을 수행합니다. Pandas의 `DataFrame`을 이용하여 표 형식의 데이터를 읽고, `loc`/`iloc`으로 데이터를 정밀하게 선택하며, `groupby`로 데이터를 집계하고, `merge`/`concat`으로 여러 데이터를 결합하는 등 데이터 전처리의 핵심 기술들을 익힙니다.
- 피처 스케일링(StandardScaler, MinMaxScaler)과 같은 핵심 전처리 기법을 모델 성능 향상을 위해 적용할 수 있습니다.
- 피처 스케일링(StandardScaler, MinMaxScaler)과 같은 핵심 전처리 기법을 모델 성능 향상을 위해 적용할 수 있습니다.
- 데이터 불러오기부터 전처리, 훈련, 평가까지 이어지는 머신러닝의 전체 파이프라인을 코드로 구현할 수 있습니다.
- 데이터 불러오기부터 전처리, 훈련, 평가까지 이어지는 머신러닝의 전체 파이프라인을 코드로 구현할 수 있습니다.
## 2. 핵심 키워드 (Keywords)
## 2. 핵심 요약 (Key Summary)
이 파트에서는 데이터에서 패턴을 발견하고 미래를 예측하는 머신러닝의 전 과정을 학습합니다. Matplotlib와 Seaborn을 이용한 데이터 시각화로 숨겨진 인사이트를 찾는 법을 배우고, Scikit-learn 라이브러리를 통해 지도학습의 기본 개념과 모델 훈련/평가 프로세스를 익힙니다. 훈련/테스트 데이터 분리, 피처 스케일링 등 핵심적인 데이터 전처리 기법을 적용하여 모델의 성능을 향상시키는 방법을 실습하며, 머신러닝 프로젝트의 전체 파이프라인을 직접 구축해 봅니다.
**목표:** Transformer의 핵심 구성 요소인 Self-Attention, Multi-Head Attention, Feed-Forward Network를 PyTorch를 사용하여 밑바닥부터(from scratch) 구현함으로써 Transformer의 내부 동작 원리를 깊이 있게 이해합니다.
## 학습 목표 (Learning Objectives)
Transformer의 핵심 구성 요소인 Self-Attention, Multi-Head Attention, Feed-Forward Network를 PyTorch를 사용하여 밑바닥부터(from scratch) 구현함으로써 Transformer의 내부 동작 원리를 깊이 있게 이해합니다.
## 핵심 요약 (Key takeaways)
Transformer의 핵심 동작 원리를 이해하기 위해, PyTorch를 사용해 주요 구성 요소인 Scaled Dot-Product Attention, Multi-Head Attention, Feed-Forward Network를 직접 구현합니다. 이 과정에서 Q, K, V의 개념과 행렬 연산, 마스킹, 그리고 여러 Attention 헤드를 사용하는 이유를 학습합니다. 최종적으로 이들을 결합하고 잔차 연결(Residual Connection)과 Layer Normalization을 추가하여 완전한 Transformer Block 하나를 조립합니다.
**대상:** Python 및 PyTorch 기본 문법에 익숙하지만, Transformer의 내부 구조를 더 명확히 알고 싶은 개발자
**대상:** Python 및 PyTorch 기본 문법에 익숙하지만, Transformer의 내부 구조를 더 명확히 알고 싶은 개발자
순서가 중요한 순차 데이터를 처리하기 위해 RNN(순환 신경망)이 등장했습니다. RNN은 출력이 다시 입력으로 들어가는 순환 구조와 과거 정보를 기억하는 은닉 상태를 특징으로 하지만, 정보가 길어지면 과거를 잊는 장기 의존성 문제가 발생합니다. 이 문제를 해결하기 위해 등장한 LSTM은 셀 상태와 3개의 게이트(망각, 입력, 출력)를 통해 정보의 흐름을 정교하게 제어하여 효과적인 장기 기억을 가능하게 합니다. 이를 바탕으로 텍스트 생성, 시계열 예측 등 다양한 문제를 해결할 수 있습니다.
## 3. 도입: 과거를 기억하는 모델, RNN
## 3. 도입: 과거를 기억하는 모델, RNN
...
@@ -91,7 +91,7 @@ LSTM에는 3가지 주요 게이트가 있습니다.
...
@@ -91,7 +91,7 @@ LSTM에는 3가지 주요 게이트가 있습니다.
---
---
## 7. 직접 해보기 (Hands-on Lab): "hello" 예측하기
## 7. 연습 문제: "hello" 예측하기
간단한 RNN 모델을 만들어, "hell" 이라는 입력을 받았을 때 마지막 글자 "o"를 예측하도록 학습시켜 보겠습니다.
간단한 RNN 모델을 만들어, "hell" 이라는 입력을 받았을 때 마지막 글자 "o"를 예측하도록 학습시켜 보겠습니다.
RNN과 LSTM은 순차 데이터 처리의 혁신이었지만, 실제 적용 과정에서는 여러 가지 한계와 어려움에 부딪힙니다. 다음 시나리오들에 대해 함께 토론해보세요.
RNN과 LSTM은 순차 데이터 처리의 혁신이었지만, 실제 적용 과정에서는 여러 가지 한계와 어려움에 부딪힙니다. 다음 시나리오들에 대해 함께 토론해보세요.
...
@@ -211,20 +211,13 @@ RNN과 LSTM은 순차 데이터 처리의 혁신이었지만, 실제 적용 과
...
@@ -211,20 +211,13 @@ RNN과 LSTM은 순차 데이터 처리의 혁신이었지만, 실제 적용 과
- 양방향 LSTM의 개념을 비전공자에게 어떻게 설명할 수 있을까요? 왜 감성 분석이나 기계 번역 같은 Task에서는 문장의 전체 문맥(과거+미래)을 보는 것이 유리할까요?
- 양방향 LSTM의 개념을 비전공자에게 어떻게 설명할 수 있을까요? 왜 감성 분석이나 기계 번역 같은 Task에서는 문장의 전체 문맥(과거+미래)을 보는 것이 유리할까요?
- 반대로, 실시간 주가 예측이나 일기예보와 같은 Task에 양방향 모델을 사용하는 것이 왜 부적절하거나 불가능한지 토론해보세요.
- 반대로, 실시간 주가 예측이나 일기예보와 같은 Task에 양방향 모델을 사용하는 것이 왜 부적절하거나 불가능한지 토론해보세요.
## 8. 되짚어보기 (Summary)
-**RNN**: 순서가 있는 데이터를 다루기 위해, 네트워크의 출력이 다시 입력으로 들어가는 **순환** 구조를 가집니다. **은닉 상태**를 통해 과거의 정보를 기억합니다.
-**장기 의존성 문제**: RNN은 구조적 한계로 인해 먼 과거의 정보를 기억하기 어렵습니다 (**기울기 소실**).
-**LSTM**: **셀 상태**와 **게이트(망각, 입력, 출력)** 라는 정교한 메커니즘을 도입하여, 정보의 흐름을 효과적으로 제어하고 장기 기억을 가능하게 합니다.
-**활용**: RNN과 LSTM은 자연어 처리, 기계 번역, 시계열 예측 등 다양한 분야에서 딥러닝의 발전을 이끌고 있습니다.
## 9. 더 깊이 알아보기 (Further Reading)
## 9. 더 깊이 알아보기 (Further Reading)
-[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/): Andrej Karpathy의 전설적인 블로그 포스트. RNN의 매력적인 가능성을 보여줍니다.
-[The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/): Andrej Karpathy의 전설적인 블로그 포스트. RNN의 매력적인 가능성을 보여줍니다.
-[Understanding LSTM Networks](http://colah.github.io/posts/2015-08-Understanding-LSTMs/): Christopher Olah의 블로그 포스트. LSTM의 구조를 그림으로 매우 알기 쉽게 설명한 최고의 자료입니다.
-[Understanding LSTM Networks](http://colah.github.io/posts/2015-08-Understanding-LSTMs/): Christopher Olah의 블로그 포스트. LSTM의 구조를 그림으로 매우 알기 쉽게 설명한 최고의 자료입니다.
---
---
## 🚀 캡스톤 미니 프로젝트: 주가 예측 (LSTM)
## 10. 심화 프로젝트: 주가 예측 (LSTM)
RNN과 LSTM의 가장 대표적인 활용 사례 중 하나는 주가, 날씨, 판매량과 같은 시계열(Time-series) 데이터를 예측하는 것입니다. 이번 미니 프로젝트에서는 LSTM 모델을 사용하여, 과거의 주가 데이터 패턴을 학습하고 미래의 주가를 예측하는 간단한 주가 예측기를 만들어 봅니다.
RNN과 LSTM의 가장 대표적인 활용 사례 중 하나는 주가, 날씨, 판매량과 같은 시계열(Time-series) 데이터를 예측하는 것입니다. 이번 미니 프로젝트에서는 LSTM 모델을 사용하여, 과거의 주가 데이터 패턴을 학습하고 미래의 주가를 예측하는 간단한 주가 예측기를 만들어 봅니다.
RNN의 순차 처리 방식과 장기 의존성 문제를 해결하기 위해 등장한 Transformer는, 문장 전체를 한 번에 보고 단어 간의 관계와 중요도를 파악하는 Self-Attention 메커니즘을 사용합니다. Transformer는 문장을 이해하는 인코더와 문장을 생성하는 디코더로 구성되며, 단어의 순서 정보는 Positional Encoding으로 학습합니다. 이 구조를 기반으로 문맥 이해에 특화된 BERT(인코더 활용)와 텍스트 생성에 특화된 GPT(디코더 활용) 같은 현대적인 LLM이 탄생했습니다.
## 3. 도입: 문장의 '진짜 의미'를 파악하는 똑똑한 번역가 (Introduction)
## 3. 도입: 문장의 '진짜 의미'를 파악하는 똑똑한 번역가 (Introduction)
...
@@ -79,30 +79,17 @@ Transformer 아키텍처는 현대 LLM의 근간이 되었습니다. 대표적
...
@@ -79,30 +79,17 @@ Transformer 아키텍처는 현대 LLM의 근간이 되었습니다. 대표적
---
---
## 6. 개념 확인 퀴즈 (Concept Check Quiz)
## 6. 연습 문제
1. Transformer 이전의 순차 데이터 모델(RNN)이 가졌던 가장 큰 한계점은 무엇이었나요?
1.**개념 확인**: Transformer 이전의 순차 데이터 모델(RNN)이 가졌던 가장 큰 한계점은 무엇이었나요?
2. 'Self-Attention' 메커니즘의 역할을 한 문장으로 설명해 보세요.
2.**개념 확인**: 'Self-Attention' 메커니즘의 역할을 한 문장으로 설명해 보세요.
3. GPT가 주로 사용하는 Transformer의 구성요소는 인코더(Encoder)인가요, 디코더(Decoder)인가요?
3.**개념 확인**: GPT가 주로 사용하는 Transformer의 구성요소는 인코더(Encoder)인가요, 디코더(Decoder)인가요?
4.**심화 조사**: BERT와 GPT가 각각 어떤 종류의 AI 서비스(e.g., 검색 엔진, 챗봇, 번역기)에 더 적합한지, 그 이유와 함께 실제 서비스 예시를 2가지 이상 찾아 설명해 주세요.
5.**설명 능력**: 'Self-Attention'의 원리를 비전공자 친구에게 설명한다고 상상하고, 쉬운 비유를 들어 3문장 이내로 설명하는 글을 작성해 주세요. (예: "칵테일 파티에서 여러 사람과 대화할 때, 나와 가장 관련 있는 주제를 이야기하는 사람의 목소리에 더 집중하는 것과 같아요.")
---
---
## 7. 과제 (Assignment)
## 7. 심화 토론 (What Could Go Wrong?)
1.**BERT와 GPT의 활용 분야 비교 조사**: BERT와 GPT가 각각 어떤 종류의 AI 서비스(e.g., 검색 엔진, 챗봇, 번역기)에 더 적합한지, 그 이유와 함께 실제 서비스 예시를 2가지 이상 찾아 설명해 주세요.
2.**쉬운 비유로 설명하기**: 'Self-Attention'의 원리를 비전공자 친구에게 설명한다고 상상하고, 쉬운 비유를 들어 3문장 이내로 설명하는 글을 작성해 주세요. (예: "칵테일 파티에서 여러 사람과 대화할 때, 나와 가장 관련 있는 주제를 이야기하는 사람의 목소리에 더 집중하는 것과 같아요.")
---
## 8. 되짚어보기 (Summary)
이번 파트에서는 현대 NLP의 혁신을 가져온 Transformer에 대해 배웠습니다.
-**Attention의 등장**: RNN의 장기 의존성 문제를 해결하기 위한 아이디어로 시작했습니다.
-**Transformer의 구조**: RNN을 완전히 배제하고, 인코더-디코더 구조와 Self-Attention만으로 문장의 문맥을 파악하는 방법을 이해했습니다.
-**BERT와 GPT**: Transformer의 인코더와 디코더가 각각 어떻게 문맥 이해와 텍스트 생성이라는 두 가지 큰 흐름을 만들어냈는지 확인했습니다.
## ⚠️ What Could Go Wrong? (토론 주제)
Transformer는 현대 AI의 혁신을 이끌었지만, 그 강력함만큼 새로운 종류의 문제와 한계를 드러냈습니다. 다음 시나리오들에 대해 함께 토론해보세요.
Transformer는 현대 AI의 혁신을 이끌었지만, 그 강력함만큼 새로운 종류의 문제와 한계를 드러냈습니다. 다음 시나리오들에 대해 함께 토론해보세요.
...
@@ -130,14 +117,14 @@ Transformer는 현대 AI의 혁신을 이끌었지만, 그 강력함만큼 새
...
@@ -130,14 +117,14 @@ Transformer는 현대 AI의 혁신을 이끌었지만, 그 강력함만큼 새
- 왜 GPT와 같은 생성 모델이 BERT와 같은 이해 모델에 비해 분류 Task에서 비효율적일까요? Decoder 아키텍처의 단방향(Causal) 어텐션 마스크가 어떻게 전체 문맥을 파악하는 능력에 한계를 주는지, BERT의 양방향(Bidirectional) 어텐션과 비교하여 설명해보세요.
- 왜 GPT와 같은 생성 모델이 BERT와 같은 이해 모델에 비해 분류 Task에서 비효율적일까요? Decoder 아키텍처의 단방향(Causal) 어텐션 마스크가 어떻게 전체 문맥을 파악하는 능력에 한계를 주는지, BERT의 양방향(Bidirectional) 어텐션과 비교하여 설명해보세요.
- 풀고자 하는 문제(Downstream Task)의 성격에 맞게 모델의 아키텍처와 사전학습 방식을 선택하는 것이 왜 중요한지 토론해보세요.
- 풀고자 하는 문제(Downstream Task)의 성격에 맞게 모델의 아키텍처와 사전학습 방식을 선택하는 것이 왜 중요한지 토론해보세요.
## 9. 더 깊이 알아보기 (Further Reading)
## 8. 더 깊이 알아보기 (Further Reading)
-[Attention Is All You Need (원문 논문)](https://arxiv.org/abs/1706.03762): 모든 것의 시작이 된 논문.
-[Attention Is All You Need (원문 논문)](https://arxiv.org/abs/1706.03762): 모든 것의 시작이 된 논문.
-[The Illustrated Transformer (영문 블로그)](http://jalammar.github.io/illustrated-transformer/): 그림과 함께 Transformer를 쉽게 설명한 최고의 자료 중 하나.
-[The Illustrated Transformer (영문 블로그)](http://jalammar.github.io/illustrated-transformer/): 그림과 함께 Transformer를 쉽게 설명한 최고의 자료 중 하나.
-[Hugging Face Course - How do Transformers work?](https://huggingface.co/learn/llm-course/en/chapter1/4): 본문에 많이 참고된 허깅페이스의 LLM 강좌.
-[Hugging Face Course - How do Transformers work?](https://huggingface.co/learn/llm-course/en/chapter1/4): 본문에 많이 참고된 허깅페이스의 LLM 강좌.
이론으로 배운 Self-Attention 메커니즘이 실제 코드 레벨에서 어떻게 동작하는지 직접 구현해보며 Transformer의 심장을 파헤쳐봅니다. 이 과정을 통해 캡스톤 프로젝트에서 Transformer 기반 모델을 다룰 때 내부 동작에 대한 깊은 직관을 얻을 수 있습니다.
이론으로 배운 Self-Attention 메커니즘이 실제 코드 레벨에서 어떻게 동작하는지 직접 구현해보며 Transformer의 심장을 파헤쳐봅니다. 이 과정을 통해 캡스톤 프로젝트에서 Transformer 기반 모델을 다룰 때 내부 동작에 대한 깊은 직관을 얻을 수 있습니다.
딥러닝은 Scikit-learn과 달리 PyTorch와 같은 '조립 키트'를 사용하여 모델을 직접 설계합니다. 데이터의 기본 단위인 텐서(Tensor)를 다루고, `nn.Module`을 상속받아 신경망을 구성합니다. 학습은 모델의 예측(순전파)과 실제 값의 오차를 계산(손실 함수)하고, 이 오차를 기반으로 파라미터를 조정(옵티마이저, 역전파)하는 과정을 반복(학습 루프)하는 것입니다. 이 과정을 통해 MNIST 같은 이미지 데이터를 분류하는 CNN 모델까지 구현할 수 있습니다.
## 3. 도입: 모델을 직접 조립하는 즐거움, PyTorch (Introduction)
## 3. 도입: 모델을 직접 조립하는 즐거움, PyTorch (Introduction)
...
@@ -147,7 +147,7 @@ print(model)
...
@@ -147,7 +147,7 @@ print(model)
>
>
> ---
> ---
>
>
> ## 6. 직접 해보기 (Hands-on Lab): MNIST 손글씨 분류
> ## 연습 문제: MNIST 손글씨 분류
> > **🎯 5일차 목표:** PyTorch를 사용하여 딥러닝의 "Hello, World!"인 MNIST 손글씨 분류기를 직접 만듭니다.
> > **🎯 5일차 목표:** PyTorch를 사용하여 딥러닝의 "Hello, World!"인 MNIST 손글씨 분류기를 직접 만듭니다.
>
>
> ### 문제:
> ### 문제:
...
@@ -245,7 +245,7 @@ print(model)
...
@@ -245,7 +245,7 @@ print(model)
---
---
## 🚀 캡스톤 미니 프로젝트: 와인 품질 예측 (PyTorch MLP)
## 심화 프로젝트: 와인 품질 예측 (PyTorch MLP)
이번 장의 MNIST 실습을 통해 이미지 데이터에 대한 딥러닝(CNN)의 맛을 보았습니다. 이번 미니 프로젝트에서는 우리가 더 익숙한 **표(tabular) 형식의 데이터**에 딥러닝을 적용해 봅니다. 이 과정을 통해 딥러닝의 기본 원리(모델 정의, 학습 루프)가 데이터의 종류와 상관없이 동일하게 적용된다는 중요한 사실을 체득하게 됩니다.
이번 장의 MNIST 실습을 통해 이미지 데이터에 대한 딥러닝(CNN)의 맛을 보았습니다. 이번 미니 프로젝트에서는 우리가 더 익숙한 **표(tabular) 형식의 데이터**에 딥러닝을 적용해 봅니다. 이 과정을 통해 딥러닝의 기본 원리(모델 정의, 학습 루프)가 데이터의 종류와 상관없이 동일하게 적용된다는 중요한 사실을 체득하게 됩니다.
최신 AI 모델의 거대한 크기는 학습과 서빙에 큰 부담을 줍니다. 이를 해결하기 위해 여러 GPU를 활용하는 분산 학습(FSDP, DeepSpeed)으로 학습 한계를 극복하고, 학습이 완료된 모델은 경량화 기법을 통해 최적화합니다. 양자화(Quantization)는 가중치의 데이터 타입을 저용량으로 바꿔 모델 크기를 줄이고, 가지치기(Pruning)는 불필요한 연결을 제거하며, 지식 증류(Knowledge Distillation)는 작은 모델이 큰 모델의 성능을 배우게 합니다. 이러한 최적화를 통해 모델을 더 빠르고, 가볍고, 효율적으로 만들어 실제 서비스에 적용할 수 있습니다.