# Part 1: AI 개발 환경 구축 성공적인 AI 개발의 첫걸음은 안정적이고 효율적인 개발 환경을 구축하는 것입니다. 어떤 도구를 선택하느냐에 따라 개발 생산성과 경험이 크게 달라질 수 있습니다. 이 섹션에서는 현재 업계에서 널리 사용되는 대표적인 AI 개발 도구들을 소개합니다. 각 도구의 특징, 장단점, 그리고 추천 사용자를 상세히 비교하여, 여러분의 프로젝트와 개인적인 선호도에 가장 적합한 환경을 선택하고 구성하는 데 도움을 드리고자 합니다. --- ### 💡 지난 시간 복습 [Part 0: 시작하며](part_0_introduction.md)에서는 본 강의의 최종 목표가 **'붓꽃 품종 예측 AI API 서버'** 구축임을 명확히 하고, 전체 학습 로드맵을 함께 살펴보았습니다. --- ## 0. 시작하기 전에: 왜 가상환경을 사용해야 할까요? AI 개발을 시작하면 프로젝트마다 사용하는 라이브러리(e.g., `TensorFlow`, `PyTorch`)와 그 버전이 달라지는 경우가 많습니다. 이때 가상환경(Virtual Environment)을 사용하지 않으면, 시스템에 설치된 단 하나의 파이썬 환경에 모든 라이브러리가 뒤섞이게 됩니다. - **A 프로젝트**: `TensorFlow 2.5` 버전 필요 - **B 프로젝트**: `TensorFlow 2.10` 버전 필요 이런 상황에서 가상환경이 없다면 두 프로젝트를 동시에 원활하게 진행하기 어렵습니다. 가상환경은 이처럼 프로젝트별로 독립된 공간을 만들어주어 **라이브러리 버전 충돌 문제를 원천적으로 방지**하는 필수적인 도구입니다. Python 3.3부터 기본 내장된 `venv` 모듈을 사용하는 것이 가장 표준적인 방법입니다. ### 가상환경 생성 및 활성화 (`venv`) 1. **가상환경 생성하기** 프로젝트 폴더를 만들고, 해당 폴더 내에서 터미널을 열어 아래 명령어를 실행합니다. `.venv`라는 이름의 가상환경 폴더가 생성됩니다. ```bash # python3 또는 python으로 실행 python -m venv .venv ``` 2. **가상환경 활성화하기** 생성된 가상환경을 사용하려면 반드시 '활성화'해야 합니다. ```bash # Windows (cmd.exe) .venv\\Scripts\\activate.bat # Windows (PowerShell) .venv\\Scripts\\Activate.ps1 # macOS / Linux (bash) source .venv/bin/activate ``` 활성화되면 터미널 프롬프트 앞에 `(.venv)`와 같은 표시가 나타납니다. 이 상태에서 설치하는 패키지는 모두 `.venv` 폴더 내에만 설치됩니다. 3. **패키지 설치 및 관리** 가상환경이 활성화된 상태에서 `pip`으로 필요한 라이브러리를 설치합니다. ```bash # 예시: numpy와 pandas 설치 pip install numpy pandas ``` 설치된 패키지 목록을 `requirements.txt` 파일로 저장하여 다른 사람과 공유하거나 다른 환경에서 동일하게 복원할 수 있습니다. ```bash # 현재 환경의 패키지 목록을 requirements.txt로 저장 pip freeze > requirements.txt # requirements.txt 파일로부터 모든 패키지를 설치 pip install -r requirements.txt ``` 4. **가상환경 비활성화하기** 작업이 끝나면 `deactivate` 명령어로 가상환경을 빠져나올 수 있습니다. ```bash deactivate ``` > 💡 **`.gitignore` 설정**: `.venv` 폴더는 Git으로 관리할 필요가 없으므로, 프로젝트의 `.gitignore` 파일에 `.venv`를 반드시 추가해주세요. --- ## 1. Spyder (스파이더)

