Full Stack Deep Learning
Full Stack Deep Learning - Lecture 2
뿅삥
2023. 3. 12. 21:17
Lecture 2 Development Infrastructure & Tooling
이번 강의에서는 딥러닝 프레임워크, 분산학습, GPU 및 GPU 클라우드 서버 그리고 ML관련 여러 툴에 대한 내용들에 대해 말합니다.
왜 Pytorch 인가?
- 파이토치 모델이 많음
- TorchScript로 모델 컴파일하면 속도 더 빨라짐
- 훌륭한 분산 학습 생태계가 있음
- 비젼,오디오,3D데이터등을 위한 라이브러리가 있음
- 파이토치 라이트닝은 잘 구조화 되어있기 때문에, 파이토치 라이트닝의 규칙대로 코드를 구성하면 쉽게 실행가능
- FastAI도 좋은 대안이지만 파이토치와 코드 스타일이 다름
- 텐서플로우를 써야만 하는 상황이라면 텐서플로우도 훌륭한 프레임워크임
- Jax의 Flax or Haiku도 써야만 한다면 써라
- 상황에 따라 알맞게 쓰기, 하지만 선택할 수 있다면 파이토치를 가장 추천
Meta-frameworks and model zoos
- 다른이들이 개발하고 발표한 모델 아키텍처(혹은 weight값)를 사용하게 된다.
- 이 모델/코드등을 모아둔 곳이 model zoo이다.
- ONNX는 딥러닝 모델의 저장(혹은 배포,공유)을 위한 표준이다.
- HuggingFace는 가장 유명한 Model zoo이다.
- TIMM은 Vision을 위한 Model zoo이다.
Distributed Training
Data Parallelism
- 싱글 배치 데이터를 여러 gpu에 분산시킴
- 각 gpu에서의 gradients의 평균을 구함
- gpu간 상호 연결 속도가 빠르게 해야함
Speedup
위에서 말한 상호 연결 속도가 느린 경우 예시임
- A100, V100 gpu의 경우 gpu개수가 4개 늘어나면? → 속도 4배 증가
- 2080s,3080s gpu의 경우 gpu개수가 4개 늘어나면? → 속도 3배 증가
- gpu간 상호 연결 속도가 A100,V100만큼 빠르지 않기 때문임
1개의 gpu에 모델이 올라가지 않을경우 어떻게 해야 하는가?
Sharded data-parrallelism
ZeRO-3?
fully-sharded data-parallelism
원칙 : 그 순간에 필요한 파라미터를 gpu에 보낸다
conclusion
1. DDP 시도
2. ZeRO-3/ Full-Sharded Data Parallel 시도
다른 방법들?
- DeepSpeed
- Fairscale
- NLP : 포지션 인코딩 대신 Alibi를 사용
- Vision : image size warmup, smooth labels, optimizer, ..etc
Alibi 설명 블로그
Computing이 왜 중요한가
- 파라미터수가 계속 증가한다
- 이에 따른 컴퓨팅 중요성 증가
GPU comparision
GPU서버 선택시 고려사항
- 시간당 비용이 비싼것이 꼭 비용증가를 야기하지 않는다.
- 좋은 gpu를 사용하여 모델 학습 속도를 줄이면 오히려 사용량은 더 감소한다.
- 시간당 가장 비싼 gpu카드를 선택한다.
- startups은 다른 대기업( GCP,AWS,...)보다 훨씬 저렴하다.
Resource Management
우리가 필요한 것
1. Machine(피씨) + GPU
2. Setup (파이썬, CUDA 및 다른 필수 환경들)
3. Data
해결책
1. Manual
2. SLURM
3. Docker + Kubernetes
4. ML에 특화된 소프트웨어
- AWS SageMaker
- Anyscale
- Grid.ai
- Determined.ai
Experiment Management
Tensorboard
MLflow
Weights & Biases
Hyperparams Optimization
W&B Sweeps
SageMaker
Determined.ai
Ray
느낀점
- 나중에 직접 서버 세팅하게 될 경우가 생길때 도움될 내용들이 많았음
- gpu 클라우드 서버의 경우도 비싼 gpu가 시간당 사용량이 비싸지만 실제 서버 구동 비용을 계산하면 오히려 더 효율적일 수 있다는 사실은 미처 생각하지 못했음
- 분산 학습 , 학습 속도 증대를 위한 기법들도 신기술이 나오면 꾸준히 F/U해야겠다고 느낌
- Resource Management에 대한 기본 지식 부족함을 느낌
- 쿠버네티스 따로 공부 필요