목록분류 전체보기 (229)
dev.Log
터미널에서는 되는데 서비스로만 실행하면 깨지는 진짜 원인conda 환경에서 잘 동작하던 Python 서비스가systemd 서비스로 등록하는 순간 실행되지 않는 문제는 매우 흔하다.터미널에서는 정상conda activate 후 실행하면 정상systemctl로 띄우면 실패이 문제는 설정 실수가 아니라, conda와 systemd의 설계 철학이 근본적으로 다르기 때문이다.이 글에서는왜 systemd에서 conda 서비스가 안 뜨는지,그리고 실무에서 어떻게 해결해야 하는지를 정리한다.1. systemd는 쉘 초기화를 거치지 않는다가장 중요한 차이점부터 보자.터미널에서 실행할 때로그인 쉘 실행.bashrc, .bash_profile 로드conda 초기화 자동 적용conda activate 정상 동작systemd에..
같은 PyTorch인데 왜 설치 방법에 따라 지옥이 갈릴까?PyTorch를 CUDA 환경에서 설치할 때 대부분 한 번쯤 겪는다.pip install torch → 에러conda install pytorch → 갑자기 잘 됨서버에선 또 안 됨Docker에선 다시 다름이 글에서는 CUDA + PyTorch 환경에서 pip와 conda가 근본적으로 무엇이 다른지,그리고 언제 무엇을 써야 하는지를 실전 기준으로 정리한다.1. 핵심 결론 요약구분pipcondaCUDA 포함 여부❌ (wheel에 포함)⭕ (패키지로 관리)libc / libstdc++OS 의존conda가 제공설치 안정성환경 의존매우 안정운영 서버⭕❌연구/실험△⭕Docker 궁합⭕△한 줄 요약하면:pip은 OS에 맞춰 얹는 방식,conda는 CUDA ..
PyTorch/Transformers 이미지가 수 GB 되는 이유와 실전 다이어트 전략ML 서비스(특히 PyTorch/Transformers/Whisper/LLM)를 Docker로 패키징하면 이미지가 쉽게 수 GB가 된다.쿠버네티스 배포가 느려지고, 레지스트리 저장비가 늘고, CI 빌드 시간도 폭발한다.이 글은 “이미지 크기가 커지는 원인”을 짚고, 실제로 효과가 큰 줄이는 방법을 우선순위대로 정리한다.1. 왜 ML 이미지는 기본이 수 GB인가?가장 흔한 원인은 다음 조합이다.base 이미지가 큼: nvidia/cuda:*, pytorch/pytorch:*빌드 도구 포함: gcc, make, cmake, gitPython 휠이 GPU/BLAS 포함: torch, xformers, onnxruntime-g..
“연구용 도구를 운영에 쓰면 왜 문제가 될까?”conda는 ML 연구 환경에서는 거의 필수 도구다.하지만 운영 서버에서 conda를 쓰는 순간, 문제는 확률이 아니라 시간 문제가 된다.이 글에서는운영 환경에서 실제로 자주 발생하는 conda 사고 사례를 정리한다.1. 서버 재시작 후 서비스가 안 뜬다 (conda activate 문제)상황systemd 서비스로 Python API 서버 운영실행 커맨드: ExecStart=/opt/conda/envs/app/bin/python app.py 평소엔 잘 됨장애 발생서버 재부팅 후 서비스 실패로그: ImportError: libstdc++.so.6: version `GLIBCXX_3.4.29' not found 원인conda 환경은 쉘 초기화(.bashrc) 를..
Python 환경 관리, 언제 무엇을 써야 할까?Python 프로젝트를 하다 보면 반드시 마주치는 질문이 있다.“conda, venv, Docker 중에 뭐가 정답인가요?”결론부터 말하면 정답은 하나가 아니다.용도에 따라 “써야 할 도구”가 완전히 다르다.이 글에서는연구 / 개발 / 서버 운영 관점에서conda, venv, Docker를 명확하게 비교해본다.1. venv — Python 표준 가상환경개념venv는 Python 공식 표준 가상환경이다.Python 패키지(pip)만 격리하고, OS 라이브러리는 그대로 사용한다. python3 -m venv venv source venv/bin/activate pip install requests 특징Python 패키지만 관리시스템 Python과 분리매우 가볍..
SonarQube를 Docker로 띄웠는데 다음과 같은 증상을 겪은 적이 있을 것이다.컨테이너는 Up 상태포트(9000)도 열려 있음그런데 curl http://localhost:9000 하면 Connection refused로그를 보면 Elasticsearch가 계속 죽었다 살아남로그에는 보통 아래와 같은 메시지가 반복된다. bootstrap check failure: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 이 글에서는 이 오류의 정확한 원인과vm.max_map_count가 도대체 무엇인지,왜 SonarQube에서 필수인지 정리한다.vm.max_map_count란 무엇인가?vm...
리눅스를 쓰다 보면“이 프로그램은 왜 부팅할 때 자동으로 실행될까?”라는 생각을 한 번쯤 하게 된다.이때 등장하는 개념이 바로 시작 서비스다.시작 서비스란 간단히 말해시스템이 부팅되는 과정에서 자동으로 실행되는 프로그램이나 스크립트를 의미한다.SSH, 네트워크, 웹 서버, GUI 로그인 화면 같은 것들은모두 시작 서비스의 한 종류다.1. init이란 무엇인가리눅스에서 커널 부팅이 끝나면가장 먼저 실행되는 사용자 공간 프로세스가 있다. PID 1 = init 이 init 프로세스는 시스템 전체의 시작을 관리한다.어떤 서비스들을 실행할지어떤 순서로 실행할지어떤 상태에서 실행할지이 모든 것을 init 시스템이 책임진다.2. 옛날 방식: SysVinit과거 리눅스 배포판들은 SysVinit 방식을 사용했다.2-..
실시간 STT에서 무엇을 선택해야 할까?최근 음성 인식(STT) 서비스를 설계하거나 운영하다 보면Whisper를 쓸지, NVIDIA NeMo를 쓸지 고민하게 된다.두 모델 모두 성능은 뛰어나지만, 지향점과 구조가 완전히 다르다.이 글에서는“실시간 STT 관점에서 Whisper와 NeMo는 무엇이 다르고, 언제 어떤 선택이 맞는지”를 중심으로 정리한다.1. 출발점부터 다르다: 설계 철학의 차이WhisperOpenAI에서 공개한 범용 ASR 모델약 30초 길이의 음원을 입력으로 받아 전체 문맥을 보고 인식다국어, 잡음, 다양한 발화에 매우 강함기본 철학: 배치 인식 + 슬라이딩 윈도우NeMoNVIDIA의 ASR 프레임워크스트리밍 ASR을 전제로 설계프레임/청크 단위 처리실시간 Partial → Final 결..