why?
그 동안 딥러닝을 실행했을땐 주피터 노트북이나 특히 코랩 gpu를 활용해 머신러닝 공부를 했었다.
하지만 캡스톤의 이유 + 딥러닝 공부를 더 해보기로 결심을 했기때문에 vscode 기반의 환경 구축을 해보려고 한다.
캡스톤의 주제가 (웹 + ai)의 융합이기에 vscode를 활용하는 것이 편할 것이라고 생각했다.
1. 첫번째 목표 : vscode에서 아나콘다 가상환경 만들기
왜 가상환경을 구축해야할까?
여러 프로젝트를 수행하면서 프로젝트마다 필요한 라이버러리와 여러 환경들이 요구하는 것이 서로 상이할 수 있다.
만약 서로 가상환경없이 프로그램이 같이 존재한다고 하면 서로 의존성 문제나 업데이트 할 경우 일어나는 충돌 , 버전문제 등 여러 문제들이 생길 수 있다.
그래서 가상환경을 구축해야함 ! 쉽게 설명해 여러 구성원이 집에서 거주할때 단독주택에서 사냐 vs 원룸 형태에서 사냐의 차이이다. 단독주택에서는 공동으로 용품을 사용해야하지만 원룸에서는 구성원에 따라 자유롭게 용품을 사용할 수 있다.
setp1. 아나콘다 설치
https://www.anaconda.com/download#windows
Free Download | Anaconda
Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
난 이미 설치 되어있어서 건너뜀요
setp2. vscode에서 파이썬 설치하기
vscode가 없다면 설치하세요우
이것도 건너뜀요
step 3. conda 가상환경 만들기
1. 버전확인 : 설치한 콘다와 파이썬이 잘 설치되었는지 터미널에서 확인합니두
- 파이썬 버전 확인
python --version
- 콘다 버전 확인
conda --version
- 현재 환경 리스트 (콘다 환경리스트)
conda info --envs
2. 현재 파이썬 버전에 맞는 가상환경 생성하기 (파이썬 버전을 지정하지 않을 경우에는 최신버전으로 설치됨요)
my_env라는 가상환경을 만들고 환경리스트 확인을 통해 확인해볼게욤
conda create -n my_env python=3.11.5
step 4. vscode에서 새로 만든 가상환경 적용해보기
command +shift + p 입력 -> select interpreter 입력 -> 위에서 만들었던 'my_env' 환경이 보임 ! 이걸 선택하면 끝!
step 5. 가상환경 제거하기
방금 만든 따끈따끈한 'my_env' 환경을 삭제해볼게요 명령어 실행후 다시 가상환경리스트를 보면 삭제되고 기존에 것만 있는것을 확인할 수 있습니다!
conda env remove -n my_env
2. 두번째 목표 : m1, m2 칩에서 gpu 가속화 하기 ( pythorch) (mps)
대부분 머신러닝 개발을 한다면 cpu보다 gpu가 필수가 된다. gpu는 수천개 코어로 병렬 데이터 처리에 매우 효율적이고 대량 계산 작업을 동시에 수행할 수 있어 머신러닝 모델의 훈련과 추론 단계에서 cpu보다 훨씬 빠르고 복잡한 계산을 하면서도 에너지 효율이 좋다.
또한 ai 개발을 위해 사용되는 다양한 프레임워크와 라이브러리가 cpu 지원을 제공함으로서 개발자가 높은 성능의 ai 솔루션을 쉽게 구현할 수 있다.
대부분 머신러닝 코드는 Nvidia 그래픽 카드를 사용하는 cuda로 작성하는데 mac os 지원을 중단함에 따라 복잡해졌다.
하지만 pythorch 에서 새로운 릴리즈를 함으로서 m1, m2칩에서 gpu 사용이 가능해졌다.
* 환경요구사항 : macOS 12.3 이상, Python 3.7 이상, 그리고 PyTorch 1.12 이상이 필요합니다.
(step 0. 앞에서 구축했던 가상환경을 구축해놓고 실행을 해도 좋다. )
step 1. pythorch 설치하기
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
step 2. vscode에서 m1, m2 프로세서 인식이 되고, mps가 현재 환경에서 지원되는지 확인하기
아래와 같이 확인이 된다면 성공
디바이스를 'mps' 설정하는 것이 포인트
import torch
print(f"mps 사용 가능 여부: {torch.backends.mps.is_available()}")
print(f"mps 지원 환경 여부: {torch.backends.mps.is_built()}")
if torch.backends.mps.is_available():
mps_device = torch.device("mps")
x = torch.ones(1, device=mps_device)
print (x)
else:
print ("MPS device not found.")
step 3. 학습테스트
프로세스 인식을 했으니 실제 학습에 사용이 가능한지 확인해야한다.
1. 코드가 돌아가는 중에 맥북이 '활성상태보기' 기능 에서 gpu가 활용되는 것이 급격히 증가한다면 성공
2. cpu 학습 과 gpu 학습 시간 비교하기 ( 와우 무려 cpu는 4.4 s , gpu는 0.2s 차이가 나네욤 ㅎㅎ)
import torch
import time
# CPU에서의 연산 시간 측정
start_cpu = time.time()
tensor_cpu = torch.randn(10000, 10000)
result_cpu = tensor_cpu @ tensor_cpu
end_cpu = time.time()
print(f"CPU에서의 연산 시간: {end_cpu - start_cpu}초")
# MPS(GPU)에서의 연산 시간 측정
if torch.backends.mps.is_available():
start_mps = time.time()
tensor_mps = torch.randn(10000, 10000, device="mps")
result_mps = tensor_mps @ tensor_mps
end_mps = time.time()
print(f"MPS(GPU)에서의 연산 시간: {end_mps - start_mps}초")
else:
print("MPS(GPU) 사용 가능한 환경이 아닙니다.")
끝... 휴 이제 더 열심히 공부해야지..