본문 바로가기

Data/MLOps

(32)
[MLOps] Kubernetes CKA자격증 공부 - Maintenance Drain & Cordon node01을 업그레이드 하기위해서는 먼저 일시정지를 시켜줘야한다. 그럴땐 다음과같은 drain 명령어로 처리. kubectl drain node01 --ignore-daemonsets 다시 활성화를 시켜주려면 uncordon 명령어로 처리 kubectl uncordon node01 기존에 node01에서 돌던 pod들은 다른 활성화(taint가 되지않은)된 node로 넘어가게되고, node01을 다시 활성화 시켜준다해도 복귀하지않는다. 만약에 다른 활성화된 node로도 못옮기는상태에서 첫번째 명령어를 실행시키게된다면 error: unable to drain node "node01", aborting command... There are pending nodes to be dr..
[Nvidia Error] NVIDIA NVML Driver/library version mismatch에러 해결 어느날 GPU관련 메모리 리소스 확인을 하려고 nvidia-smi 명령어를 실행했더니 갑자기 NVIDIA NVML Driver/library version mismatch 이라는 에러문이 나와서 해결하고자 갓구글의 힘을 빌렸다. 일단은 다음과같은 사이트에서 해결방법을 구했고, 실제로 적용해보니 해결한것을 확인했다. https://stackoverflow.com/questions/43022843/nvidia-nvml-driver-library-version-mismatch NVIDIA NVML Driver/library version mismatch When I run nvidia-smi I get the following message: Failed to initialize NVML: Driver/lib..
[Airflow] Ubuntu20.04 Anaconda 상에서 Airflow 간단설치 먼저 conda virtualenv 로 가상환경을 만들어준다 # airflow라는 가상환경을 만드는 동시에 pip & python3.8 설치 conda create -n airflow pip python=3.8 설치가 완료가되면 만든 가상환경으로 접속해준뒤(접속하게되면 terminal 앞쪽에 (airflow) 라고 뜨게된다) conda activate airflow 활성화 이후에 pip install 로 apache-airflow를 설치해준다 pip install apache-airflow 자 이제 airflow의 홈 디렉토리를 설정해줘야하는데, 만일 해당과정을 안할경우에는 $HOME 으로 지정되어있는 공간에 airflow폴더가 생성된다. 하지만, 난 지금 따로 디렉토리를 지정해줘야하니 다음과같이 작업한..
[MLOps] Airflow 트러블슈팅 정리 Airflow에서 DAG를 실행시켜도 안돌아가는 문제 airflow dag를 다 만들고나서, test도 통과하고 이제 webserver에서 해당 dag를 실행시키려고했는데, 아무리 기다려도 돌아가지 않았다. 무슨문제이니 살펴보니, 동시에 airflow schedule를 실행시키지 않아서 생긴 문제였다. 따라서 다음과같은 명령어로 실행시킨뒤, webserver에서 해당 dag를 실행시키니 잘돌아가는것을 확인했다. airflow schedule > [log 저장될 path] & DAG를 추가했지만 airflow dags list에 존재하지않음 이건일단 높은확률로 dag python파일에 오류가 생겨서 자동으로 추가가안되는건데. python환경에서 dag파일을 실행시켜서 아무런 에러가 안나면 된다. pytho..
[MLOps] Kubernetes CKA자격증 공부 - Logging & Commands 쿠버네티스에서 특정 팟에 대한 로그를 얻고싶을떄 사용하는 방식. 명령어는 간단하게 다음과 같다. 만일 webapp-1이라는 pod의 로그를 보고싶다면 kubectl logs webapp-1 만약에 webapp-2라는 이름을 가진 pod이 두개의 컨테이너에서 돌고있다면 컨테이너 지정을 해줘야한다. 따라서, simple-webapp이라는 컨테이너안의 webapp-2의 로그를 보고싶다면 다음과같은 명령어로 확인한다 kubectl logs webapp-2 -c simple-appweb Commands & Args 쿠버네티스에도 Dockerfile처럼 커맨드를 파일에 첨부해서 날려줄수있다 Dockerfile에서는 ENTRYPOINT, CMD등이 있다면 쿠버네티스에는 yaml파일안에 spec - containers..
[MLOps] Kubernetes CKA자격증 공부 (2) ETCD Cluster 우리가 kubectl명령어로 가져오는 정보값들은 전부 ETCD Cluster를 통해서 가져오는것. 당연히 스케일링이나 삭제 추가 Pod등등 모든것이 ETCD에 저장된다. 현재 minikube를 통해서 설치했기 때문에 etcd-minikube라고 표시된다. kubectl get pods -n kube-system kube-apiserver kubectl 명령어는 kube-apiserver를 통해서 작동하게된다. 즉 kubectl get nodes같은 명령어는 다음과 같이 작동하게 된다. 명령어를 받고 먼저 kubectl명령하는 사용자를 검증 명령어가 유효한지 확인 명령어가 유효하다면 명령어에 따라서 해당 명령실행(kubectl get nodes같은 경우엔 ETCD Cluster로 향..
[MLOps] Kubernetes CKA자격증 공부(1) 평소에 Data Engineering쪽에 관심이있어서 어떤걸공부할까 생각하다가, 해당 부서에서 일하시는분이 Certified Kubernetes Administrator(CKA)자격증이 도움이 될것이라고 하셔서 공부를하게 됐다. Kubernetes 구조 [참조/정리를 너무 잘해놓으셨다...]=> https://ooeunz.tistory.com/118 Master Node 모든 클러스터(Worker Nodes)를 관리하는 노드. 모니터링, 스케쥴링, 매니징, 플래닝등등 을 담당. 아래는 Master Node에 속하는 요소들. kube-apiserver kube-apiserver는 쿠버네티스 클러스터의 api를 사용할 수 있도록 하는 컨트롤 플레인 컴포넌트 입니다. 즉 api 서버는 쿠버네티스 프론트 엔드로..
[MLOps] Basic Structures Machine Learning Model은 이제 누구나 어렵지않게 보편화가 되어있고, 많이 알려져왔다. 하지만, 정작 만든모델을 어떻게 서비스에 반영시키냐에 질문엔 답하지는 못할것이다. 이렇게 만든 ML 모델을 서비스에 적용하는 기술(직군)이 MLOps다. 다음은 ML서비스가 어떻게 이뤄져있는지 구조도이다. 보시다시피 ML 코드는 정말 극히 일부분에 속한다. 얽혀있는게 매우매우 많다는 소리. ML Project Lifecycle - Scoping : Define project 어떤 프로젝트를 진행할것인지에 대한 정의 - Data : 어떤 데이터를 수집할것인지, 데이터 수집 baseline 정의 이후 라벨링작업 진행 - Modeling : Data에서 나온 결과물을 활용하여 머신러닝 모델 구축. 오탐 분석..