데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      NeMo Megatron 학습 하이퍼파라미터 최적화 도구 bignlp-hp-tool 사용법

      singleheart 23.01.25
      2,856 17 0

      소개

      GPT, T5, BERT와 같은 대형 언어 모델(LLM; Large Language Model)을 학습하려면 엔비디아(NVIDIA)사의 니모 메가트론(NeMo Megatron)이 가장 속도가 빠릅니다.

      모델이 대형화되면서 학습 시간이 오래 걸리기 때문에 하이퍼파리미터를 조금 바꾸어도 총 학습 시간이 차이가 날 수 있는데요,

      과거에는 일일이 손으로 파라미터를 조정해가며 실험을 돌렸지만 NVIDIA에서는 bignlp-hp-tool이라는 좋은 최적화 도구를 제공하기 때문에 조정이 한결 간편해졌습니다.

      최적화 가능 파라미터

      아래 네 가지 파라미터를 최적화할 수 있습니다. 보시다시피 속도만 최적화하고, learning rate나 global batch size처럼 모델의 성능(정확도)에 관계된 요소는 최적화하지 않으니 참고하세요.

      • tensor parallel size

      • pipeline parallel size

      • micro batch size

      • activation checkpoint layers 개수

      실행 방법

      아래와 같이 매우 간단합니다. pip 등의 패키지 설치도 필요하지 않습니다.

      python main.py

      설정 방법

      • 설정 파일은 conf 아래에 있습니다. conf/config.yaml을 먼저 확인하고 여기서 링크하는 파일을 확인하세요.

      conf/config.yaml

      • defaults.search_config 이것이 핵심입니다. gpt3/39B와 같이 모델 크기와 종류를 결정합니다

      • bignlp_hp_tool_path: bignlp_hp_tool의 절대경로를 적어줍니다.

      • bignlp_scripts_path: bignlp_scripts의 절대경로를 적어줍니다. inference 테스트시 bignlp_scripts/data/bpe/vocab.json을 참조하므로 주의하세요.

      conf/cluster/bcm.yaml

      • partition: slurm 파티션을 적어줍니다.

      • gpus_per_task: null

        • 반드시 null로 놔두십시오. 8로 수정하면 오류가 발생합니다.

      conf/search_config/gpt3/??b.yaml

      ※ 원하는 크기의 설정이 없는 경우, unknown_size.yaml을 복사해서 만들어줄 수 있습니다. 복사한 다음 아래 설정만 고치면 됩니다. layer 수, hidden size 등을 적을 필요가 없습니다.

      • train_settings

        • model_size_in_b: 원하는 모델 크기입니다

        • num_nodes: 테스트할 노드 수입니다

          • 메인 테스트만 이 수이고 여러 서브테스트가 있어서 자원을 더 사용하므로 주의하세요

        • max_training_days: 원하는 학습 기간으로 설정합니다

        • vocab_size

          • bignlp_scripts/data/bpe/vocab.json의 크기와 같아야 합니다.

        • tensor_parallel_sizes: auto로 놔두면 hp tool이 추천해 주지만, [8]로 고정시켜서 탐색을 줄입시다

        • pipeline_parallel_sizes: auto 놔두면 hp tool이 찾아줍니다

        • micro_batch_sizes: auto 놔두면 hp tool이 찾아줍니다

        • act_ckpt_layers: auto 놔두면 hp tool이 찾아줍니다

      • inference_settings

        • model_train_name: 잊지 말고 변경해주세요.

        • data_type: fp32, fp16, bf16 세 가지를 지원합니다.

        • tensor_parallel_sizes: [8]

      결과

      results/모델종류/모델크기/final_result 아래 csv 파일로 결과가 저장됩니다. 아래에 결과 예시가 있습니다. 이 결과에 따르면 tensor parallel (TP)은 8, pipeline parallel (PP)은 2, micro batch size (MBS)는 10일 때가 최적입니다. 다만, 노드 2개를 사용해서 실험한 것이므로 노드 개수가 많아지면 최적 파라미터는 달라질 수 있습니다.

      Model Name

      Model Size

      TP

      PP

      MBS

      Act Ckpt Layers

      Num Layers

      Hidden Size

      GBS

      Nodes

      GPUs per Node

      Time per Step

      Samples per Second

      Model TFLOPS / GPU

      Model TFLOPS Aggregate

      HW TFLOPS / GPU

      HW TFLOPS Aggregate

      Config Name

      gpt3

      18

      8

      2

      10

      selective

      38

      6144

      1440

      2

      8

      136.639

      10.54

      149.61

      2393.71

      152.19

      2434.99

      tp8_pp2_mbs10_act_selective

      gpt3

      18

      4

      2

      1

      selective

      38

      6144

      1440

      2

      8

      137.6282

      10.46

      148.53

      2376.51

      151.09

      2417.49

      tp4_pp2_mbs1_act_selective

      gpt3

      18

      8

      2

      6

      selective

      38

      6144

      1440

      2

      8

      138.0027

      10.43

      148.13

      2370.06

      150.68

      2410.93

      tp8_pp2_mbs6_act_selective

      gpt3

      18

      8

      2

      2

      selective

      38

      6144

      1440

      2

      8

      149.9078

      9.61

      136.36

      2181.84

      138.72

      2219.46

      tp8_pp2_mbs2_act_selective

      gpt3

      18

      8

      2

      1

      selective

      38

      6144

      1440

      2

      8

      207.8987

      6.93

      98.33

      1573.24

      100.02

      1600.37

      tp8_pp2_mbs1_act_selective

      gpt3

      18

      8

      1

      1

      selective

      38

      6144

      1440

      2

      8

      227.2028

      6.34

      89.97

      1439.57

      91.52

      1464.4

      tp8_pp1_mbs1_act_selective

      참고자료

      NVIDIA NeMo Megatron

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      singleheart 님의 최신 블로그

      더보기
      동영상 기고하기