[이화여대 강의] 2. Deep Learning Software Stack 1 (1)

2024. 9. 20. 16:35 · 머신러닝 이모저모
목차
  1. General Deep Learning software stack
  2. pytorch source structure
  3. ATen (A Tensor library)

** 본 강의의 software stack 은 NVIDIA GPU 기준으로 설명된다. 왜냐하면 엔비디아는 software stack(gpu 를 원할하게 사용할 수 있는 환경 구축)이 잘되어있기 때문이다.

deep learning 라이브러리와 hardware 사이의 software stack 이 잘되어있는 것이 중요하다.

 

General Deep Learning software stack

 

아래에 있는 모든 hierarchy 를 software stack 이라고 부른다.

 

2024-1 인공지능융합기반시스템개론 ❘ 이화여자대학교 심재형 교수님 ppt

 

 

위에서 High-level api 부터 아주 간단하게 보면,

Keras 는 (파이토치에는 해당되지 않지만) Tensorflow 딥러닝 라이브러리보다는 상위레벨이다.

 

Distributed DL 프레임워크는 Horovod 가 있다. (멀티 gpu 이상의, 멀티 노드에서의) 분산학습을 쉽게 하기 위한 프레임워크이다.

 

Acceleration 라이브러리는 직접 하드웨어에서 실행할 수 있는 GPU instruction 들이 저장되어있다. 이 instruction 들을 API, Program language 로 구현한다.

 

그리고 맨 마지막에 하드웨어가 있다.

** FPGA : 하드웨어를 프로그래밍할 수 있는 칩. 하드웨어 언어로 프로그래밍해서 원하는 cpu 나 gpu 를 만들 수 있다.

 

pytorch source structure

파이토치 라이브러리는 크게 4가지 디렉토리가 존재한다.

 

  • torch/ : front-end 담당, nn.Linear 등이 사용자와 인터페이싱하고있는 모듈이 저장되어있다. 파이썬으로 이루어져 있기 때문에 (인터프리터와 컴파일러로 이루어져있어서) 느리다.
  • torch/csrc/ : 파이썬과 c 를 이어주는 binding 이 구현되있다. c로 구현되어 있다.
    • api/ : cpp(씨쁠쁠) API
    • autograd/
    • jit/ : TorchScript
  • aten/src/ATen/ : A Tensor 라이브러리의 약자. 텐서에 수행하는 operation 들(conv, matmul, etc) 이 구현되어 있다.
    • native/ : implemenatation → 어떤 하드웨어를 사용하냐에 따라 어떤 코드를 사용할지 결정된다.
    • /TH, THC : legacy 코드.
  • c10/ : TensorImpl 등

 

ATen (A Tensor library)

Pytorch default Runtime Execution

2024-1 인공지능융합기반시스템개론 ❘ 이화여자대학교 심재형 교수님 ppt

 

aten 은 tensor mathematical operation library 로, 

파이썬은 느리기 때문에 사용자가 사용하기 쉽도록하는 프론트엔드의 역할만 할 뿐 실제 계산 라이브러리는 (c, cpp, cuda) 등 다른 언어로 이루어져 있다.

사용자가 사용하는 하드웨어가 무엇이냐에 따라 Aten 이 어떤 코드를 돌리는지 결정한다.

예를 들면, gpu→cuda를 사용 등.

 

#include <ATen/ATen.h>

at::Tensor a = at::ones({2, 2}, at::kInt);
at::Tensor b = at::randn({2, 2});
auto c = a + b.to(at::kInt);

 

위는 aten 코드의 간단한 예시이다.

 

Anatomy if an Operator Call

예시 1 : torch.add()

2024-1 인공지능융합기반시스템개론 ❘ 이화여자대학교 심재형 교수님 ppt

 

torch.add 함수는 위 그림과 같은 단계를 거쳐 실행된다.

 

Python argument parsing 으로 python→cpp 로 넘긴다.

Variable Type 에서 float point 인지 integer 인지 데이터형을 정한다.

Type 에서 device type 과 layout(data가 메모리에 어떻게 mapping 되어있는지) 을 결정한다.

이후 Naitive function 안에 연결되어있는 kernel(operator 를 구현하는 단위)을 실행한다.

 

예시2: conv

torch 의 Conv2d 를 실행시키면 F.conv2d() 가 실행된다. (F=torch.functional, 파이썬의 프론트엔드같은 개념)

→ F에서 aten 을 호출한다.

→ aTen 에서 naitive 폴더의 Convolution.cpp 에 구현된 conv 를 실행한다.

 

pytorch/aten/src/ATen/native/ : Aten github 에서 다음 디렉토리로 들어가면 cpp 로 구현된 convolution 등 다양한 함수들이 있다.

2024-1 인공지능융합기반시스템개론 ❘ 이화여자대학교 심재형 교수님 ppt

위 코드에서 어떤 device 에 따라 계산 라이브러리를 사용할 것인지가 결정된다.

 

'머신러닝 이모저모' 카테고리의 다른 글

[이화여대 강의] 2. Deep Learning Software Stack 1 (3)  (3) 2024.09.21
[이화여대 강의] 2. Deep Learning Software Stack 1 (2)  (0) 2024.09.20
[이화여대 강의] Orientation  (0) 2024.09.20
Precision 개념  (0) 2024.02.18
VScode 에서 tmux 사용하기  (0) 2024.01.03
  1. General Deep Learning software stack
  2. pytorch source structure
  3. ATen (A Tensor library)
'머신러닝 이모저모' 카테고리의 다른 글
  • [이화여대 강의] 2. Deep Learning Software Stack 1 (3)
  • [이화여대 강의] 2. Deep Learning Software Stack 1 (2)
  • [이화여대 강의] Orientation
  • Precision 개념
섬섬옥수수
섬섬옥수수
컴공 AI 개발자가 되기 위한 노역입니다
섬섬옥수수
아날로그 인간의 컴공 되기
섬섬옥수수
전체
오늘
어제
  • 분류 전체보기
    • 백준 단계별 코딩 테스트
    • KB 논문 정리
    • Memory network 논문 정리
    • LLM 관련 논문 정리
    • Python 및 Torch 코딩 이모저모
    • Clustering 관련 논문 정리
    • 머신러닝 이모저모
    • 암호학

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩테스트
  • 백준
  • vocabulary expansion
  • 티스토리챌린지
  • 심재형
  • 소프트웨어
  • GIT
  • dependency tree
  • efficient and effective vocabulary expansion towards multilingual large language models
  • CUDA
  • ragas
  • 인공지능융합기반시스템개론
  • eeve
  • e5-v
  • 이화여대
  • constituency tree
  • 하드웨어
  • 문제풀이
  • 오블완
  • PEFT

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
섬섬옥수수
[이화여대 강의] 2. Deep Learning Software Stack 1 (1)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.