일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ssh
- logistic regression
- aiffel exploration
- Decision Boundary
- 히비스서커스
- linear regression
- cs231n
- IVI
- Jupyter notebook
- numpy
- 머신러닝
- 백신후원
- 기초확률론
- docker attach
- 도커
- vscode
- WSSS
- airflow
- HookNet
- 사회조사분석사2급
- 프로그래머스
- 코크리
- docker
- CellPin
- Multi-Resolution Networks for Semantic Segmentation in Whole Slide Images
- Pull Request
- docker exec
- AIFFEL
- cocre
- GIT
- Today
- Total
목록Programming/Python (39)
히비스서커스의 블로그
이번 포스팅에서는 Airflow를 docker 컨테이너에서 사용할 경우 PostgreSQL 컨테이너와 네트워크로 연결하는 방법을 정리하였다. 왜 DB container로 PostgreSQL을 사용하려는가? 일단 Airflow에서 공식적으로 제공하는 docker-compose 파일에서 PostgreSQL을 DB container로 업로드 하도록 세팅되어 있다. 그 이유는 아마도 Airflow에서 병렬처리를 하는 Executor를 사용하려면 PostgreSQL를 DB로 하는 것이 유리하기 때문인 것으로 보인다. (만약 SQLite를 DB로 사용하게 될 경우 Executor가 아닌 Sequential Executor를 사용하여야 해서 병렬이 아닌 순차적를 할 수 밖에 없다고 한다.) Docker환경에서 Air..
이번 포스팅에서는 Airflow를 docker 컨테이너에서 사용할 경우 WandB를 설정하는 방법을 정리하였다. 왜 Airflow를 WandB와 같이 사용하려는가? Airflow는 일반적으로 데이터 파이프라인 구축하여 스케줄링 하고 모니터링 하기 위해 주로 사용된다. 실시간으로 로그가 쌓이는 작업에서 데이터 파이프라인을 관리하기 위해서 보통 많이 쓰이는 것으로 알고 있다. 이런 과정을 위해서 쓴다면 로그들은 ETL를 거쳐 데이터베이스에 저장되고 ELT 과정을 통해 의미있는 데이터들을 얻어낸 다음 머신러닝 학습을 한 후 얻게 된 정보를 바탕으로 서비스를 제공하는 방식으로 운영이 될 것이다. 만약, 데이터베이스에 저장될 수 있는 데이터가 아닌 이미지 데이터를 위한 머신러닝 모델을 활용하는 task가 이 과정..
이번 글에서는 object detection 모델 학습을 위한 라이브러리로 유명한 mmdetection을 사용하기 위한 방법을 다루고자 한다. 기존 버전들(ver 2.x)에 대한 블로그 글은 많지만 최근 ver 3.x로 업데이트 된 후 정리된 내용이 없어 직접 사용해본 후 정리해보았다. 0. 설치 및 설정 mmdetection은 라이브러리 설치 후 모듈을 불러오는 일반적인 방식과 다르게 git clone 후 커스터마이징하는 방식으로 많이 쓴다. 먼저, mmdetection은 mmengine과 mmcv라는 라이브러리와 연동되어 작용하기 때문에 이들을 먼저 설치해주어야 한다. pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0" 그 후,..
상황 torchvision의 object detection으로 model을 training 하는 도중 다음과 같은 에러를 마주하였다. 에러 Loss is nan, stopping training {'loss_classifier': tensor(nan, device='cuda:0', grad_fn=), 'loss_box_reg': tensor(nan, device='cuda:0', grad_fn=), 'loss_objectness': tensor(nan, device='cuda:0', grad_fn=), 'loss_rpn_box_reg': tensor(nan, device='cuda:0', grad_fn=)} 원인 추측하건데 bounding box가 없는 데이터 부분에서 loss가 크게 발생하는데 이때 l..
상황 airflow의 GPU를 사용하는 DAG 코드를 작성하다가 다음과 같은 에러를 마주쳤다. 코드 from airflow import DAG from airflow.operators.python import PythonOperator from datetime import datetime from models import our_model import torch test = DAG( dag_id = 'test', start_date = datetime(2022,5,5), catchup = False, schedule = '@once' ) train = PythonOperator( task_id = 'train', python_callable = train, dag = test ) def train(): ..
상황 아래의 대략적인 코드와 같이 from pytorch_lightning.loggers import WandbLogger from pytorch_lightning import Trainer import wandb wandb_logger = WandbLogger() trainer = Trainer( accelerator = 'gpu', devices = 2, logger=wandb_logger ) (...) val = wandb.run.summary('val_acc') 학습 프레임워크로 pytorch lightning를 사용하고 log를 받아 시각화하기 위해 wandb_logger로 받았다. 그 후 wandb에 단일 값으로 저장된 'val_acc'에 해당하는 값을 불러오려는데 'NoneType' obje..
상황 classification model 학습을 위해 pretrained 모델을 사용하기 위해 output을 바꿔주려는 중 다음과 같은 에러를 마주쳤다. 코드 # model의 코드는 https://github.com/Cadene/pretrained-models.pytorch/blob/master/pretrainedmodels/models/senet.py 참조 from model import se_resnext101_32x4d import torch.nn as nn CLASS = 4 model = se_resnext101_32x4d(pretrained='imagenet') model.last_linear = nn.Linear(in_features=2048, out_features=CLASS) 에러메시지 ..
상황 1. model.train()인 상태로 dataset을 학습시키고 2. model 내에는 batch norm layer가 존재할 경우 3. dataset을 batch size만큼씩 나눌 때 가끔씩 나머지가 1인 경우가 존재하는데 이때 발생할 수 있는 에러이다. (ex. dataset의 수가 65개인데 batch size를 64인 경우). 에러 ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 256, 1, 1]) 원인 batch norm layer의 계산식에 batch chanel의 크기가 1보다 크다고 가정한 수식이 존재하는 듯하다. 따라서, batch size가 1일 경우에는..