GPU H100 - Transformer Engine - 03.성능최적화

2023. 7. 28. 18:17·Computer Science/하드웨어

Performance Optimizations

TE엔진 사용법에 이어서 최적화하는 방법이다. GPT encoder Layer를 기준으로 소개한다.

quickstart_utils.py 의 함수를 사용해서 적용해보자.

 

import torch
import transformer_engine.pytorch as te
from transformer_engine.common.recipe import Format, DelayedScaling
import quickstart_utils as utils

# Layer configuration
hidden_size = 4096
sequence_length = 2048
batch_size = 4
ffn_hidden_size = 16384
num_attention_heads = 32
dtype = torch.float16

# Synthetic data
x = torch.rand(sequence_length, batch_size, hidden_size).cuda().to(dtype=dtype)
dy = torch.rand(sequence_length, batch_size, hidden_size).cuda().to(dtype=dtype)
# Construct layer
basic_transformer = te.TransformerLayer(
    hidden_size,
    ffn_hidden_size,
    num_attention_heads,
)
basic_transformer.to(dtype=dtype).cuda()

fp8_format = Format.HYBRID
fp8_recipe = DelayedScaling(
    fp8_format=fp8_format,
    amax_history_len=16,
    amax_compute_algo="max",
)
# Training step
with te.fp8_autocast(enabled=True, fp8_recipe=fp8_recipe):
    y = basic_transformer(x, attention_mask=None)
y.backward(dy)

# Measure step time
utils.speedometer(
    basic_transformer,
    x,
    dy,
    forward_kwargs = { "attention_mask": None },
    fp8_autocast_kwargs = { "enabled": True, "fp8_recipe": fp8_recipe },
)
Mean time: 27.82952880859375 ms

 

Multi-GPU Training

Multi-GPU를 사용하기위해서는 일반적으로 데이터 병렬화하여 분산시키는 방법을 생각해 볼 수 있다. 

주로 Batch size 크기를 GPU수만큼 나눠서 학습을 진행한다. 각 GPU에 모델의 복사본을 저장하고 

forward, backward 을 단계별로 진행할 때 Gradient 업데이트를 독립적으로 진행한다. 

 한 단계 업그레이드 된 방법으로는 Tensor를 hidden size에 따라 나눠서 병렬화할 수 있다. 텐서를?

어떻게? 히든사이즈는 뭐지? 

'Computer Science > 하드웨어' 카테고리의 다른 글

H100 GPU - PCIe vs SXM_[Performance Profile of Transformer Fine-Tuning in Multi-GPU Cloud Environments]  (0) 2023.08.01
GPU H100 - Transformer Engine - 02.적용하는법/ Docs review(Getting Started)  (0) 2023.07.28
GPU H100 Transformer engine - 01. 작동원리  (0) 2023.07.27
'Computer Science/하드웨어' 카테고리의 다른 글
  • H100 GPU - PCIe vs SXM_[Performance Profile of Transformer Fine-Tuning in Multi-GPU Cloud Environments]
  • GPU H100 - Transformer Engine - 02.적용하는법/ Docs review(Getting Started)
  • GPU H100 Transformer engine - 01. 작동원리
버터젤리
버터젤리
  • 버터젤리
    across the universe
    버터젤리
  • 전체
    오늘
    어제
    • 분류 전체보기 (128)
      • 데이터 엔지니어 (0)
        • MLOPs (0)
      • 인프라 및 클라우드 (0)
        • Docker (0)
        • Kubernetes (0)
      • Development(개발) (2)
        • 백엔드 (0)
        • 개발 Core (2)
      • LLM (4)
        • 강화학습 (0)
        • LLM (4)
        • Generator (0)
      • PM (7)
        • IT Trends (0)
        • 세미나 후기 (7)
      • Deep learning (30)
        • 기초이론 (8)
        • 컴퓨터비전 (6)
        • 자연어처리 (5)
        • Anomaly Detection (6)
      • Machine learning (25)
      • Computer Science (26)
        • Linux (21)
        • 네트워크 (1)
        • 하드웨어 (4)
        • 운영체제(OS) (0)
      • 프로그래밍 언어 (17)
        • Python (8)
        • Pytorch (8)
        • Tensorflow (0)
      • Tools (14)
        • 주피터노트북 (7)
        • 깃(Git) (2)
        • 파이참 (5)
      • Book (2)
      • LIFE (0)
      • 창고 (0)
        • AI 인턴 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    객사오
    BN
    BatchNormalization
    #git#github
    역할과책임
    jupyer notebook
    객체지향
    nohup
    데코레이터
    batch normalization
    책임
    리눅스#파일이동#특정이름#포함
    백그라운드
    객체지향의사실과오해
    역할
    @
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
버터젤리
GPU H100 - Transformer Engine - 03.성능최적화
상단으로

티스토리툴바