IT 지식 창고
-
(Hibernate) SQLite Dialect ErrorIT 지식 창고 2024. 8. 24. 09:25
Hibernate 6.x 미만 버전에서는 공식적으로 SQLite dialect를 지원하지 않습니다.단, github에서 미만 버전에서 사용할 수 있도록 오픈소스형태로 공개한 repository가 있습니다. Hibernate 3:https://github.com/kemitix/sqlite-dialect net.kemitix sqlite-dialect 0.1.0Hibernate configuration:hibernate.dialect = org.hibernate.dialect.SQLiteDialectHibernate 4:https://github.com/EnigmaBridge/hibernate4-sqlite-dialect com.enigmabridge hibernate4-sqlit..
-
(torchio) 3D Data Augmentation 중 주로 사용하는 기법IT 지식 창고 2024. 5. 14. 19:18
import torchio as tio# img_size (D, H, W)def augmentation(split_set, img_size=None): aug_img_shape = [img_size[2], img_size[1], img_size[0]] if split_set == "train": aug = tio.Compose( [ #### Preprocessing # tio.CropOrPad((64,64,48)), # tio.Resample(4), # 반올림문제로 img와 mask를 subject로 resize 차이가 생길 수 있음. ..
-
(Git) 이전 Commit에서 특정 file만 삭제하기 (filter-repo)IT 지식 창고 2024. 3. 22. 19:26
FILE_NAME에 git repository를 root로 생각하고 경로를 포함하여 file 명을 넣습니다. git filter-repo --invert-paths --path FILE_NAME 본문 간혹 대용량 파일 및 개인정보를 commit하고 master에 까지 올리는 아주 큰 불상사(회사에서 그러면 안됩니다.)가 발생하였을 때, filter-repo 또는 BFG를 활용하여 삭제할 수 있다고 합니다. (문제의 commit 전까지 돌아간 다음에 그 이후의 수정 내역을 직접 반영해도 되지만 협업중에는 상당히 번거롭죠.) 완벽히 테스트 해보진 못했지만, 두 과정의 삽질한 내용을 작성해두겠습니다. git filter-repo 23년 blog를 참고해서 하다가, 그 새 조금 바뀐 것같아서 공식홈페이지 보고 ..
-
(Python) os.path vs pathlib.PathIT 지식 창고 2024. 2. 26. 22:25
저는 아래의 이유로 pathlib.Path를 더 선호합니다. 가독성 향상 os에 따른 경로 설정 (windows : WindowsPath, linux : PosixPath를 os에 따라서 알아서 설정하여 각 os별로 처리하는 방법이 다를 때 유용) Object Oriented Programming Trend (pytorch, yolo 등 활발하게 개발되는 곳에선 Path를 사용) etc… Python으로 개발 시, os.path를 활용하여 경로를 주로 다룰 수 있으나, python 3.4부터 pathlib이라는 경로 관련 객체 지향 python library가 추가되었습니다. 예제 os.path와는 어떻게 다른지 제가 자주사용하는 기능 위주로 정리해보고자 합니다. python pathlib officia..
-
(Python) 간단한 커스텀 프로그레스 바 코드IT 지식 창고 2024. 2. 21. 23:10
가끔 tqdm을 사용함에 있어 번거로움이 있을 때, 간단한 프로그레스 바를 사용할 수 있는 코드를 공유합니다. 파이썬 입문자분들은 프로그레스 바의 원리도 공부하실 수 있을 겁니다. 코드 import sys import time class ProgBar: def __init__(self, total, decimals=2, bar_length=30, interval=0.05): self.total = total self.decimals = decimals self.bar_length = bar_length self.interval = interval self._num = 0 self._last_update = 0 def start(self): self._num += 1 finalize = self._num ..
-
(Pytorch) Pytorch에서 학습 및 테스트 시 GPU VRAM이 계속 증가하는 이유IT 지식 창고 2024. 2. 14. 18:12
학습 시 지속적으로 GPU VRAM이 증가할 때 학습 시 데이터나 배치 사이즈가 너무 커서 처음부터 발생하는 Out of Memory 문제가 아니라, 조금 조금씩 GPU VRAM이 쌓일 때! 십중팔구 다른 프레임워크(a.k.a. tensorflow) 와 다르게 pytorch의 특성인 데이터를 GPU에 올리고 해제하지 않아서임. (ex, data.cpu()와 같은 작업을 하지 않아서) 매번 실수 하는 나 자신을 탓하기 위해 작성.. 검증 또는 테스트 시 GPU VRAM이 증가할 때 아래와 같이 검증 또는 테스트를 할 때 GPU VRAM이 증가할 때 for _ in range(10000): preds = model(data) with torch.no_grad()로 감싸서 gradient를 계산하지 않도록 해..
-
(Docker) docker container 내에서 root계정과 root권한을 가진 사용자 계정 사용하기IT 지식 창고 2023. 8. 3. 18:09
docker container 내에서 root계정과 사용자 계정을 사용하게 된 계기 linux server에 접속해서 docker를 활용할 때, linux server는 사용자 계정으로 접속하다보니, 간혹 docker내에서 생성된 files (docker는 root로 접속하기 때문에, files이 root 권한으로 생성됩니다.)이 linux 사용자 계정으로는 삭제가 되지 않아서 제목과 같이 적용한 후 docker를 사용하는 편입니다. 뭐.. docker들어가서 files을 삭제하면 되지만, 가끔 귀찮을 때가 있더라구요. container내에 접속 후 아래의 command들을 입력 groupadd -g 123456 user && useradd user -u 1234 -g 123456 -M -s /bin/b..
-
(pytorch) pytorch lightning 사용 시, 이어서 학습하기IT 지식 창고 2023. 2. 8. 18:34
컴퓨터의 강제종료, RAM 또는 VRAM의 부족 등과 같은 부득이한 상황에서 학습이 중단된 경우 이어서 학습하는 방법이 있습니다. 물론, 이어서 학습하기 위해서는 중단되기전에 .ckpt file을 저장해야합니다. (callbacks.ModelCheckpoint() 함수 활용) trainer.fit(model, train, val, ckpt_path=checkpoint_path) pytorch lightning으로 학습할 때 사용하는 fit 함수 안에 ckpt_path에 이어서 학습할 .ckpt file경로를 넣어주면 됩니다. 그러면, 해당 .ckpt를 사용하여 weight를 update하고, 시작 epoch을 이어서 설정합니다. (만약 10epoch에서 중단되었다면, 11epoch부터 다시 시작합니다.)..