Graphcore IPU 통합을 위한 Hugging Face Optimum

Hugging Face는 Graphcore와 파트너십을 맺어 Optimum 라이브러리를 Graphcore Intelligence Processing Units(IPU)와 통합하여, AI 워크로드에 특화된 하드웨어에서 Transformer 모델의 가속을 가능하게 했습니다. 이 통합을 통해 개발자는 최소한의 코드 변경으로 예측 지연을 줄이고 최첨단 모델의 훈련 및 파인튜닝을 최적화할 수 있습니다.

IPU용 최적화된 BERT

BERT는 이번 파트너십을 통해 IPU용으로 최적화된 첫 번째 모델입니다. Graphcore 엔지니어들은 Hugging Face Transformers를 사용하여 BERT를 구현 및 최적화하여 IPU 시스템에서 모델의 훈련 및 가속 프로세스를 간소화했습니다. Hugging Face는 앞으로 몇 달 동안 비전, 음성, 번역, 텍스트 생성 모델을 포함한 지원을 확대할 계획입니다.

기술 설정 및 환경

Graphcore 하드웨어에서 Optimum을 활용하려면 Poplar SDK와 PopTorch를 포함하는 특정 소프트웨어 스택을 구성해야 합니다.

Poplar SDK 및 PopTorch 구성

사용자는 먼저 Poplar과 PopART(Poplar Advanced Runtime)용 enable 스크립트를 실행하여 Poplar SDK 환경을 설정해야 합니다. Ubuntu 18.04에서 Poplar SDK 버전 2.3을 실행하는 시스템의 경우, 환경 변수는 일반적으로 /opt/gc/ 디렉터리 내에서 설정됩니다.

PopTorch는 Poplar SDK의 구성 요소로, PyTorch 모델을 IPU에서 실행할 수 있게 합니다. SDK 버전에 해당하는 PopTorch 휠 파일을 설치하기 위해 전용 가상 환경이 필요합니다.

Optimum Graphcore 설치

optimum[graphcore] 패키지는 Hugging Face Transformers 라이브러리와 Graphcore IPU 사이의 인터페이스 역할을 합니다. 이 패키지는 활성화된 PopTorch 가상 환경 내에서 설치해야 합니다.

SQuAD 1.1에서 BERT 파인튜닝

Optimum은 run_qa.py 스크립트를 사용하여 SQuAD 1.1 데이터셋에서 BERT 파인튜닝을 위한 간소화된 워크플로를 제공합니다. 이 과정에는 Hugging Face Tokenizers 라이브러리를 기반으로 한 빠른 토크나이저와 IPU 하드웨어를 구성하는 ipu_config.json 파일이 필요합니다.

훈련 워크플로

훈련은 Optimum의 IPUTrainer 클래스를 통해 촉진되며, 이를 통해 모델은 Graphcore 하드웨어와 소프트웨어 스택을 활용할 수 있습니다. 이 과정에서는 사전 훈련된 모델(예: bert-base-uncased)을 로드하고 Hugging Face Datasets 라이브러리를 사용하여 SQuAD v1.1 훈련 및 검증 파일을 관리합니다.

성능 결과

배치 크기가 디바이스당 2이고 학습률이 6e-5인 조건에서 3 에포크 동안 BERT 모델을 파인튜닝한 결과는 다음과 같습니다:

  • 훈련 메트릭:
    • Train Loss: 0.9465060763888888
    • Train Runtime: 368.4015
    • Train Samples: 88,524
    • Train Samples per Second: 720.877
    • Train Steps per Second: 2.809
  • 검증 메트릭:
    • Exact Match: 80.6623
    • F1 Score: 88.2757
    • Eval Samples: 10,784

Sources

관련