"김기현의 딥러닝을 활용한 자연어처리"를 보면서 딥러닝을 시작하기 전 알았으면 좋았을 내용을 정리해보았음
딥러닝 환경 구축 관련
- 아나콘다 설치
- 아나콘다 설치 시 "Add Anaconda3 to my PATH environment variable" 체크
- Visual Studio Code(VSCode)
- VSCode는 파이썬 코드를 짜고 디버그를 쉽게 할 수 있는 통합 개발 환경(Integrated Development Environment: IDE)
- GPU가 설치된 고성능 리눅스 서버를 두고, 원격 개발 환경을 구성하고자 하면 "Remote SSH" 플러그인을 설치하면 편리
(이 플러그인을 통해 원격 서버 상에서 직접 코드를 편집하고 실행 및 디버깅을 진행할 수 있으며, 로컬 소스 코드와 원격 소스 코드 사이의 싱크 등을 걱정할 필요가 없음)
- 파이토치 설치
- 아나콘다 위에 파이토치를 설치하기 위해서는 “GET STARTED” 페이지(https://pytorch.org/get-started/locally/)에 접속하여 알맞은 운영체제와 CUDA 버전 선택
- GPU사용
- 딥러닝은 연산량이 많기 때문에 보통 엔비디아(Nvidia)그래픽처리장치(GPU)에서 이루어지게 됨
cuda함수
- cuda: 뒤에 붙는 숫자는 GPU 디바이스 인덱스를 의미함(예를 들어 device='0'이면 첫 번째 디바이스임)
서로 다른 장치간 연산
- 서로 다른 장치에 올라가 있는 텐서 또는 nn.Module의 하위 클래스 객체끼리는 연산이 불가(CPU와 GPU에 위치한 텐서들끼리 연산이 불가능 할 뿐만 아니라 0번 GPU와 1번 GPU 사이의 연산도 불가능)
to 함수
- to함수는 인자로 원하는 디바이스에 대한 정보를 담은 객체를 받아 함수 자신을 호출한 객체를 해당 디바이스로 복사(이동)시킴
>>> cpu_device = torch.device('cpu')
>>> gpu_device = torch.device('cuda:0')
>>> x = torch.FloatTensor(2, 2)
>>> x
tensor([[1.1874e+26, 4.5598e-41],
[1.1973e+26, 4.5598e-41]])
>>> x = x.to(gpu_device)
>>> x
tensor([[1.1874e+26, 4.5598e-41],
[1.1973e+26, 4.5598e-41]], device='cuda:0')
device 속성
- 텐서는 device 속성을 가지고 있어 텐서가 위치한 디바이스를 쉽게 파악할 수 있음
- 단, nn.Module의 하위 클래스 객체는 이와 같은 속성을 가지고 있지 않아 모델이 어느 장치에 올라가있는지 알고 싶다면 첫 번째 파라미터 텐서의 device 속성에 접근해야함(모델 내부의 파라미터 전체가 같은 디바이스에 위치한다는 가정 하에)
>>> x = torch.cuda.FloatTensor(2, 2)
>>> x.device
device(type='cuda', index=0)
>>> layer = nn.Linear(2, 2)
>>> next(layer.parameters()).device
device(type='cpu')
- 실무를 진행하듯이 실습
- 주피터 노트북의 경우 데이터를 분석하는 과정과 같이 각 셀의 결과에 따라 해야하는 일이 바뀌는 경우에 적합
- 해야할 작업이 명확하고 반복되는 경우에는 py확장자를 가진 파이썬 스크립트로 제작하여 CLI(Command line interface)환경에서 작업을 수행하는 것이 바람직
- 특히 모델링 및 하이퍼파라미터 튜닝 작업시에는 반복적인 실험이 수행되기 때문에 CLI 환경에서 파이썬 스크립트 실행과 함꼐 실행 파라미터를 넣어주는 실험을 수행하도록 하는 것이 좋음
머신러닝 프로젝트 파일 구조 예시
model.py: 모델 클래스가 정의된 코드
trainer.py: 데이터를 받아와 모델 객체를 학습하기 위한 트레이너가 정의된 코드
dataloader.py: 데이터 파일을 읽어와 전처리를 수행하고, 신경망에 넣기 좋은 형태로 변환하는 코드
train.py: 하이퍼파라미터를 입력 받아 필요한 객체들을 준비하여 학습을 진행
predict.py: 이미 학습된 모델과 추론을 위한 샘플을 입력받아 추론 수행
'딥러닝 기초' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] 최적화 (1) | 2022.10.08 |
---|---|
[밑바닥부터 시작하는 딥러닝] 오차역전파 (0) | 2022.09.22 |
[밑바닥부터 시작하는 딥러닝] 신경망에서 학습 (0) | 2022.09.18 |
[밑바닥부터 시작하는 딥러닝] 신경망 (1) | 2022.09.04 |
[밑바닥부터 시작하는 딥러닝] 퍼셉트론 (1) | 2022.09.03 |