Spyder-logo

- **개요**: Spyder는 과학 및 공학 계산, 데이터 분석에 특화된 파이썬 통합 개발 환경(IDE)입니다. MATLAB과 유사한 인터페이스를 가지고 있어, 해당 툴에 익숙한 사용자에게 친숙합니다. 특히, 코드와 함께 변수의 상태, 데이터프레임, 그래프 등을 실시간으로 확인하며 작업할 수 있는 기능이 강력합니다. - **핵심 특징**: - **변수 탐색기(Variable Explorer)**: 현재 메모리에 로드된 모든 변수, 객체, 데이터프레임의 내용과 형태를 GUI 상에서 직접 확인하고 수정할 수 있습니다. 코드를 한 줄씩 실행하며 데이터가 어떻게 변하는지 직관적으로 파악하는 데 매우 유용합니다. - **IPython 콘솔**: 코드를 대화형으로 실행하고 즉시 결과를 확인할 수 있습니다. 코드 전체를 실행하지 않고 특정 부분만 테스트하기에 용이합니다. - **정적 분석 및 디버깅**: 코드의 오류를 사전에 감지하고, 중단점(Breakpoint)을 설정하여 코드 실행을 단계별로 추적하는 강력한 디버깅 기능을 제공합니다. - **플롯(Plots) 창**: Matplotlib 등으로 생성된 그래프가 별도의 창에 표시되어, 코드를 수정하며 그래프의 변화를 바로 확인할 수 있습니다. - **장점**: - 데이터 분석 및 시각화에 매우 직관적인 환경. - 변수와 데이터 구조를 시각적으로 탐색하는 기능이 탁월함. - 학술 및 연구 커뮤니티에서 여전히 널리 사용됨. - **단점**: - 웹 개발이나 범용 소프트웨어 개발보다는 데이터 분석 작업에 치우쳐 있음. - VSCode 등에 비해 확장성이 다소 부족함. - **권장 사용자**: - 데이터의 구조와 내용을 시각적으로 확인하며 탐색적 데이터 분석(EDA)을 주로 수행하는 데이터 분석가. - 파이썬으로 데이터 과학에 입문하는 학생 및 연구자. - MATLAB, RStudio와 같은 통계 분석 툴에 익숙한 사용자. - **설치 및 시작**: Anaconda 배포판을 설치하면 Spyder가 기본적으로 포함되어 있어 가장 쉽게 시작할 수 있습니다. ```bash # Anaconda 설치 후, Anaconda Navigator에서 Spyder를 실행하거나 # 터미널에서 아래 명령어로 실행할 수 있습니다. spyder ``` > [공식 홈페이지 바로가기](https://www.spyder-ide.org/) --- ## 2. JupyterLab (주피터랩)

Jupyter-logo

- **개요**: JupyterLab은 웹 브라우저에서 실행되는 차세대 대화형 개발 환경입니다. 코드, 실행 결과, 시각화, 마크다운 설명 등을 '노트북(.ipynb)'이라는 파일 형식으로 통합하여 관리합니다. 실험 과정과 결과를 이야기처럼 풀어낼 수 있어, 연구 내용을 공유하고 재현하는 데 매우 효과적입니다. - **핵심 특징**: - **노트북 인터페이스**: 코드 셀과 마크다운 셀을 조합하여 실행 가능한 문서를 만들 수 있습니다. 코드와 그 결과, 그리고 설명이 함께 저장되므로 프로젝트의 논리적 흐름을 이해하기 쉽습니다. - **셀(Cell) 단위 실행**: 전체 코드를 한 번에 실행할 필요 없이, 코드 블록(셀) 단위로 실행하고 결과를 즉시 확인할 수 있어 빠른 실험과 디버깅이 가능합니다. - **유연한 인터페이스**: 터미널, 텍스트 편집기, 노트북, CSV 뷰어 등 다양한 컴포넌트를 탭과 분할 화면으로 자유롭게 배치하여 자신만의 작업 공간을 구성할 수 있습니다. - **광범위한 커널 지원**: 파이썬뿐만 아니라 R, Julia, Scala 등 다양한 프로그래밍 언어를 지원합니다. - **장점**: - 빠른 프로토타이핑과 데이터 탐색에 매우 강력함. - 코드, 결과, 설명을 함께 묶어 공유 및 발표 자료로 활용하기 좋음. - 웹 기반이므로 원격 서버에 설치하여 어디서든 접속해 사용할 수 있음. - **단점**: - .ipynb 파일은 일반 .py 파일과 달리 JSON 형식이라 버전 관리(Git) 시 충돌 해결이 다소 까다로움. - 긴 코드나 복잡한 프로젝트 전체를 관리하기에는 IDE보다 불편할 수 있음. - **권장 사용자**: - 빠른 아이디어 검증과 데이터 시각화가 중요한 모든 AI/ML 연구원 및 개발자. - 분석 과정을 단계별로 기록하고 다른 사람과 공유해야 하는 데이터 분석가. - 강의나 튜토리얼 자료를 작성하는 교육자. - **설치 및 시작**: ```bash # pip을 이용한 설치 pip install jupyterlab # 설치 후 터미널에서 실행 jupyter lab ``` > [공식 홈페이지 바로가기](https://jupyterlab.readthedocs.io/) --- ## 3. VSCode (비주얼 스튜디오 코드)

VSCode-logo

- **개요**: 가볍고 빠르면서도 강력한 기능을 자랑하는 Microsoft의 범용 코드 편집기입니다. 풍부한 확장 기능 생태계를 통해 단순한 텍스트 에디터를 넘어, 거의 모든 언어와 프레임워크를 지원하는 완전한 통합 개발 환경(IDE)으로 변신할 수 있습니다. AI 개발에 필요한 모든 작업을 하나의 툴에서 해결할 수 있는 'All-in-One' 솔루션입니다. - **핵심 특징**: - **강력한 확장성**: 마켓플레이스에 등록된 수많은 확장을 통해 원하는 기능을 무한히 추가할 수 있습니다. (Python, Jupyter, Docker, 원격 접속 등) - **통합 터미널**: 편집기 내에서 바로 터미널을 열어 명령어를 실행할 수 있어 작업 흐름이 끊기지 않습니다. - **Git 통합**: 코드 버전 관리를 위한 Git 기능이 기본적으로 내장되어 있어 GUI 환경에서 편리하게 `commit`, `push`, `pull` 등을 수행할 수 있습니다. - **IntelliSense**: 단순한 자동 완성을 넘어, 코드 문맥을 이해하고 함수 시그니처, 변수 타입 등을 스마트하게 제안해줍니다. - **장점**: - AI 모델 개발부터 API 서버, 웹 프론트엔드 개발까지 하나의 툴에서 가능함. - 가볍고 실행 속도가 빠름. - 강력한 디버깅, 원격 개발, Git 통합 기능 제공. - 활발한 커뮤니티와 풍부한 확장 기능. - **단점**: - 순수한 데이터 분석 환경으로는 Spyder나 Jupyter보다 초기 설정이 조금 더 필요할 수 있음. - 기능이 매우 많아 처음에는 모든 기능을 파악하기 어려울 수 있음. - **권장 사용자**: - AI 모델뿐만 아니라, 해당 모델을 사용하는 API 서버 등 다양한 컴포넌트를 함께 개발해야 하는 풀스택 개발자 및 소프트웨어 엔지니어. - 원격 서버나 Docker 컨테이너 환경에서 개발을 자주 하는 개발자. - 하나의 도구로 모든 개발 작업을 통일하고 싶은 사용자. - **추천 확장 기능**: - `Python` (ms-python.python): Microsoft 공식 파이썬 지원. IntelliSense, 린팅, 디버깅, 포맷팅 등 필수 기능 제공. - `Jupyter` (ms-toolsai.jupyter): VSCode 내에서 주피터 노트북(.ipynb)을 직접 실행하고 변수 확인, 데이터 시각화 등을 지원. JupyterLab의 장점을 그대로 누릴 수 있음. - `Docker` (ms-azuretools.vscode-docker): 컨테이너와 이미지를 GUI로 관리하고, Dockerfile 및 docker-compose 파일 작성을 도와줌. - `Remote - SSH` (ms-vscode-remote.remote-ssh): 원격 서버에 SSH로 접속하여, 마치 로컬 머신에서 작업하는 것처럼 파일을 편집하고 터미널을 사용할 수 있게 해줌. - `GitHub Copilot` (GitHub.copilot): AI가 코드 전체 라인이나 함수를 통째로 제안해주는 강력한 코드 어시스턴트. > [공식 홈페이지 바로가기](https://code.visualstudio.com/) --- ## 4. Google Colab (구글 코랩)

Colab-logo

- **개요**: Google에서 제공하는 클라우드 기반의 무료 Jupyter 노트북 환경입니다. 별도의 설치 과정 없이 웹 브라우저만 있으면 즉시 파이썬 코드를 작성하고 실행할 수 있습니다. 특히, 무료로 고성능 GPU(NVIDIA Tesla T4 등) 및 TPU를 사용할 수 있다는 점이 가장 큰 장점입니다. - **핵심 특징**: - **무설치 환경**: 로컬 PC에 파이썬이나 라이브러리를 설치할 필요가 없습니다. 구글 계정만 있으면 바로 시작할 수 있습니다. - **무료 GPU/TPU 지원**: `런타임 > 런타임 유형 변경` 메뉴를 통해 몇 번의 클릭만으로 GPU나 TPU 가속을 활성화할 수 있어, 딥러닝 모델 학습 시간을 획기적으로 단축시킬 수 있습니다. - **Google Drive 연동**: Google Drive를 Colab 노트북에 마운트하여 파일을 쉽게 읽고 쓸 수 있습니다. 데이터셋이나 학습된 모델을 저장하기에 편리합니다. - **공유 및 협업**: 작성한 노트북을 다른 사람과 쉽게 공유하고, 여러 명이 동시에 편집할 수도 있습니다. - **장점**: - 복잡한 개발 환경 설정 없이 AI/ML을 바로 시작할 수 있음. - 고가의 GPU 장비 없이도 딥러닝 모델을 학습시킬 수 있음. - Google Drive와의 연동으로 데이터 관리가 편리함. - **단점**: - 일정 시간(기본 12시간) 이상 사용하면 런타임이 초기화되며, 설치했던 라이브러리와 변수들이 사라짐. - 무료 버전은 GPU 할당이 보장되지 않으며, 자원 사용량에 제한이 있음(Colab Pro/Pro+ 유료 플랜으로 업그레이드 가능). - 로컬 파일 시스템에 직접 접근하기는 다소 번거로움. - **권장 사용자**: - 로컬 PC 사양이 낮거나 개발 환경 구축이 부담스러운 AI 입문자. - 딥러닝 모델 학습 등 고사양의 GPU 자원이 필요한 학생 및 연구자. - 빠르게 아이디어를 테스트하고 결과를 공유하고 싶은 모든 개발자. > [서비스 바로가기](https://colab.research.google.com/) --- ## 5. Kaggle (캐글)

Kaggle-logo

- **개요**: Kaggle은 세계 최대의 데이터 과학 커뮤니티이자, 데이터 분석 및 머신러닝 모델링 대회를 주최하는 플랫폼입니다. Google Colab과 유사하게 클라우드 기반의 무료 Jupyter 노트북 환경(Kaggle Notebooks)을 제공하여, 누구나 데이터 분석과 모델 개발을 쉽게 시작할 수 있습니다. - **핵심 특징**: - **데이터 과학 대회(Competitions)**: 기업과 연구 기관이 실제 데이터를 문제와 함께 제공하면, 전 세계 데이터 과학자들이 모델을 개발하여 순위를 경쟁합니다. 실전 경험을 쌓고 최신 기술을 접목해볼 최고의 기회입니다. - **방대한 데이터셋**: 수만 개가 넘는 공개 데이터셋을 탐색하고 다운로드하여 자신의 프로젝트에 활용할 수 있습니다. - **무료 GPU/TPU 지원**: Colab과 마찬가지로, 모델 학습에 필요한 GPU 및 TPU를 무료로 사용할 수 있습니다 (주간 사용량 제한 있음). - **노트북 공유 및 학습**: 다른 참가자들이 공개한 노트북(코드)을 보며 문제 해결 아이디어를 얻고, 자신의 코드를 공유하며 토론할 수 있는 강력한 학습 환경을 제공합니다. - **장점**: - 실제 산업 문제를 기반으로 한 대회를 통해 실무 경험을 쌓을 수 있음. - 세계적인 전문가들의 코드를 보며 학습하고 성장할 수 있음. - 다양한 종류의 정제된 데이터셋에 쉽게 접근 가능함. - **단점**: - 무료 GPU/TPU 사용 시간에 주간 제한이 있음. - Colab에 비해 동시 사용이나 런타임의 유연성이 다소 떨어질 수 있음. - 플랫폼이 대회와 커뮤니티 중심으로 구성되어 있어, 순수 개인 프로젝트 개발에는 Colab이 더 편리할 수 있음. - **권장 사용자**: - 데이터 과학 및 머신러닝 분야의 포트폴리오를 만들고 싶은 취업 준비생. - 실제 데이터를 다루며 실력을 검증하고 싶은 데이터 분석가 및 AI 개발자. - 다른 사람의 문제 해결 방식을 배우고 최신 AI/ML 트렌드를 따라가고 싶은 학생 및 연구자. - **설치 및 시작**: ```bash # pip을 이용한 설치 pip install kaggle # Kaggle API 토큰 설정 후 사용 ``` > [공식 홈페이지 바로가기](https://www.kaggle.com/) --- ## 요약 및 어떤 도구를 선택해야 할까? 각 도구는 뚜렷한 장단점을 가지고 있어, 하나의 정답은 없습니다. 프로젝트의 성격과 개인의 선호도에 따라 최적의 선택이 달라집니다. | 구분 | Spyder | JupyterLab | VSCode | Google Colab | Kaggle | | :--- | :--- | :--- | :--- | :--- | :--- | | **형태** | 데스크탑 IDE | 웹 기반 노트북 | 범용 코드 편집기 | 클라우드 노트북 | 클라우드 노트북 | | **주요 장점** | 데이터 시각화, 변수 탐색 | 대화형 코드 실행, 문서화 | 강력한 확장성, 통합 개발 | 무료 GPU, 무설치 | 데이터셋, 대회, 커뮤니티 | | **주요 단점**| 확장성 부족 | 버전 관리 복잡 | 초기 설정 필요 | 런타임 제한 | 사용량 제한 | | **추천 사용자** | 데이터 분석가, 과학자 | 연구원, 교육자 | 풀스택/SW 엔지니어 | AI 입문자, 학생 | AI 실무 지망생, 데이터 과학자 | --- ### 🚀 다음 시간엔... 지금까지 AI 개발을 위한 다양한 도구와 환경 설정 방법을 알아보았습니다. 이제 도구는 준비되었으니, 본격적으로 코드를 작성할 시간입니다. 다음 [Part 2: 파이썬 핵심 문법](part_2_python_core_syntax.md)에서는 데이터 분석과 AI 모델링의 기반이 되는 파이썬의 필수 문법을 빠르게 훑어보겠습니다.