PyTorch Lightning 1.0 : 0 ~ 600k에서

Lightning은 최종 API, 새 웹 사이트, 클라우드에서 대규모 모델 학습을위한 새 기본 플랫폼을 살짝 보여줍니다.

(2020 년 10 월 19 일)

우리는 지난 몇 달 동안 API를 미세 조정하여 문서 , 튜토리얼 을 기록하고 마침내 PyTorch Lightning V1.0.0을 모두 공유 할 시간입니다. 클라우드에서 모델 확장에 대한 번개 대답을 원하십니까? 계속 읽으십시오.

Lightning DNA

AI 연구는 단일 프레임 워크가 따라갈 수있는 것보다 훨씬 빠르게 진화했습니다. 딥 러닝 분야는 대부분 복잡성과 규모면에서 끊임없이 진화하고 있습니다. Lightning은 복잡한 모델 상호 작용의 세계를 위해 설계된 사용자 경험을 제공하는 동시에 다중 GPU 및 다중 TPU 훈련, 조기 중지, 로깅 등과 같은 엔지니어링의 모든 산만 한 세부 사항을 추상화합니다.

PyTorch와 같은 프레임 워크 AI 연구가 주로 네트워크 아키텍처, 즉 작업 순서를 정의 할 수있는 nn.Module에 관한 시간을 위해 설계되었습니다.

VGG16

그리고 이러한 프레임 워크는 연구 또는 생산을 위해 매우 복잡한 모델을 조합하기 위해 모든 부분을 제공하는 데 놀라운 역할을합니다. 그러나 모델이 GAN, BERT 또는 자동 인코더와 같이 상호 작용하기 시작하면 패러다임이 깨지고 엄청난 유연성이 곧 프로젝트 규모에 따라 유지하기 어려운 상용구로 바뀝니다.

이전의 프레임 워크와 달리 PyTorch Lightning은 함께 상호 작용하는 모델 컬렉션을 캡슐화하도록 설계되었습니다 , 딥 러닝 시스템. Lightning은 복잡한 규칙을 사용하여 많은 모델이 서로 상호 작용하는 오늘날의 더 복잡한 연구 및 생산 사례를 위해 구축되었습니다.

AutoEncoder 시스템

PyTorch Lightning의 두 번째 핵심 원칙은 하드웨어와 “과학”코드가 분리. Lightning은 이러한 추상화를 사용자에게 표시하지 않고 대규모 컴퓨팅을 대규모로 활용하도록 진화했습니다. 이러한 분리를 통해 새로운 능력을 얻을 수 있습니다. 코드를 변경할 필요없이 CPU를 사용하여 노트북에서 512 GPU 작업을 디버깅하는 것과 같이 이전에는 불가능했습니다.

p>

마지막으로 Lightning은 커뮤니티 중심 프레임 워크 가됩니다.

좋은 딥 러닝 모델을 구축하려면 많은 전문 지식과 소규모 시스템을 작동시키는 트릭. 전 세계적으로 수백 명의 놀라운 엔지니어와 PhD가 동일한 코드를 반복해서 구현합니다. Lightning은 이제 300 명 이상의 가장 재능있는 딥 러닝 사람들로 구성된 기여자 커뮤니티를 보유하고 있습니다. 에너지와 똑같은 최적화를 수행하지만 대신 수천 명의 사람들이 이러한 노력의 혜택을 누릴 수 있습니다.

1.0.0의 새로운 기능

Lightning 1.0.0은 안정적이고 최종

을 나타냅니다. em> API.

이는 Lightning에 의존하는 주요 연구 프로젝트가 앞으로도 코드가 깨지거나 변경되지 않는다는 것을 알기 때문에 안심할 수 있음을 의미합니다.

연구 + 생산

Lightning의 핵심 강점은 최신 기술을 구현하는 것입니다. 대규모 AI 연구. 전문 연구원이 유연성을 잃지 않고 가장 큰 컴퓨팅 리소스에 대해 가장 어려운 아이디어를 시도 할 수 있도록 설계된 프레임 워크입니다.

Lightning 1.0.0이 이제 또한 이러한 모델을 대규모로 배포하는 것이 간단합니다. 모든 Lightning 코드는 모든 것을 onnx 및 torchscript로 쉽게 내보낼 수 있도록합니다.

따라서 즉, 데이터 과학자, 연구자 등의 팀은 이제 iv id = “20649488cb”에 가 될 수 있습니다. >

또한 모델을 생산에 투입합니다. 대규모 기계 학습 엔지니어 팀이 필요하지 않습니다.

이것이 선도 기업이 Lightning을 사용하는 주된 이유 중 하나입니다. 연구에 필요한 유연성을 잃지 않고 생산 시간을 대폭 단축 할 수있는 방법으로 .

그리고 이것이 바로 우리의 기업 제품이하는 일입니다. Grid AI 는 클라우드에서 대규모 학습 모델을위한 기본 플랫폼. Grid를 사용하면 누구나 딥 러닝 모델을 구축하여 대규모 컴퓨팅을 반복 한 다음 이러한 모델을 딥 러닝 시스템에서 발생할 수있는 가장 큰 트래픽을 처리 할 수있는 확장 가능한 환경에 즉시 배포 할 수 있습니다.

여기에서 미리 액세스하세요 .

그리드 트레인

웹 사이트

또한 모든 블로그 게시물 , 초고속 비디오 자습서 , 커뮤니티 프로젝트 및 의 기타 리소스 Lightning의 모든 것을 보여주는 새로운 홈페이지 !

Metrics

