1. 프로젝트 개요: AI 개발자를 위한 준비된 도구 상자
AI 모델 실험이나 최신 오픈소스 대형 언어 모델을 빠르게 체험하고자 할 때, 환경 구성은 항상 번거로운 과정입니다. 특히 다른 머신으로 옮기거나 특정 오픈소스 프로젝트를 재현하려는 경우, 의존성 설치에서 시작하여 버전 충돌 해결까지 많은 시간이 소요됩니다. 이러한 문제를 해결하기 위해 Jaewon94/ai-setting 프로젝트는 개인화된 AI 개발 환경 설정 목록을 제공합니다.
이 프로젝트는 실행 가능한 소프트웨어가 아니라, 사용자가 자신의 작업에 맞게 조정할 수 있는 "베스트 프랙티스" 메모와 자동화 스크립트의 모음입니다. 이는 단순히 환경을 구성하는 것을 넘어, 효율적인 AI 개발을 가능하게 하는 다양한 도구와 설정을 포함합니다.
핵심 가치는 효율성과 문제 회피입니다. 이미 무엇을 해야 할지 알고 있을 때, 가장 빠르고 안정적인 방식으로 환경을 구축하고 도구 체인을 실행하는 데 초점을 맞추고 있습니다.
2. 설계 철학: 개인화된 AI 설정의 필요성
Jaewon의 프로젝트는 빠르게 변화하는 AI 기술 스택에 적응하기 위한 고도화된 엔지니어링 철학을 반영합니다. 예를 들어, PyTorch와 CUDA 버전 간의 호환성 문제나 시스템 라이브러리 요구사항 등의 미묘한 차이를 관리해야 합니다.
2.1 재현성에서 한 걸음 더 나아가기
현대 소프트웨어 공학에서는 '재현성'이 중요한 원칙입니다. 전통적으로 requirements.txt 또는 environment.yml 파일을 통해 의존성을 선언하지만, 이는 여전히 부족합니다. ai-setting 프로젝트는 이를 한 단계 더 나아가서 '한 번의 명령으로 재현'을 목표로 합니다. 여기에는 다음 요소들이 포함될 수 있습니다:
- 시스템 레벨 패키지 설치 (예: Linux의
apt, macOS의brew) - 코드 포맷팅 및 정적 분석 도구 설정
- GPU 최적화를 위한 환경 변수 설정
- Docker 이미지 선택 및 가상환경 관리
2.2 모듈화 및 조합 가능성
프로젝트는 모듈화된 구조를 취하며, 사용자는 필요한 부분만 선택적으로 적용할 수 있습니다. 예를 들어, LLM 연구에 집중하는 경우에는 기본 설정(base)과 LLM 관련 설정만 사용하면 됩니다.
3. 실습: AI 작업 환경 구성하기
실제 환경 구성 과정을 따라해 보겠습니다.
3.1 시스템 및 기본 의존성 설치
- 시스템 업데이트 및 기본 도구 설치
# Ubuntu/Debian 예시
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget build-essential cmake pkg-config
- Python 환경 관리 Conda/Mamba를 사용하여 격리된 Python 환경을 생성합니다.
# Miniconda 다운로드 및 설치
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
$HOME/miniconda3/bin/conda init bash
conda create -n ai-env python=3.10 -y
conda activate ai-env
- GPU 드라이버 및 CUDA 설치
conda install cudatoolkit=11.8 -c nvidia -y
conda install cudnn=8.6 -c nvidia -y
3.2 핵심 라이브러리 설치
- PyTorch 설치
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- LLM 관련 라이브러리
pip install transformers accelerate datasets peft bitsandbytes
- 코드 품질 향상 도구
pip install black isort flake8 mypy jupyterlab
3.3 Docker를 활용한 컨테이너화
Docker를 사용하여 일관된 환경을 유지합니다. 아래는 샘플 Dockerfile입니다:
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y python3.10 python3-pip git curl wget
WORKDIR /workspace
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY . .
CMD ["/bin/bash"]
4. 고급 설정 및 워크플로 최적화
- Shell 별칭 설정
alias ai='conda activate ai-env'
alias jl='jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root'
alias nv='watch -n 1 nvidia-smi'
- 모델 및 데이터 관리
- 통합 저장 경로 설정
~/ai_assets/
├── models/
│ ├── huggingface/
│ └── custom/
├── datasets/
└── experiments/
- 실험 추적
import wandb
wandb.init(project="my-ai-project", config=args)
wandb.log({"loss": loss, "accuracy": acc})
5. 문제 해결 및 성능 최적화
5.1 환경 및 의존성 문제 해결
| 문제 현상 | 원인 | 해결 방법 |
|---|---|---|
| ImportError | 패키지 누락 | pip list 확인 후 재설치 |
| CUDA 오류 | 버전 불일치 | torch.version.cuda 확인 |
5.2 성능 문제 해결
- GPU 메모리 부족
scaler = torch.cuda.amp.GradScaler()
for data in dataloader:
with torch.cuda.amp.autocast():
outputs = model(data)
loss = criterion(outputs, labels)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
- 훈련 속도 저하
dataloader = DataLoader(dataset, batch_size=32, num_workers=8, pin_memory=True)