최근 포스트

Airflow MongoDB Provider의 replace_many

최대 1 분 소요

Airflow에서 MongoDB에 연결하기 위해 사용하는 MongoDB Provider에는 PyMongo에 없는 replace_many 함수가 있습니다. PyMongo에서 지원되는 관련 함수 목록은 아래와 같습니다.

MongoDB string type timestamp 조회하기

최대 1 분 소요

외부 데이터를 그대로 저장하다보니 timestamp를 string type 그대로 저장하는 경우가 발생했습니다. 이때 integer type으로 변경하지 않아도 아래와 같이 조회가 가능합니다.

Kubernetes Ingress 쉽게 적용하기

1 분 소요

Ingress를 적용할 때 path만 설정할 경우, 외부에서 서비스로 접근하는 URI와 내부에서 실제 서비스로 요청하는 URI가 달라지면서 오류가 발생하는 경우를 볼 수 있습니다. 여기서 아래와 같이 설정하면 위 두 URI를 일치시킬 수 있습니다.

DCGM-Exporter metric 항목 추가하기

2 분 소요

DCGM-Exporter에서 기본적으로 제공되는 metric으로는 수집할 수 없는 항목들이 있습니다. (버전마다 metric 수집 항목의 차이가 있습니다.) 저는 2.4.0 버전을 사용중인데, DCGM_FI_DEV_GPU_UTIL(GPU utilization(%))과 DCGM_FI...

Lens로 Kubernetes 자원 사용량 클릭만으로 쉽게 보기

1 분 소요

Kubernetes에서 사용중인 자원 사용량을 Lens를 사용하면 클릭만으로 쉽게 볼 수 있습니다. Lens는 Kubernetes 전용 관리도구로, 관리에 필요한 기능과 다양한 플러그인을 함께 지원합니다.

MLflow Artifact 삭제 (Permanently delete runs)

최대 1 분 소요

MLflow를 사용하다 반복되는 실험으로 S3에 artifact가 쌓이고있어 삭제 방법을 찾게 되었습니다. Tracking Server의 Web UI에서는 delete가 hide로 동작하기 때문에 S3에 쌓인 artifact와 PostgreSQL에 쌓인 metadata를 지우기 위...

Helm으로 설치한 Airflow에 MongoDB provider 추가

1 분 소요

Helm으로 설치한 Airflow에 MongoDB connection을 추가하려했는데 MongoDB는 없었습니다. 공식 문서(링크)를 찾아보면 pip로 추가하라고 되어있지만 Helm으로 설치한 Airflow에 추가하려면 image를 새로 build해야합니다. 아래는 그 과정과 Mo...

MongoDB 6.0 설치 및 테스트 (mongod, mongosh)

1 분 소요

7월 19일 MongoDB 6.0 버전이 release 되었습니다. 기존엔 MongoDB가 설치되면 mongo로 테스트를 했었는데 6.0이 되면서부터 mongo 대신 mongosh를 사용해야해서 여기에 정리합니다.

Ubuntu 전체 파일 내 문자열 치환 (grep, sed)

1 분 소요

모델 성능 실험 script를 작성하면서 코드의 특정 값을 반복적으로 치환해야할 경우가 생겼습니다. python을 사용하면 command line arguments로 주입할수도 있지만 여기서는 grep과 sed로 특정 값을 치환하는 방법을 설명하겠습니다.

Bash script 문자열 리스트 Loop

최대 1 분 소요

모델 성능 실험을 하게되면서 반복적인 실험을 할 일이 많아졌습니다. 수동으로 하다보니 실수도 잦고 시간도 많이뺏겨 script를 작성하게 되었습니다.

PyTorch 전체 seed 고정 (Reproducibility)

최대 1 분 소요

딥러닝 성능을 올리기 위해서는 성능 재현 및 실험이 필수입니다. PyTorch는 다른 프레임워크에 비해 비교적 쉽게 seed 고정이 가능했습니다.

Kubernetes MLflow ingress 적용 (UI, API 사용하기)

최대 1 분 소요

Kubernetes MLflow ingress 적용을 위해 일반적으로 나와있는 방법을 사용하면 UI는 사용 가능하지만 API 사용이 불가능합니다. API 호출 경로가 ingress path와 상관없이 서비스 상대경로로 적용되기 때문입니다. 따라서 서비스에서 ingress path를...