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

https://lambdalabs.com/gpu-benchmarks
https://github.com/full-stack-deep-learning/website/blob/main/docs/cloud-gpus/cloud-gpus.csv

 

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에 대한 기본 지식 부족함을 느낌
    • 쿠버네티스 따로 공부 필요