AI 카테고리 관련하여
·
AI
사실 AI라고 적어 놓긴 했지만 우선은 머신러닝, 딥러닝 분야를 합쳐서 글을 작성하려고 합니다. 카테고리 많아지면 복잡해서요. 예,, 나중에 글이 많아지면 나누는 걸 고려해 보겠습니다. 🙇🏻‍♂️
[Git] 커밋 메시지 컨벤션 정착기
·
DevOps
이 글을 왜 쓰게 되었냐면...혼자 진행 하는 프로젝트라 커밋 메시지를 대충 썼다. 그러다 PR 하나에 커밋 41개가 쌓인 걸 보고 정신이 들었다. 이 글은 그 PR을 정리하면서 세운 규칙과, 규칙이 생기게 만든 기록이다.# 정리 전 — 나중에 읽으면 아무것도 모르는 로그a1f3c2 수정b7e901 그래프c04d88 또 수정d9a1e2 최종e2c77b 진짜 최종# 정리 후 — 로그만 읽어도 무슨 일이 있었는지 보이는 상태f1a2b3 feat: 결과 집계 노트북 추가a4c5d6 fix: 진행바가 노트북에서 표시되지 않던 문제 수정b7e8f9 refactor: 결과 폴더명을 측정 내용에 맞게 변경 (benchmark → speed)c0d1e2 chore: 로그 폴더 gitignore 추가 1..
[Ruff] Python 포매팅과 린팅 한 번에 관리하기(w/ uv)
·
Python
1. Ruff란?Ruff는 Rust로 작성된 Python Linter & Formatter다.주요 특징은 다음과 같다.매우 빠른 린팅코드 포매팅 지원import 정렬 지원Flake8, isort 등 여러 도구의 규칙 지원pyproject.toml을 통한 설정 관리⚠️ 기존에 여러 도구를 조합해서 사용했다면 Ruff 하나로 상당 부분을 통합할 수 있다.2. 설치uv를 사용하고 있다면 다음과 같이 개발 의존성으로 추가한다.uv add --dev ruff 프로젝트 의존성에 추가하지 않으려면 `uv run` 대신 `uvx`를 사용하면 된다. (최초 실행시 별도의 격리된 환경에 설치됨)uvx ruff --version 설치 후 다음 명령어로 확인할 수 있다. (이 글에서는 `uv add`로 Ruff를 추가한 경우..
[uv] Python 패키지 매니저 완전 정복
·
Python
Python 패키지 관리의 새로운 표준, uv를 처음부터 차근차근 배워보자.1. uv란?Python으로 개발하다 보면 패키징 도구의 파편화에 한 번쯤 지쳐본 경험이 있을 것이다.1. 인터프리터 버전은 pyenv로,2. 가상환경은 virtualenv로,3. 의존성 잠금은 pip-tools로,4. CLI 도구는 pipx로 하나의 프로젝트를 제대로 굴리려면 네다섯 개의 도구를 머릿속에 동시에 띄워야 했다.📌`uv`는 이 모든 것을 하나로 합친다. Astral(현재 OpenAI 소속, Ruff를 만든 팀)이 Rust로 작성한 단일 바이너리로, pip·pyenv·pipx·virtualenv·pip-tools를 한 번에 대체한다.주요 특징단일 바이너리로 pip / pyenv / pipx / virtualenv /..
[Pytest] 입문자용 가이드
·
Python
Python 테스트의 표준, pytest를 처음부터 차근차근 배워보자. 1. pytest란?pytest는 Python에서 가장 널리 쓰이는 테스트 프레임워크다. 기본 내장 모듈인 unittest보다 훨씬 간결한 문법을 제공하고, 강력한 플러그인 생태계 덕분에 대규모 프로젝트에서도 널리 사용된다. 주요 특징함수 하나로 테스트 작성 가능 (클래스 불필요)assert 문만으로 직관적인 검증풍부한 플러그인 (pytest-cov, pytest-mock 등)자동 테스트 파일/함수 탐색2. 설치pip install pytest 설치 확인:pytest --version 3. 첫 번째 테스트 작성파일명은 test_로 시작하거나 _test로 끝나야 pytest가 자동으로 인식한다.# test_calculator.pydef..
[Docker] NVIDIA GPU가 인식되지 않을때
·
DevOps
에러 메시지Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]] NVIDIA Container Toolkit 설치 Installing the NVIDIA Container Toolkit — NVIDIA Container ToolkitNote There is a known issue on systems where systemd cgroup drivers are used that cause containers to lose access to requested GPUs when systemctl daemon reload is run. Refer to the troubleshooting docu..
[Kubernetes] NVIDIA GPU 플러그인 인식 문제
·
DevOps
Kubernetes에서 NVIDIA GPU 플러그인이 인식되지 않을 때 — 트러블슈팅 기록AI 추론 서버 2대로 Kubernetes 클러스터를 구성하는 과정에서 GPU 플러그인이 노드에 인식되지 않는 문제를 겪었다. 원인을 찾는 데 꽤 시간이 걸렸어서 같은 상황에 처한 사람에게 도움이 되길 바라며 과정을 기록한다.환경Ubuntu 24.04Kubernetes (kubeadm)containerd (CRI)NVIDIA GPU 탑재 서버 2대 (Worker Node)CNI: Flannel문제 상황GPU 플러그인 DaemonSet을 배포했는데 Pod가 ContainerCreating 상태에서 멈췄다.kubectl get pods -n kube-system | grep nvidia# nvidia-device-plu..
[Kubernetes] Taint & Toleration 완전 정복
·
DevOps
Control Plane에 Pod가 안 뜨는 이유"분명히 클러스터에 노드가 있는데 왜 Pod가 Pending 상태에서 안 넘어가지?"쿠버네티스를 처음 접한 사람이라면 한 번쯤 겪어보는 당혹스러운 순간입니다.이 글에서는 그 원인 중 하나인 Taint와 Toleration을 개념부터 트러블슈팅까지 차근차근 살펴봅니다.1. Taint와 Toleration이란?비유로 이해하기Taint(오염)는 노드에 붙이는 "출입 제한 표지판" 이라고 생각하면 됩니다. 예를 들어 "위험물 취급 구역 — 허가받은 차량만 출입 가능" 같은 표지판이죠. 이 표지판이 붙은 구역(노드)에는 허가받은 차량(Pod)만 들어올 수 있습니다.그 허가증에 해당하는 것이 바로 Toleration(허용) 입니다.[노드] ←── Taint: "출입 ..