PyTorch "연금술"의 속도를 높이는 방법은 무엇입니까?
최근 유명한 기계 학습 및 AI 연구원인 Sebastian Raschka가 그의 비법을 보여주었습니다. 그에 따르면, 그의 방법은 모델의 정확도에 영향을 주지 않고 코드 몇 줄만 변경하여 BERT 최적화 시간을 22.63분에서 3.15분으로 줄였으며, 훈련 속도는 7배나 향상되었습니다.
저자는 심지어 8개의 GPU를 사용할 수 있는 경우 전체 훈련 과정이 2분 밖에 걸리지 않아 11.5배의 성능 가속을 달성한다고 말했습니다.
그가 어떻게 그것을 달성했는지 살펴보겠습니다.
PyTorch 모델 학습 속도 향상
우선 모델은 BERT의 간소화된 버전인 DistilBERT 모델을 사용하지만 규모는 40% 감소합니다. 성능 손실이 거의 없습니다. 두 번째는 데이터 세트입니다. 훈련 데이터 세트는 총 50,000개의 영화 리뷰가 포함된 대규모 영화 리뷰 데이터 세트인 IMDB Large Movie Review입니다. 저자는 아래 그림의 방법 c를 사용하여 데이터세트의 영화 리뷰 감정을 예측합니다.
기본 작업을 명확하게 설명한 후 PyTorch의 학습 과정은 다음과 같습니다. 모든 사람이 이 작업을 더 잘 이해할 수 있도록 저자는 준비 운동, 즉 IMDB 영화 리뷰 데이터 세트에서 DistilBERT 모델을 훈련하는 방법도 자세히 소개합니다. 코드를 직접 실행하려면 아래와 같이 관련 Python 라이브러리를 사용하여 가상 환경을 설정하면 됩니다.
해당 소프트웨어 버전은 다음과 같습니다.
이제 지루한 내용은 건너뛰세요. 데이터 로딩에 대한 소개를 위해 이 기사에서는 데이터 세트를 35,000개의 훈련 예제, 5,000개의 검증 예제 및 10,000개의 테스트 예제로 나눈다는 점만 알아두면 됩니다. 필요한 코드는 다음과 같습니다.
코드 부분 스크린샷
전체 코드 주소:
https://github.com/rasbt /빠른 er-pytorch -blog/blob/main/1_pytorch-distilbert.py
그런 다음 A100 GPU에서 코드를 실행하고 다음 결과를 얻습니다.
일부 결과의 스크린샷
위에서 언급한 것처럼 코드에서 볼 수 있듯이 2라운드부터 3라운드까지 모델이 약간 과적합되어 검증 정확도가 92.89%에서 92.09%로 떨어집니다. 22.63분 동안 모델을 미세 조정한 후 최종 테스트 정확도는 91.43%였습니다.
Trainer 클래스 사용
다음 단계는 위 코드를 개선하는 것입니다. 개선 부분은 주로 Lightning의 Trainer 클래스를 사용할 수 있도록 LightningModule에 PyTorch 모델을 래핑하는 것입니다. 일부 코드 스크린샷은 다음과 같습니다:
전체 코드 주소: https://github.com/rasbt/faster-pytorch-blog/blob/main/2_pytorch-with-trainer.py
위 코드는 훈련, 검증 및 테스트를 수행하는 방법을 정의하는 LightningModule입니다. 이전에 제공된 코드와 비교하여 주요 변경 사항은 모델을 미세 조정하는 Part 5(예: ### 5 Finetuning)입니다. 이전과 달리 미세 조정 부분에서는 LightningModel 클래스에 PyTorch 모델을 래핑하고 Trainer 클래스를 사용하여 모델을 맞춥니다.
이전 코드에서는 2라운드부터 3라운드까지 유효성 검사 정확도가 떨어지는 현상이 나타났으나 개선된 코드에서는 ModelCheckpoint를 사용하여 최상의 모델을 로드합니다. 동일한 기계에서 모델은 23.09분 만에 92%의 테스트 정확도를 달성했습니다.
체크포인트를 비활성화하고 PyTorch가 비결정적 모드에서 실행되도록 허용하면 이 실행은 일반 PyTorch와 동일한 실행 시간을 갖게 됩니다(23.09분이 아닌 22.63분).
자동 혼합 정밀도 훈련
또한 GPU가 혼합 정밀도 훈련을 지원하는 경우 GPU를 켜서 컴퓨팅 효율성을 향상시킬 수 있습니다. 저자는 정확도를 희생하지 않고 32비트와 16비트 부동 소수점 사이를 전환하는 자동 혼합 정밀도 교육을 사용합니다.
이 최적화에서는 Trainer 클래스를 사용하여 한 줄의 코드로 자동 혼합 정밀도 교육을 수행할 수 있습니다.
위 작업을 통해 교육 시간을 줄일 수 있습니다. 23.09분에서 8.75분으로 단축되어 거의 3배 빨라졌습니다. 테스트 세트의 정확도는 92.2%로 이전 92.0%보다 약간 향상되었습니다.
Torch.Compile 정적 그래프 사용
최근 PyTorch 2.0 발표에서는 PyTorch 팀이 새로운 toch.compile 기능을 도입했음을 보여줍니다. 이 기능은 PyTorch 코드를 실행하기 위해 동적 그래프를 사용하는 대신 최적화된 정적 그래프를 생성하여 PyTorch 코드 실행 속도를 높일 수 있습니다.
PyTorch 2.0이 아직 공식적으로 출시되지 않았기 때문에 이 기능을 사용하려면 먼저 torchtriton을 설치하고 최신 버전의 PyTorch로 업데이트해야 합니다.一 그런 다음 다음 줄을 추가하여 코드를 수정합니다.
위에서는 단일 GPU에서 가속 코드의 혼합 정밀도 교육을 소개합니다. 다음으로 다중 GPU 교육 전략을 소개합니다. 아래 그림에는 여러 가지 다중 GPU 훈련 기술이 요약되어 있습니다.
분산 데이터 병렬성을 달성하려면 DistributedDataParallel을 통해 달성할 수 있습니다. Trainer를 사용하려면 코드 한 줄만 수정하면 됩니다.
이 최적화 단계 후 4개의 A100 GPU에서 이 코드는 3.52분 동안 실행되었으며 93.1%의 테스트 정확도에 도달했습니다.
DeepSpeed
마지막으로 저자는 딥러닝 최적화 라이브러리 DeepSpeed의 사용 방법을 살펴봅니다. 트레이너 및 다중 GPU 전략 결과. 먼저 DeepSpeed 라이브러리를 설치해야 합니다.
그런 다음 라이브러리를 활성화하려면 코드 한 줄만 변경하면 됩니다.
이 웨이브 이후에는 시간이 걸렸습니다. 테스트 정확도는 3.15분입니다. 그러나 PyTorch에는 DeepSpeed에 대한 대안도 있습니다. 완전히 샤딩된 DataParallel은 strategy="fsdp"로 호출되었으며, 최종적으로 완료하는 데 3.62분이 걸렸습니다.
위 내용은 PyTorch 모델의 학습 속도를 향상시키는 저자의 방법입니다. 관심 있는 친구들은 원본 블로그를 팔로우하여 시도해 볼 수 있습니다.
위 내용은 코드 몇 줄만 변경하면 PyTorch의 연금술 속도가 급상승하고 모델 최적화 시간이 크게 단축됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

소개 빠르게 진화하는 인공 지능 및 자연 언어 처리 분야에서 신속한 엔지니어링이 중요합니다. 그 기술 중에는 수치 적 추론 (CONR)의 체인이 AI를 향상시키는 매우 효과적인 방법으로 두드러집니다.

Kaggle Grandmasters의 비밀 잠금 해제 : 최고 파이썬 라이브러리 공개 데이터 과학 경쟁을위한 최고의 플랫폼 인 Kaggle은 일부 엘리트 공연자 인 Kaggle Grandmasters를 자랑합니다. 이 개인들은 지속적으로 혁신을 제공합니다

작업의 미래 : AI PC가 작업장에 혁명을 일으킬 방법 인공 지능 (AI)을 개인용 컴퓨터 (AI PC)에 통합하는 것은 작업장 기술에서 상당한 도약을 나타냅니다. AI PCS, AI의 융합으로 정의됩니다

Excel Freeze Pane 기능에 대한 자세한 설명 : 대형 데이터 세트를 효율적으로 처리합니다. Microsoft Excel은 데이터를 구성하고 분석하기위한 훌륭한 도구 중 하나이며 Freeze Pane 기능은 하이라이트 중 하나입니다. 이 기능을 사용하면 특정 행이나 열을 고정하여 나머지 스프레드 시트를 탐색하는 동안 표시되어 데이터 모니터링 및 비교를 단순화 할 수 있습니다. 이 기사는 Excel Freeze Pane 기능을 사용하는 방법으로 뛰어 들고 실용적인 팁과 예제를 제공합니다. 기능적 개요 Excel의 Freeze Pane 기능은 대형 데이터 세트를 스크롤 할 때 특정 행이나 열이 표시되므로 데이터를보다 쉽게 모니터링하고 비교할 수 있습니다. 내비게이션 효율성을 향상시키고 타이틀을 보이며 대규모 스프레드 시트에서 데이터 비교를 단순화합니다. 보기 탭을 통해 제공하고 동결

상호 연결된 데이터의 복잡성 탐색 : NEO4J vs. Amazon Neptune 오늘날의 데이터가 풍부한 세상에서 복잡하고 상호 연결된 정보를 효율적으로 관리하는 것이 가장 중요합니다. 전통적인 데이터베이스는 관련성을 유지하지만 종종 안녕하세요

메타 세그먼트 ally model 2 (SAM-2) : 실시간 이미지 및 비디오 세분화의 거대한 도약 메타는 다시 한 번 인공 지능의 경계를 SAM-2로 밀어 냈습니다.

AI의 디지털 소비자 경험 향상 : 데이터 중심 접근 방식 디지털 환경은 경쟁이 치열합니다. 이 기사는 인공 지능 (AI)이 디지털 플랫폼에서 소비자 경험을 크게 향상시키는 방법을 탐구합니다. 우리는 시험 할 것이다

안정적인 확산 : 텍스트-이미지 생성에서 위치 인코딩의 힘을 공개 간단한 텍스트 설명에서 숨막히는 고해상도 이미지를 생성한다고 상상해보십시오. 이것은 안정된 확산의 힘, 최첨단 텍스트-이미지 모델입니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