pytorch\_lightning.metrics는 PyTorch 및 PyTorch Lightning에서 간편한 측정 항목 개발 및 사용을 위해 생성 된 Metrics API입니다. 업데이트 된 API는 각 단계에 대해 여러 GPU (프로세스)에 걸쳐 메트릭을 계산하는 내장 된 방법을 제공하는 동시에 에포크 종료시 메트릭을 계산할 수있는 통계를 저장하는 동시에 걱정할 필요없이 분산 백엔드와 관련된 복잡성.

모든 엣지 케이스에 대해 엄격하게 테스트되었으며 정확도 <와 같은 일반적인 측정 항목 구현 목록이 증가하고 있습니다. / a>, 정밀도 , 재현율 , Fbeta , MeanSquaredError 등.

방법 LightningModule에서 .log 사용

사용자 지정 메트릭을 구현하려면 기본 Metric 클래스를 하위 클래스로 만들고 \_\_init\_\_(), update()compute() 메서드. DDP로 맞춤 측정 항목을 구현하려면 add\_state()를 올바르게 호출하기 만하면됩니다. reset()add\_state()를 사용하여 추가 된 메트릭 상태 변수에서 호출됩니다.

수동 최적화와 자동 최적화

Lightning을 사용하면 언제 그레이드를 활성화 / 비활성화할지, 역방향 패스를 수행할지, 최적화 프로그램을 업데이트할지 걱정할 필요가 없습니다. training\_step에서 첨부 된 그래프로 손실을 반환하는 한 Lightning은 최적화를 자동화합니다.

그러나 GAN, 강화 학습 또는 여러 옵티 마이저 또는 내부 루프와 같은 특정 연구의 경우 자동 최적화를 끄고 훈련 루프를 직접 제어 할 수 있습니다.

먼저 자동 최적화를 끄십시오.

trainer = Trainer(automatic\_optimization=False)

이제 기차 루프를 소유하고 있습니다!

로깅

Lightning을 사용하면 로거와 매우 간단하게 통합 할 수 있습니다. 어디서나 log() 메소드를 호출하면됩니다. LightningModule에서 로그 된 수량을 선택한 로거로 보냅니다. 기본적으로 Tensorboard를 사용하지만 지원되는 로거를 원하는대로 선택할 수 있습니다.

위치에 따라 .log()가 호출되고 Lightning은 로깅이 발생해야하는시기를 자동으로 결정합니다 (모든 단계 또는 모든 Epoch에서). 물론 on\_stepon\_epoch 옵션. on\_epoch=True를 설정하면 전체 학습 기간 동안 로깅 된 값이 누적됩니다.

데이터 흐름

데이터 흐름을 단순화하고 학습 및 검증 루프의 데이터에서 로깅을 분리하기 위해 EvalResult 및 TrainResult를 더 이상 사용하지 않습니다.

각 루프 (학습, 검증, test)에는 구현할 수있는 세 가지 후크가 있습니다.

  • x\_step
  • x\_step\_end
  • x\_epoch\_end

데이터 흐름을 설명하기 위해 학습 루프 (예 : x = training)를 사용합니다.

outs = []
for batch in data:
out = training\_step(batch)
outs.append(out)training\_epoch\_end(outs)

training\_step에서 반환하는 모든 항목은 training\_epoch\_end.

유효성 검사 및 테스트 단계에도 동일하게 적용됩니다. validation\_step 또는 test\_step를 {validation/test}\_step\_end 또는 {validation/test}\_epoch\_end.DP 또는 DDP2 분산 모드를 사용하는 경우 (예 : GPU에서 배치 분할) x\_step\_end를 사용하여 수동으로 집계합니다 (또는 번개가 자동으로 실행되도록 구현하지 마십시오. 집계).

체크 포인트

Lightning은 이제 마지막 교육 시대의 상태와 함께 현재 작업 디렉토리에 체크 포인트를 자동으로 저장합니다. 이렇게하면 중단 된 경우 훈련을 재개 할 수 있습니다.

체크 포인트 동작을 사용자 정의하여 훈련 또는 검증 단계의 수량을 모니터링 할 수 있습니다. 예를 들어 유효성 검사 손실을 기반으로 체크 포인트를 업데이트하려는 경우 :

  1. 검사 손실과 같이 모니터링하려는 측정 항목 또는 기타 수량을 계산합니다.
  2. 로그 log() 메소드를 사용하고 val\_loss와 같은 키를 사용하여 수량을 설정합니다.
  3. ModelCheckpoint 콜백을 초기화하고 수량의 핵심이되도록 모니터링합니다.

  4. 콜백을 checkpoint\_callback 트레이너 플래그로 전달합니다.

출시 노트에서 많은 버그 수정을 포함한 모든 API 변경 사항을 읽어보세요. .

감사합니다

우리는 V1.0.0을 우리의 뛰어난 핵심 팀 이 24 시간 내내 작업하여 모든 세부 사항을 정확하게 파악하고 PyTorch 팀 , 물론 커뮤니티 회원입니다. PR에 기여하거나 검토하고, 피드백과 문제를 제출하고, 포럼이나 Slack 커뮤니티에서 답변 해 주신 모든 분들께 개인적으로 감사드립니다. 이것은 여러분 모두를위한 것입니다!

여기에서 가입하십시오.

Lighting에 대해 자세히 알고 싶으십니까? 웹 사이트 로 이동하거나 문서 를 읽거나 가입 최초의 가상 모임- William Falcon과 함께 무엇이든 물어보세요 , Lightning의 제작자! 모임은 2020 년 10 월 21 일 오후 1시 (동부 표준시)에 열리므로 점심이나 저녁 식사를 가져 와서 새로운 기능, 그리드 또는 항상 알고 싶었지만 묻지 않은 기타 사항에 대해 자세히 알아보세요. 여기 에서 가입하십시오.

최신 글

보관함

메타