1️⃣Accelerator

Accelerator

대규모 언어 모델(LLM)은 자연어 처리 분야에 혁명을 일으켰습니다. 이러한 모델의 크기와 복잡성이 커짐에 따라 추론에 대한 계산 요구도 크게 증가합니다.

이 문제를 해결하려면 여러 개의 GPU를 활용하는 것이 필수적입니다.

Huggingface에서 제공하는 Accelerator 패키지는 쉽게 Multi-GPU 학습과 추론을 가능하게 해줍니다.

기본적으로 Pytorch 대규모 데이터의 학습과 추론에 사용할 수 있으며, LLM 모델에도 적용 가능합니다.

Accelerator Basic

%pip install accelerator
from accelerate import Accelerator
from accelerate.utils import gather_object

accelerator = Accelerator()

# 각 GPU는 문자열을 생성합니다.
message=[ f"Hello this is GPU {accelerator.process_index}" ] 

# 모든 GPU에서 메시지를 수집합니다.
messages=gather_object(message)

# accelertor.print()를 사용하여 메인 프로세스에서만 메시지를 출력합니다.
accelerator.print(messages)

Multi GPU LLM inference

  1. Meta의 Llama-3-8B 모델 사용

  2. 펭귄북의 클래식 문장 10개 * 10개를 프롬프트로 입력

  3. Accelerator()를 사용하여 GPU 병렬 추론 수행

  4. 병렬 추론 된 결과를 모두 수집하여 병합

Multi GPU inference (batched)

  1. Meta의 Llama-3-8B 모델 사용

  2. 펭귄북의 클래식 문장 10개 * 10개를 프롬프트로 입력

  3. Tokenized 데이터를 Batch 화

  4. Accelerator()를 사용하여 GPU 배치 병렬 추론 수행

  5. 병렬 추론 된 결과를 모두 수집하여 병합

Conclution

tokens/sec: 24.0, time 390.7256546020508, total tokens 9479, total prompts 100

tokens/sec: 57.0, time elapsed: 173.17202281951904, num_tokens 10000

  • Prompt 100개에 대하여 accelerator로 가속했을 때 390s가 걸렸습니다.

  • Token 수 10,000개를 Batch로 넣었을 했을 때 추론에 173s가 걸렸습니다.

Last updated