MLOps 4

[FSDL] Pre-Lab 03: Transformers and Paragraphs

Why Transformers? 텍스트 인식기를 구축의 최종 목표는 2차원 이미지를 특정 알파벳의 1차원 문자 시퀀스로 변환하는 것이다. “lab 02b”에서 설명한 컨볼루션 신경망은 이미지를 인코딩하여 원시 픽셀 값에서 더 의미 있는 수치 표현으로 변환하는 데 매우 효과적이다. 하지만 다음과 같이 고려해야 할 사안이 존재한다. 이미지의 글자 수를 크기와 분리하는 부분 문서의 스크린샷 데이터는 종이를 클로즈업한 사진보다 글자 밀도가 훨씬 높다. 길이가 입력 텐서의 크기와 상관없어야 하는 가변 길이의 문자 시퀀스를 어떻게 얻을 것인가? 트랜스포머는 시퀀스 모델링에 탁월한 인코더-디코더 아키텍처로, 원래 기계 번역에서처럼 한 시퀀스를 다른 시퀀스로 변환하기 위해 도입되었다. ∴ 언어 처리에 매우 적합하다. ..

[FSDL] Pre-Lab 02b: Training a CNN on Synthetic Handwriting Data

Why convolutions? 가장 기본적인 신경망인 다층 퍼셉트론(MLP)은 파라미터화된 선형 변환과 비선형 변환을 번갈아 가며 구축한다. 이 조합은 고정된 크기의 배열을 받아들이고 고정된 크기의 배열을 반환하는 함수만 있다면 임의의 복잡도를 가진 함수를 표현할 수 있다. def any_function_you_can_imagine(x: torch.Tensor["A"]) -> torch.Tensor["B"]: return some_mlp_that_might_be_impractically_huge(x) 하지만 모든 함수에 해당 type signature가 있는 것은 아니다. 예를 들어, 크기가 다른 이미지의 콘텐츠를 식별하는 문제는 MLP로 해결할 수 없다. 더 큰 문제는 MLP가 너무 일반적이어서 효율..

[FSDL] Pre-Lab 02a: PyTorch Lightning

Why Lightning? PyTorch는 하드웨어 가속을 통해 미분 텐서 연산을 실행하는 강력한 라이브러리이며, 많은 신경망 primitives를 포함하고 있지만 "훈련"이라는 개념은 없다. 높은 수준에서 보면 nn.Module은 그라데이션이 있는 상태 저장 함수이고 torch.optim.Optimizer는 gradients을 사용하여 해당 상태를 업데이트할 수 있지만, 데이터에서 이러한 gradients을 반복적으로 생성하기 위한 사전 구축된 도구는 PyTorch에 없다. 그래서 우리는 "training loop"를 DataLoader를 반복함으로써 구현하였다. 그러나, 자체 DataLoader를 사용하여 validation 및 test 데이터에서 모델을 실행하고 싶을 것이다. 완료되면 모델을 저장해..

[FSDL] Pre-Lab 01: Deep Neural Networks in PyTorch

Getting data and making Tensors 모델을 구축하려면 먼저 데이터가 필요하다. 아래 코드는 파이썬 표준 라이브러리를 사용하여 인터넷에서 손으로 쓴 숫자로 구성된 MNIST 데이터셋을 다운로드한다. 데이터 너무 크기 때문에, 디스크에 저장하는 것이 아닌 네트워크를 통해 데이터를 가져오는 방식을 사용한다. from pathlib import Path import requests def download_mnist(path): url = "" filename = "mnist.pkl.gz" if not (path / filename).exists(): content = requests.get(url + filename).content (path / filename).open("wb").wri..

반응형