AI & DL/Pytorch Lightning 8

[Pytorch Lightning] 튜토리얼 3 - GPU를 사용해서 훈련해보자

오늘은 GPU를 이용해서 모델을 훈려시키는 방법에 대해 소개해보려고 한다. 본론으로 들어가서 GPU를 사용한 것과 사용하지 않았을 때 시간이 차이나는 것을 확인해보자 GPU를 사용했을 때 대략적으로 2배 정도 빠른 것을 볼 수 있다. 그래서 인공지능을 위해서는 GPU가 필수적이면, 시간을 아껴준다. 그렇다면 gpu는 어떻게 사용하는 것일까? 그에 대해 알아보자 GPU 사용해보기GPU를 사용하는 방법은 크게 2가지로 나뉜다. 자동으로 할당하게 하는 경우와 우리가 직접 할당하도록 하는 방법이 있다. 일단 자동으로 할당하기trainer = pl.Trainer(accelerator="gpu", devices="auto")accelerator  : 가속기를 의미하며 , gpu, tqu, hpu가 있는데 일반적으로..

[Pytorch Lightning] 튜토리얼 2 - 모델을 저장하고 불러오자

이번에는 훈련한 모델을 저장하는 방법과 불러오는 방법에 대해 알아보려고 한다. 1편에서 사용한 코드를 거의 그대로 사용하며, Trainer선언 부분만 바뀌는 정도이며, 전체 코드는 깃허브에 있으니 참고하기 바란다.요약모델을 특정경로에 체크포인트 저장하기모델의 하이퍼파라미터 저장하기체크포인트로 모델을 불러오기 모델을 특정경로에 체크포인트 저장하기모델을 저장하는 것은 각 epoch마다 자동으로 저장된다. Jupyter 기준으로 설명하면, Jupyter 파일의 같은 디렉터리 내에 lightning_logs폴더에 각 validation_step마다 저장되는 것을 알 수 있다. 하지만, 나는 여기서 특정 경로에 저장하는 방법에 대해 소개하려고 한다.# 이전 코드trainer = pl.Trainer(max_epoc..

[Pytorch Lightning] 튜토리얼 1 - 모델을 만들고 훈련시키기

오늘은 파이토치 라이트닝과 관련해 기본적인 자료가 부족해서 직접 작성해보기로 했다. 공식 홈페이지를 기반으로 했으니, 많이 도움이 될 것이라고 생각한다. 코드는 여기를 참고하면 된다.대략적인 구조는 다음과 같다. 데이터를 모아서 DataLoader를 이용해 train, valid, test로 분할한다.Model을 선언한다.훈련때마다 사용하는 방법을 선언한다. (e.g., train_step에서는 어떻게 진행하고 ...)Model과 훈련 방법을 Pytorch Lightning Module에 선언한다.Hyper Parameter + Lighitning Module을 Trainer에 추가한다.Trainer를 통해 훈련된 모델(Trained Model)을 사용한다. 요약라이브러리 설치데이터셋 선언모델 구조 만들..

[Pytorch Lightning] BART를 이용해 Text를 요약해보자 - 4 (완)

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인이번에는 작성한 코드를 이용해서 모델 로딩 및 실행결과(wandb) 확인을 해보겠습니다.환경설정 및 초기화사용할 모델 및 토크나이저 선택1편을 보시면 알겠지만, 저는 한국어로 입력했을 때, 영어로 출력하도록 Task를 만들었습니다. 그래서 저는 한국어-영어 쌍으로 훈련된 모델을 허깅페이스에서 가져와서 사용했습니다. 궁금하신분은 링크를 클릭해보시면 됩니다. 간단히 말하면 한국어를 입력했을 때, 영어로 출력하는 KoBART 모델입니다.model_id = 'chunwoolee0/circulus-ko..

[Pytorch Lightning] BART를 훈련해 Text를 요약해보자 - 3

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인이번에는 훈련이 잘되고 있는지 확인하기 위해 필요한 것들에 대해 알아보려고 합니다. 모델 인수들이 잘 입력되었는지 log에 확인하기 위한 logger 작성과 훈련 loss들이 잘 훈련되고 있는지에 대해 알려주는 wandb, tensorboard에 대해 알아보려고합니다.(tensorboard는 추후에 작성하도록 하겠습니다.) logger 작성import loggingimport sysdef get_logger(name: str) -> logging.Logger: """Return logge..

[Pytorch Lightning] BART를 훈련해 Text를 요약해보자 - 2

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인 이번에는 Dataset 구축 및 DataLoader 구축에 대해 설명하려고 한다. 근데 생각을 해보았을 땐, 이 글을 보는 사람들은 데이터셋 구축은 관심이 없을 것이고 아무래도 어떻게 코드를 짜는지 궁금할 것이라 생각하기 때문에 데이터셋 구축에 대해서는 설명하지 않고 데이터셋이 어떻게 구성되어 있는지만 말하려고 한다.   Dataset 구축# Text : Encoder # function : Decoder# 예시# 음료 개수, 메뉴 개수, 메뉴 개수 -> drink(quantity=1); m..

[Pytorch Lightning] BART를 훈련해 Text를 요약해보자 - 1

1편 : 프로젝트 요약 및 LightningModule 설계2편 : Dataset 구축 및 DataLoader 구축3편 : logger 작성, wandb 연동 및 확인4편 : 모델 로딩 및 실행결과(wandb) 확인  오늘은 이전에 캡스톤디자인에서 BART를 이용해서 Text를 요약하는 Task를 진행했었는데, 이것에 대해 설명하면서 코드를 어떻게 작성했는지 설명하려고 한다. 간단하게 요약하면 다음과 같다. 카페 메뉴에 대한 Text가 입력이 되면, BART를 이용해서 영어로 번역한 뒤 필요한 내용만 출력하는 것이다. 아이스 아메리카노 하나, 카페라떼 하나를 영어로 요약하는 것이다. 다음과 같은 Task를 위해 BART를 훈련시키는 코드에 대해 설명하겠다. 필요한 라이브러리 설치pip install da..

[Pytorch Lightning] 파이토치 라이트닝 기초(LightningModule, Trainer)

요즘 딥러닝과 관련해서 파이토치 라이트닝을 다룰일이 많은데 생각보다 한국어로 되어있는 Document, Blog가 너무 적어서 직접 적어보려고 한다. 생각보다 글솜씨가 좋지 않더라도 많은 도움이 되었으면 한다. 파이토치를 사용하는 이유는? 다음과 같은 딥러닝 파이프라인에서 파이토치 라이트닝은 다음과 같은 추상화 계층을 이용해 딥러닝 파이프라인 설계를 매우 간단하게 만들어주기 때문에 사용한다. LightningModule은 모델 구조, 훈련 방법, 평가 방법, 테스트 방법, 추론 방법, 옵티마이저 등을 정의하는 클래스이다. Trainer은 LightningModule에서 정의한 모델을 훈련 및 평가하는 방법을 추상화한 클래스이다. 간단하게 LightningModule에는 무엇이 있으며 Trainer에는 무..