견적 및 전화 요청

지원

사용 중인 GPU를 활용한 대규모 모델 훈련

2021년 봄

중국 Yuanhao Wu

수석 알고리즘 엔지니어

2023년부터 마켓에 출시되는 제품의 경우, 로고와 로고 위치 변경이 예정되어 있습니다. 이에 실제 제품은 사진 및 영상 속 이미지와 다를 수 있습니다.

Z by HP 데이터 사이언스 글로벌 앰배서더인 Yuanhao Wu의 콘텐츠는 HP 제품 지원을 통해 제작되었습니다.

 

지난 게시물에서는 Kaggle 직소 다국어 악성 댓글 분류 대회에서 겪은 경험을 이야기했는데요. 당시 저는 11G VRAM이 탑재된 1080Ti만 사용하고 있어서 이보다 더 좋은 성능의 VRAM이 필요한 SOTA Roberta-XLM 대규모 모델을 훈련할 수 없었습니다. 이 게시물에서는 사용 중인 GPU로 대규모 심층 신경망을 훈련할 수 있도록 VRAM 사용량을 줄이는 방법에 대한 팁을 몇 가지 공유하려고 합니다.

 

첫 번째 팁은 혼합 정밀 훈련을 사용하는 것입니다. 모델을 훈련할 때는 보통 모든 매개 변수가 VRAM에 저장되는데, 총 VRAM 사용량은 저장된 매개 변수 수에 단일 매개 변수의 VRAM 사용량을 곱한 값과 같습니다. 모델 규모가 크면 성능이 더 좋아질뿐더러 VRAM도 더 많이 사용하게 됩니다. Kaggle 경진 대회는 물론이거니와 성능은 대개 타협할 수 없기 때문에, 보통 모델 용량을 줄이는 선택은 하지 않습니다. 메모리 사용량을 줄이는 유일한 방법은 모든 변수의 메모리 사용량을 줄이는 것입니다. 기본적으로 32비트 부동소수점이 사용되므로, 변수 1개가 4바이트를 소비한다고 보면 됩니다. 다행히도 정확성은 그대로 유지하면서 16비트 부동소수점을 사용할 수 있다는 사실이 발견되었고, 즉 메모리 소비를 절반으로 줄일 수 있게 되었습니다. 또한, 정밀도를 낮추면 특히 Tensor 코어를 탑재한 GPU에서 훈련 속도가 빨라집니다. 

 

1.5 이후 버전부터 PyTorch에서 자동 혼합 정밀 훈련을 지원하기 시작했습니다. 이 프레임워크는 완전한 정밀도가 필요한 모듈을 가려내 해당 모듈에는 32비트 부동소수점을 사용하고, 다른 모듈에는 16비트 부동소수점을 적용합니다. 아래는 공식 PyTorch 설명서에 나와 있는 샘플 코드입니다.

두 번째 팁은 그래디언트 축적을 사용하는 것입니다. 그래디언트 축적의 아이디어는 간단한데, 옵티마이저가 매개 변수를 업데이트하기 전에 동일한 모델 매개 변수를 사용하여 몇 가지 역방향 전달을 수행하는 것입니다. 각 후방 전달에서 계산된 그래디언트가 축적됩니다(합계). 실제 배치 크기가 N이고 M 단계의 그래디언트를 축적하면 배치 크기는 N*M과 같아집니다. 그러나 배치 정규화 통계처럼 일부 매개 변수는 완벽하게 누적될 수 없으므로, 훈련 결과가 한 치의 오차 없이 동일하지는 않습니다. 

 

그래디언트 축적에 대해 몇 가지 유의해야 할 사항이 있습니다.

 

  1. 혼합 정밀 훈련에서 그래디언트 축적을 사용할 경우 효과적인 배치를 위해 크기를 보정해야 하며, 효과적인 배치 세분화에 맞게 크기 업데이트가 이루어져야 합니다.
  2. DDP(Distributed Data Parallel) 훈련과 함께 그래디언트 축적을 사용할 경우 no_sync() 컨텍스트 관리자를 통해 첫 번째 M-1 단계에서 그래디언트 All-reduce를 비활성화합니다.

 

마지막 중요 팁은 그래디언트 체크포인트를 사용하는 것입니다. 그래디언트 체크포인트의 기본 개념은 일부 노드의 중간 결과를 체크포인트로 저장하고 역전파 동안 해당 노드 사이의 다른 부분을 재연산하는 것입니다. 그래디언트 체크포인트 저자에 따르면 그래디언트 체크포인트 덕분에 연산 시 GPU에 10배 큰 모델을 장착해도 사용량이 20%만 증대됩니다. 이 기능은 PyTorch 0.4.0 버전부터 공식 지원되며, Huggingface Transformers 등 아주 일반적으로 사용되는 일부 라이브러리에서도 제공됩니다.

 

변압기 모델을 사용하여 그래디언트 체크포인트를 설정하는 방법은 다음과 같습니다.

이 게시물의 끝 무렵에 HP Z4 워크스테이션으로 수행한 간단한 벤치마크 테스트를 공유하고자 합니다. 앞서 언급했듯 워크스테이션에는 24G VRAM RTX6000 GPU 2개가 탑재되어 있지만, 실험에서는 GPU를 하나만 사용했습니다. 다양한 구성으로 XLM-Roberta Base/Large를 훈련했고, Kaggle 직소 다국어 악성 댓글 분류 대회에서 제공된 훈련 세트를 사용했습니다.

보시다시피 혼합 정밀 훈련을 활용하면 메모리 소비가 줄어들 뿐만 아니라 속도도 상당히 향상됩니다. 그래디언트 체크포인트도 아주 효과적이어서 VRAM 사용량이 23.5G에서 11.8G로 확 줄었습니다. 이 기술을 조금만 일찍 알았더라면 오래전에 사용했던 11G 2080Ti GPU로도 XLM-Roberta Large 모델을 훈련할 수 있었을 테니 조금 아쉬워지네요.

질문이 있으신가요?
세일즈 서포트에 문의하세요. 

소셜 미디어에서 Z by HP 팔로우

Instagram

X

YouTube

LinkedIn

Facebook

제품 선택에 도움이 필요하신가요?

전화 요청

제품에 대한 지원이 필요하신가요?

지원 페이지로 이동

고지 사항

  1. 제품은 표시된 이미지와 다를 수 있습니다.

     

    제품 이미지는 단지 설명을 위한 것으로 나라별로 제품 가용성과 색상이 다를 수 있습니다.

     

    본 문서에 포함된 정보는 예고 없이 변경될 수 있습니다. HP 제품 및 서비스에 대한 유일한 보증 사항은 해당 제품 및 서비스와 함께 제공되는 보증서에 명시되어 있습니다. 여기에 설명된 내용 중 어느 것도 추가적인 보증을 제공하지 않습니다. HP는 여기에 포함된 기술적, 편집상 오류나 누락에 대해 책임을 지지 않습니다.