>  기사  >  기술 주변기기  >  코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

WBOY
WBOY앞으로
2023-04-11 12:16:031099검색

PyTorch "연금술"의 속도를 높이는 방법은 무엇입니까?

최근 유명한 기계 학습 및 AI 연구원인 Sebastian Raschka가 그의 비법을 보여주었습니다. 그에 따르면, 그의 방법은 모델의 정확도에 영향을 주지 않고 코드 몇 줄만 변경하여 BERT 최적화 시간을 22.63분에서 3.15분으로 줄였으며, 훈련 속도는 7배나 향상되었습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

저자는 심지어 8개의 GPU를 사용할 수 있는 경우 전체 훈련 과정이 2분 밖에 걸리지 않아 11.5배의 성능 가속을 달성한다고 말했습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

그가 어떻게 그것을 달성했는지 살펴보겠습니다.

PyTorch 모델 학습 속도 향상

우선 모델은 BERT의 간소화된 버전인 DistilBERT 모델을 사용하지만 규모는 40% 감소합니다. 성능 손실이 거의 없습니다. 두 번째는 데이터 세트입니다. 훈련 데이터 세트는 총 50,000개의 영화 리뷰가 포함된 대규모 영화 리뷰 데이터 세트인 IMDB Large Movie Review입니다. 저자는 아래 그림의 방법 c를 사용하여 데이터세트의 영화 리뷰 감정을 예측합니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

기본 작업을 명확하게 설명한 후 PyTorch의 학습 과정은 다음과 같습니다. 모든 사람이 이 작업을 더 잘 이해할 수 있도록 저자는 준비 운동, 즉 IMDB 영화 리뷰 데이터 세트에서 DistilBERT 모델을 훈련하는 방법도 자세히 소개합니다. 코드를 직접 실행하려면 아래와 같이 관련 Python 라이브러리를 사용하여 가상 환경을 설정하면 됩니다.

해당 소프트웨어 버전은 다음과 같습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

이제 지루한 내용은 건너뛰세요. 데이터 로딩에 대한 소개를 위해 이 기사에서는 데이터 세트를 35,000개의 훈련 예제, 5,000개의 검증 예제 및 10,000개의 테스트 예제로 나눈다는 점만 알아두면 됩니다. 필요한 코드는 다음과 같습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

코드 부분 스크린샷

전체 코드 주소:

​https://github.com/rasbt /빠른 er-pytorch -blog/blob/main/1_pytorch-distilbert.py​

그런 다음 A100 GPU에서 코드를 실행하고 다음 결과를 얻습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

일부 결과의 스크린샷

위에서 언급한 것처럼 코드에서 볼 수 있듯이 2라운드부터 3라운드까지 모델이 약간 과적합되어 검증 정확도가 92.89%에서 92.09%로 떨어집니다. 22.63분 동안 모델을 미세 조정한 후 최종 테스트 정확도는 91.43%였습니다.

Trainer 클래스 사용

다음 단계는 위 코드를 개선하는 것입니다. 개선 부분은 주로 Lightning의 Trainer 클래스를 사용할 수 있도록 LightningModule에 PyTorch 모델을 래핑하는 것입니다. 일부 코드 스크린샷은 다음과 같습니다:

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

전체 코드 주소: https://github.com/rasbt/faster-pytorch-blog/blob/main/2_pytorch-with-trainer.py

위 코드는 훈련, 검증 및 테스트를 수행하는 방법을 정의하는 LightningModule입니다. 이전에 제공된 코드와 비교하여 주요 변경 사항은 모델을 미세 조정하는 Part 5(예: ### 5 Finetuning)입니다. 이전과 달리 미세 조정 부분에서는 LightningModel 클래스에 PyTorch 모델을 래핑하고 Trainer 클래스를 사용하여 모델을 맞춥니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

이전 코드에서는 2라운드부터 3라운드까지 유효성 검사 정확도가 떨어지는 현상이 나타났으나 개선된 코드에서는 ModelCheckpoint를 사용하여 최상의 모델을 로드합니다. 동일한 기계에서 모델은 23.09분 만에 92%의 테스트 정확도를 달성했습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

체크포인트를 비활성화하고 PyTorch가 비결정적 모드에서 실행되도록 허용하면 이 실행은 일반 PyTorch와 동일한 실행 시간을 갖게 됩니다(23.09분이 아닌 22.63분).

자동 혼합 정밀도 훈련

또한 GPU가 혼합 정밀도 훈련을 지원하는 경우 GPU를 켜서 컴퓨팅 효율성을 향상시킬 수 있습니다. 저자는 정확도를 희생하지 않고 32비트와 16비트 부동 소수점 사이를 전환하는 자동 혼합 정밀도 교육을 사용합니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

이 최적화에서는 Trainer 클래스를 사용하여 한 줄의 코드로 자동 혼합 정밀도 교육을 수행할 수 있습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

위 작업을 통해 교육 시간을 줄일 수 있습니다. 23.09분에서 8.75분으로 단축되어 거의 3배 빨라졌습니다. 테스트 세트의 정확도는 92.2%로 이전 92.0%보다 약간 향상되었습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

Torch.Compile 정적 그래프 사용

최근 PyTorch 2.0 발표에서는 PyTorch 팀이 새로운 toch.compile 기능을 도입했음을 보여줍니다. 이 기능은 PyTorch 코드를 실행하기 위해 동적 그래프를 사용하는 대신 최적화된 정적 그래프를 생성하여 PyTorch 코드 실행 속도를 높일 수 있습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

PyTorch 2.0이 아직 공식적으로 출시되지 않았기 때문에 이 기능을 사용하려면 먼저 torchtriton을 설치하고 최신 버전의 PyTorch로 업데이트해야 합니다.一 그런 다음 다음 줄을 추가하여 코드를 수정합니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.


4 GPU의 Lady 데이터

위에서는 단일 GPU에서 가속 코드의 혼합 정밀도 교육을 소개합니다. 다음으로 다중 GPU 교육 전략을 소개합니다. 아래 그림에는 여러 가지 다중 GPU 훈련 기술이 요약되어 있습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

분산 데이터 병렬성을 달성하려면 DistributedDataParallel을 통해 달성할 수 있습니다. Trainer를 사용하려면 코드 한 줄만 수정하면 됩니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

이 최적화 단계 후 4개의 A100 GPU에서 이 코드는 3.52분 동안 실행되었으며 93.1%의 테스트 정확도에 도달했습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

DeepSpeed

마지막으로 저자는 딥러닝 최적화 라이브러리 DeepSpeed의 사용 방법을 살펴봅니다. 트레이너 및 다중 GPU 전략 결과. 먼저 DeepSpeed ​​​​라이브러리를 설치해야 합니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

그런 다음 라이브러리를 활성화하려면 코드 한 줄만 변경하면 됩니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

이 웨이브 이후에는 시간이 걸렸습니다. 테스트 정확도는 3.15분입니다. 그러나 PyTorch에는 DeepSpeed에 대한 대안도 있습니다. 완전히 샤딩된 DataParallel은 strategy="fsdp"로 호출되었으며, 최종적으로 완료하는 데 3.62분이 걸렸습니다.

코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.

위 내용은 PyTorch 모델의 학습 속도를 향상시키는 저자의 방법입니다. 관심 있는 친구들은 원본 블로그를 팔로우하여 시도해 볼 수 있습니다.

위 내용은 코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제