전체 글 33

IP address

IP Address ? - Administrator가 할당한 레이어 3의 논리적 주소 (Mac Address는 Network Interface Card에 부여된 물리적 주소) - 네트워크에 있는 장비를 특정하기 위해 사용 RFC (Request For Comments) 1918 Addresses - private ip 를 사용하기로 약조된 공간 (internet standard) IPv4 - 32 bit 길이의 식별자 (8bit * 4) --> 4개의 octet - 0.0.0.0 ~ 255.255.255.255 - Layer 3 or network layer protocol - connectionless protocol (no sessions) - packets treated independantly -..

Network 2024.01.17

AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE (ViT)

출간 : ICLR 2021 저자 : Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby 주제 : Image Classification 0. Abstract 본 논문은 이전 CNN 구조에서 특정 부분을 Transformer로 대체하여 만든 Vision Transformer(ViT)라는 모델입니다. image를 patch 단위로 나누어 Transformer에 통과시켜서 image classificat..

MLOps E2E - 5. Storage : minio

kubeflow는 클라우드를 대상으로 만들어진 시스템이기 때문에 기본으로 저장하는 방식도 단순한 마운트 방식은 아니다. 나중에 모델 서빙을 용이하게 할 필요도 있기 때문에 오픈 소스로 된 오브젝트 스토리지를 사용하는게 기본인듯 하다. minio는 kubernetes에서 사용하는 기본적인 오브젝트 스토리지로 Open Source Object Storage 이다. 또한 minio는 s3와 호환이 됨. 스토리지 클래스에 대한 자세한 내용은 좀 더 많은 공부가 필요해 보인다. 우선 나는 training에서 나온 산출물들 중 log와 checkpoint 폴더를 minio에 저장했다. 이를 위해 input path를 받으면 minio에 올리는 기능의 component를 하나 더 만들었다. 먼저 minio에 올리는 ..

MLOps 2022.05.10

MLOps E2E - 4. Logging : wandb

이번 단계는 kubeflow training을 모니터링하고 log를 기록하는 방법이다. 쿠버네티스의 리소스 모니터링은 주로 프로메테우스와 그라파나를 쓰는 것으로 알고 있지만, 이번 연습 단계에선 간단하게 logging과 hyperparameter tuning이 가능한 wandb를 사용하려고 한다. 프로메테우스나 그라파나는 나중에 필요할 때 천천히 추가하도록 해야겠다. 이번 글은 wandb를 training code에 합치는 것이다. 1. 물론 가장 먼저 사용하는 docker image에 wandb가 설치되어 있어야 한다. 2. 그 다음 사용할 wandb id에서 API KEY를 획득해야 한다. (wandb 계정이 없다면 가입을 먼저 한다.) wandb.ai 를 접속한 뒤 우측 위에 계정을 누른 뒤 set..

MLOps 2022.05.04

MLOps E2E - 3. Pipeline

이전에 만든 data preprocess와 training을 차례로 실행시킬 수 있는 pipeline을 만들어야 한다. pipeline을 만드는 방법은 다양하지만, 나는 가장 기본이 되는 방법을 쓰려고 한다. 먼저 kfp 패키지를 이용하여 pipeline 코드를 짜고, yaml 파일로 compile 한 뒤에 kubeflow dashboard에서 실행하는 것이다. 로컬에서 바로 kubeflow pipeline에 연결해서 실행하는 방법은 추후에 kubeflow에 대한 구조를 더 익히고나서 할 예정이다. pipeline 코드를 작성하는 방법도 여러가지가 있다. 나는 pytorch-pipeline 예제에서 나온 방법대로 기존에 작성한 코드를 가지고 component를 구성하는 yaml파일을 만드는 방법을 사용할..

MLOps 2022.04.29

MLOps E2E - 2-2. CT : Training (kubeflow pipeline)

Data를 불러오고 나선 Training 코드를 짜면 된다. pytorch-lightning(이하 pl)의 training code는 pytorch보다 더 간결하고 객체지향적이다. 왜냐하면 train, validation, test 코드를 합쳐서 관리하며, 각 기능들에 대해서도 다 함수화 되어 있기 때문이다. pl의 training code는 크게 datamodule과 model, train으로 나눌 수 있다. 먼저 Datamodule에는 pytorch에서 사용하던 Dataset class와 Dataload class를 Datamodule에 합쳐서 관리하며, train, validation, test 각각 관리할 수 있다. 그리고 model class에는 모델 구조, forward, loss, 그리고 t..

MLOps 2022.04.28

MLOps E2E - 2-1. CT : Data Load (kubeflow pipeline)

Training 코드는 크게 Data load와 Training, 두 부분으로 이루어져 있다. 먼저 data load에 대한 내용이다. 사용할 dataset은 image classification 분야에서 간단하게 실험해볼 수 있는 cifar10 dataset이다. kubeflow pipeline에 올라온 pytorch example도 이 데이터를 사용하기 때문에 선택하게 되었다. 그냥 볼륨 하나 만들어서 거기에 dataset을 저장하는 방법도 있지만, 예제에 나타난 방법처럼 webdataset을 이용하여 데이터를 분할 저장하는 방법을 사용해보기로 했다. (대용량 데이터를 위한 예제인 것 같다.) ./DataLoad/data_load.py """Cifar10 pre-process module.""" im..

MLOps 2022.04.27

MLOps E2E - 1. CI / CD : Github Actions

kubeflow 예제들을 다양하게 시도해봐도 잘 되지 않고, 또 복잡하기에 처음부터 차근차근 시작해보기로 했다. 물론 가장 문제는 kubernetes에 대한 이해가 많이 부족한 것이지만, 이번에 kubeflow 환경에서 machine learning project를 end to end로 만들어 보면서 kubernetes에 대한 내용 또한 차근차근 익힐 수 있는 기회가 되었으면 좋겠다. 가장 먼저 Github Actions을 만들어 보았다. Github Actions를 사용하는 단계는 다음과 같다. 1. Git Repository 생성 2. ./.github/workflows 폴더 생성 3. workflows 폴더 안에 원하는 기능들에 대한 yaml 파일 생성 필자는 가장 기본적으로 push를 할 때마다 ..

MLOps 2022.04.26

특정 컨테이너 삭제 방법

filter 명령어를 사용하여 특정 컨테이너(nhm0819/kfp-pl이란 이미지로 만들어진)를 인덱싱. docker ps --filter ancestor=nhm0819/kfp-pl 여기에 -q 옵션을 사용하면 컨테이너의 이름만 파악 가능. docker ps -q --filter ancestor=nhm0819/kfp-pl -a 옵션 추가하여 stop 중인 컨테이너도 조회 docker ps -aq --filter ancestor=nhm0819/kfp-pl 최종 삭제 방법 docker rm $(docker ps -aq --filter ancestor=nhm0819/kfp-pl)

docker 2022.04.22