하중 모델
모델.저장()
– 학습 결과 저장 기능
– 모델 형상 및 매개변수 저장
– 모델 학습의 중간 과정을 저장하여 최상의 결과 모델을 선택
– 생성된 모델은 외부 연구자와 공유 가능
검문소
– 중간 학습 결과를 저장하여 최상의 결과 선택
– 조기정지 기법에 이전 학습 결과 저장
– 손실 및 메트릭 값의 지속적인 검토 및 저장
– epoch, loss, metric 함께 저장
사전 훈련된 모델 전이 학습
– 다른 데이터 세트로 만든 모델을 현재 데이터에 적용
– 대규모 데이터 세트로 구축된 모델의 성능 향상
– 현재 가장 보편적인 기술
PyTorch 녹화 모니터
텐서 보드
– TensorFlow에 의해 프로젝트로 생성된 시각화 도구
– PyTorch도 연결 가능
요소
– Scalar: 지표와 같은 상수 값의 연속(에포크) 표시
– 그래프: 모델의 계산 그래프를 표시합니다.
– 히스토그램: 가중치 등 값의 분포 표현
– 이미지 : 예측값과 실제값 비교
– Mesh: 데이터를 3D 형태로 표현
가중치와 편향
– 기계 학습 실험을 원활하게 지원하는 상용 도구
– !
pip install로 설치한 후 wandb를 wandb.init로 사용
다중 GPU 학습
모델 병렬
– 여러 GPU에 교육을 배포하는 두 가지 방법(모델 분할/데이터 분할)
모델 공유
– 두 모델 cuda 0, 1 등을 할당하여 훈련 후 두 모델을 결합합니다.
데이터 공유
– 데이터를 분포시킨 후 평균화하는 방법으로 다음과 같은 문제점이 있다.
예를 들어 GPU 사용량의 불균형 또는 스택 크기 감소
초매개변수 조정
모델이 스스로 학습하지 않는 학습률, 모델 크기, 옵티마이저 등은 사람이 지정해야 합니다.
그리드 대 랜덤
그리드 – 전체 설문조사처럼 증가/감소하여 모든 하이퍼파라미터 값 찾기
랜덤 – 랜덤 포인트로 학습 후 잘 어울리는 부분 찾기
베이지안 기법이 현재 사용됩니다.
베이지안 방식은 그리드+랜덤 방식으로 임의의 지점에서 좋은 학습률을 찾으면 그 지점에서 그리드 탐색을 수행한다.
빔
– 다중 노드 다중 처리 지원 모듈
– 현재 표준인 ML/DL의 병렬 처리를 위해 개발된 모듈
– 다른 모듈로 하이퍼파라미터 검색 지원
문제 해결
딥 러닝에서 가장 무서운 것은 OOM입니다!
(메모리 부족 오류)
GPUUtil 사용
GPU의 상태를 표시하고 iter당 메모리가 증가하는지 확인하는 모듈
torque.cuda.empty_cache() 시도
– 사용하지 않는 GPU 캐시 지우기
– 사용 가능한 메모리 가져오기
– 재설정 대신
학습 루프에 누적된 텐서 변수 확인
텐서로 처리되는 변수는 GPU 메모리를 사용합니다.
– 메모리 먹기를 방지하기 위해 지우기
– 1차원 텐서의 경우 Python 기본 객체로 변환하여 처리 가능
델 명령으로
– 더 이상 필요하지 않은 변수 삭제
– 메모리 레이아웃의 특성으로 인해 Python은 루프가 끝난 후에도 메모리를 할당합니다.
for x in range(10):
i = x
print(i)
>>> 9
이 경우 for 문의 변수 i는 루프가 종료된 후에도 메모리를 점유하므로 삭제한다.
스택 크기 실험
– 스택 크기를 1로 변경해 보십시오.
torque.no_grad() 사용
– 종점에서 구문 torque.no_grad()를 사용합니다.