딥러닝 초보자의 파이토치 활용 경험 공유합니다:)

안녕하세요. AI, ML에 관심이 많은 비전공 & 복수전공자 대학생입니다. :innocent:
개인적으로 딥러닝 공부를 하며 tensorflow, pytorch를 주로 사용하는데, 파이토치 한국 사용자 모임이 있길래 가입하였습니다.

저처럼 AI에 관심은 많지만 비전공자, 뉴비기너이신 분들도 많을거라 생각해서, 제가 공부하면서 도움받았던 웹사이트, 도서, 관련 내용 등을 간략히 소개해보려 합니다!!

1. 파이토치 사용시 유용한 웹사이트

  • 공식 홈페이지 (튜토리얼 + 예제)
  • 공식 문서

https://pytorch.org/docs/stable/index.html

  • 공식 포럼
  • 튜토리얼 영상
  • 관련 강의 및 자료

FastAI: https://www.fast.ai/

Wizard/ https://www.deeplearningwizard.com/

2. 파이토치로 모델 구축 전 체크하면 좋은 내용

  • 데이터 및 메모리 캐싱 활용
    : 로컬/전역 리소스 캐싱으로 계산 효율성 확보

  • GPU 가속 활용
    : torch.cuda를 사용하여 GPU를 활용하고, to(device) 메서드를 사용하여 텐서를 GPU로 이동함

  • 다중 GPU 학습
    : torch.nn.DataParallel 또는torch.nn.parallel.DistributedDataParallel`을 사용하여 모델을 여러 GPU에 병렬로 분산하여 학습시킴

  • 데이터 로더 & 변환기 활용
    : 데이터의 효율적인 로드(torch.utils.data.DataLoader)와 전처리를 위한 변환기(torchvision.transforms) 사용

  • 자동 미분 활용
    : Autograd 기능을 통해 파이토치는 자동 미분을 지원하여 역전파를 간단하게 수행할 수 있음 (이를 통해 복잡한 모델을 쉽게 구축하고 학습함)

  • 최적화 알고리즘 활용
    : torch.optim 패키지를 사용하여 모델이 가중치 업데이트를 최적화

  • 하이퍼파라미터 튜닝
    : torch.utils.tensorboard를 사용하여 학습 과정을 모니터링하고 하이퍼파라미터 튜닝을 수행

  • 모델 평가
    : 모델의 성능 확인을 위해 torch.nn.functional을 사용하여 손실 함수를 계산함

  • 모델 시각화
    : torchviz을 사용하여 계산 그래프를 시각화

  • 모델 저장 및 불러오기
    : torch.save() 함수로 모델의 상태를 저장하고, 나중에 torch.load()함수로 모델을 불러옴

  • 전이 학습 활용
    : 전이 학습은 사전 훈련된 모델을 가져와서 특정 작업에 재사용하는 기술로, 이를 통해 데이터 부족 문제를 해결하고 모델 성능을 향상시킬 수 있음

3. 파이토치 공부시 참고한 도서 추천

  • 머신 러닝 교과서: 파이토치 편
    (저자: 세바스찬 라시카, 유시류, 바히드 미자리리 / 출판사: 길벗)
    image

: 교수님 추천으로 읽었던 도서입니다.
사이킷런을 사용한 분류/회귀 모델, 데이터 전처리, 차원 축소, 모델 튜닝, 앙상블 학습, 텍스트 분석 등에 대한 기법들과 파이토치를 사용한 신경망 구성, CNN, RNN, Transformer, GAN, 강화학습 등의 내용이 담겨있습니다.
광범위한 내용을 다루고 있어서 한 권만으로도 머신러닝, 딥러닝에 대해 꽤 많은 내용을 배울 수 있었습니다.

  • 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
    (저자: 윤대희, 김동화, 송종민, 진현두 / 출판사: 위키북스)
    도서 2
    : 파이토치의 기초 사용법부터 자연어 처리, 컴퓨터 비전에 대한 내용이 깊게 담겨있습니다. 이 도서는 다른 딥러닝 도서와는 다르게 유명한 최신 알고리즘이 많이 반영되어 있고 pre-trained model 활용법, 모델 서빙 및 배포, 데모 애플리케이션 구성 등에 대한 내용까지 있습니다. 그래서 모델을 빠르게 구축하고, 실제 적용을 위한 테스트 및 배포 과정에 유용하게 참고할 수 있었습니다.

etc.. 개인적인 경험 공유

저는 현재 한 IT 기업의 데이터 관련 부서에서 인턴 생활을 하고 있습니다.

비전공자이지만 복수전공을 이수하며 나름 AI, ML에 대한 지식을 갖췄다고 생각했는데요, 인턴으로 실제 프로젝트 보조로 참여하면서 end-to-end 프로세스 전과정의 이해력이 필수적이다는 것을 많이 느꼈습니다...

그래서 위의 두 번째 도서인 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습로 학습했던 내용 중 <데모 웹 애플리케이션 배포>에 대한 내용을 간략하게 적어봅니다!

  • 데모 애플리케이션(Demo Application): 기술이나 제품의 동작 및 기능을 보여주는 작은 규모의 응용 프로그램을 의미
  1. 실제 문제나 상황에 대한 예시를 재공하고 모델의 동작과 성능을 시각적으로 보여줌으로서, 사용자는 모델이 어떻게 문제를 해결하는지를 이해하게 돕는다.
    (즉, 예측 결과를 사용자가 실제로 경험하여 모델에 대한 이해도를 높임)
  2. 주로 웹 기반 인터페이스 형태로 제공됨
  • ex) 자연어 처리 모델: 사용자가 문장을 입력하면 모델이 문장을 이해하여 응답을 생성한다.
  • ex) 이미지 분류 모델: 사용자가 이미지를 업로드하면 모델이 해당 이미지를 인식하고 분류 결과를 제공한다.
  1. 데모 애플리케이션은 모델의 성능을 평가하고 사용자의 피드백을 수집할 수 있기 때문에 중요하다.

< streamlit을 사용해서 웹 데모 애플리케기션을 구축하는 방법 >

  • streamlit: 파이썬 라이브러리로, 실시간 애플리케이션 업데이트가 가능하고 대화형 웹 애플리케이션으로 사용자의 입력을 받아 처리해 응답을 제공하며 사용자와 실시간으로 상호작용한다.
  • 로컬 서버에서 애플리케이션이 실행되며, 웹 기반으로 쉽고 빠르게 공유/배포/협업이 가능

  • 애플리케이션 업데이트 시 전체 코드를 순서대로 재실행함 (코드 순서에 유의하기!!)

  • 스크립트 코드에 담기는 내용
  1. 페이지 및 레이아웃 지정
  2. 제목, 소제목 등의 텍스트와 이미지 삽입
  3. 데이터 불러오기
  4. (option) 사이드바 추가
  5. 위젯 생성
  6. prompt 창에서 포트번호를 지정하여 데모 애플리케이션을 배포
  7. 스크립트 실행과 동시에 로컬 스트림릿 서버 가동 & 파일 저장 & 데모 애플리케이션 업데이트
  8. 실행 결과 실시간으로 확인 및 스크립트 수정 진행
  9. (option) 데이터 캐싱 기능 추가
    -- 로컬 리소스 캐싱
    -- 전역 리소스 캐싱
  • Streamlit이 제공하는 URL 종류
    • Local URL: 로컬 컴퓨터/네트워크에서 실행 중인 서버아 애플리케이션에 접근하기 위한 주소로, 개발 환경에서 애플리케이션을 테스트하거나 로컬에서만 사용하는 서비스에 접근할 때 사용한다.
    • Network URL: 인터넷 or 공용 네트워크에서 실행 둥인 서버나 애플리케이션에 접근하기 위한 주소로, 일반적으로 도메인 이름을 사용하여 접속한다. 인터넷을 통해 다릉 사용자가 해당 서버/애플리케이션에 접속할 수 있다.

아직 AI 분야에 발을 깊게 담궈보진 않았지만, 댓글로 다른 분들의 경험도 함께 공유해보면 좋을 것 같습니다. :hugs:

1개의 좋아요

streamlit을 이용한 PyTorch App Hosting을 저도 쓰고 있는데 뭐 그럭저럭 잘 쓰고 있습니다. 오랫동안 사용 않으면 다시 Build해서 써야 하는 게 불편하긴 하지만 긴 시간 걸리는 게 아니니까 그럴싸 합니다.

다만, 언젠가는 유료화가 되면 그 때는 어찌 될까하는 생각이 듭니다.

우와, 어마어마하네요. 감사합니다!!! :bowing_man:

1개의 좋아요

streamlit보다 손이 더 가기는 하지만, Dash나 다른 대체제들이 은근 많아서 선뜻 유료화는 못하지 않을까 싶습니다. (만들어둔 서비스/앱을 원클릭으로 호스팅해주면서 돈을 받는 형태는 있을거 같지만요 :D)