분류 전체보기 1236

쿠버네티스 Config 변경을 위한 Kustomize

쿠버네티스 Config 변경을 위한 Kustomize 조대협 (http://bcho.tistory.com) 쿠버네티스 환경을 운영하면, 같은 설정을 다른 클러스터에 배포해야 하는 시나리오가 있다. 예를 들어서 애플리케이션을 개발/테스트/운영 (dev/stage/production)환경에 배포해야 하는데, 이 경우에 세부 설정이 조금씩 다를 수 있다. 이때 각 환경별로 파일을 만들면 관리가 어렵고 비효율적이기 때문에, 다른 세부 설정만 이러한 문제를 해결하기 위한 도구들이 Kubernetes 배포 도구이다. 대표적인 도구로 Kustomize, Helm, Ksonnet 예를 들어 아래 그림과 같이 deployment를 정의한 YAML 파일이 있을때 전체 설정을 수정하지 않고 replica 수만 개발/테스트/..

간단하게 알아보는 Kubernetes Operator의 개념과 Kopf 프레임웍

간단하게 알아보는 Kubernetes Operator의 개념과 Kopf 프레임웍 조대협 (http://bcho.tistory.com) 쿠버네티스에는 Deployment, Service,Pod 등 여러 predefined resource가 있다. 이런 pre-defined resource 이외에 새로운 리소스를 정의해서 등록해서 사용할 수 있는데, 이를 Controller 또는 Operator라고 한다. Controller와 Operator는 용어가 종종 혼용되어 사용되는데, 분류를 하자면 Controller는 Kubernetes에 이미 정의되어 있는 Pre-defined resource를 , Operator는 사용자가 정의한 애플리케이션 리소스를 지칭한다. Operator는 Stateless applic..

이벤트 베이스 쿠버네티스 오토스케일링 KEDA

이벤트 베이스 쿠버네티스 오토스케일링 KEDA 보통 인스턴스 수를 늘이는 오토 스케일러는 메모리나 CPU와 같은 기초적인 자원 사용양에 따라서 작동하는 경우가 많다. 그러나 이보다는 애플리케이션의 큐 길이나 메시지 큐의 길이 또는 특정 이벤트에 따라서 자원을 스케일링 하는 것이 더 논리적인데, 이렇게 하기 위해서는 커스텀 메트릭을 프로메테우스등으로 수집한후, 이 메트릭을 CA (Cluster Autoscaler)에 적용하는 방법으로 구현해야 하는데, 구현의 복잡도가 높다. KEDA 오픈 소스는 Redis나 기타 오픈소스 또는 클라우드 자원과 쉽게 통합하여, 거기서 발생하는 이벤트를 이용하여 오토 스케일링을 손쉽게 가능하게 해준다. https://keda.sh/docs/1.4/scalers/redis-li..

쿠버네티스의 HPA/VPA 오토스케일링을 위한 모니터링 아키텍처

쿠버네티스의 HPA/VPA 오토스케일링을 위한 모니터링 아키텍처 조대협 (http://bcho.tistory.com) 쿠버네티스에서 HPA/VPA는 내부 메트릭을 이용하여 오토스케일링을 판단하는데, 이를 위해서 내부 메트릭을 수집하고 서빙하기 위한 모니터링 아키텍쳐가 어떻게 구현되었는지에 대해서 알아본다. 각 노드에서 동작하는 컨테이너에 대한 리소스 정보 (CPU,메모리, 네트워크 사용량)은 cAdvisor를 통하여 수집되어 Kubelet을 통해서, 컨트롤 플레인에 전달된다. cAdvisot는 컨테이너에 대한 리소스 정보만 수집하지만, Kubelet은 컨테이너 이외의 노드나 애플리케이션에 대한 정보를 수집한다. 이렇게 Kubelet에 저장된 정보는 metric server로 전달되고, metric api..

도커 컨테이너 파일 포맷 및 Image Pull Time

도커 이미지는 JSON 설정 파일 및 각 레이어 파일로 되어 있는데, 이 레이어 파일을 tar / gzip 으로 되어 있음 = 아래 Docker 컨테이너 이미지 Manifest file = { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 30008, "digest": "sha256:4e35ecd1a7547e482e9db2c4a889fe9085c6b8a61285cc921ca1ce6f6c7cf5bb" }, "layers": [ { "mediaType..

Apache Spark #1 - 아키텍쳐 및 기본 개념

Apache Spark의 개념 이해 #1 기본 동작 원리 및 아키텍처 조대협 (http://bcho.tistory.com) 아파치 스파크는 빅데이터 분석 프레임웍으로, 하둡의 단점을 보완하기 위해서 탄생하였다. 하둡을 대체하기 보다는 하둡 생태계를 보완하는 기술로 보면 되는데 실제로 기동할때 하둡의 기능들을 사용하게 된다. 하둡이 맵리듀스 방식으로 디스크(HDFS)에 저장된 파일 데이터를 기반으로 배치 분석을 진행한다면, 스파크는 디스크나 기타 다른 저장소(데이터 베이스등)에 저장된 데이터를 메모리로 올려서 분석하는 방식으로 배치 분석 뿐만 아니라, 스트리밍 데이터 양쪽 분석을 모두 지원한다. 기본 동작 원리 및 아키텍쳐 기본적인 동작 원리를 살펴 보면 다음과 같다. 스파크 클러스터의 구조는 크게 Mas..

L2 Regularization

머신러닝 모델 학습에서 일어나는 오버피팅 문제를 해결하기 위한 방법으로 여러가지 방안이 있는데, 뉴럴 네트워크에서 drop out , Early stopping (모델이 오버피팅 되기전에 학습을 멈추는 방법) 등이 있다. 여기서 살펴볼 내용은 오버피팅을 해결하기 위한 기법중의 하나인 L2 Regularization이다. 일반적으로 loss 함수는 아래 그림과 같이 (y-y':원본데이타 - 예측데이타) 의 차이를 최소화하는 값을 구하는 식으로 되어 있다. L2 Regularazation 기법은 이 Loss 함수의 값 뿐만 아니라, 모델의 복잡도를 최소화하는 weight 값을 차는 방식으로 식을 변형한다. 모델의 복잡도에 대한 계산은 weight 값의 최소값을 구하는 방식을 사용하는데, L1 Regularz..

Feature Crossing

Feature crossing 피쳐 크로싱이란, 주어진 피쳐로 문제를 해결할 수 없을때 (특히 선형문제), 두개 이상의 피쳐를 곱해서 새로운 피쳐를 생성해내는 방버이다. Overcrossing 피쳐크로싱을 한 피쳐를 많이 사용하게 되면 오히려 역효과(오버피팅등)이 발생할 수 있는데, 이를 오버크로싱이라고 한다. 아래 그림을 보면 X1,X2 피쳐를 크로싱한 3개의 추가 피쳐를 사용하였는데, 그림과 같이 분류 모델의 그래프과 왼쪽 상단에도 생기고 또한 분류 경계가 직선으로 아래그림 다음 그림과 같이 선형이면 충분함에도 불구하고, 오히려 곡선으로 구부러지면서 오버피팅이 되는 것을 확인할 수 있다. 아래는 해당 데이터 셋에 대한 이상적인 경계선을 표현한다. 여기서는 피쳐 크로싱된 데이터를 사용하지 않았다.

Vertex AI : 모델 학습 및 하이퍼 패러미터 튜닝

Vertex AI : 모델 학습 및 하이퍼 패러미터 튜닝 조대협 (http://bcho.tistory.com) 가장 기본적이지만 클라우드를 사용하면서 가장 효과적인 기능이 모델 학습과 하이퍼 패러미터 튜닝이다. 모델 학습을 위해서는 CPU/GPU 고사양의 컴퓨터가 필요하지만, 이 고사양의 컴퓨팅 파워가 항상 이용되는 것이 아니라. 학습때 많은 컴퓨팅 자원이 필요하기 때문에, 온프렘등에서 장비를 사놓고 학습때만 사용하고 평소에 장비를 사용하지 않는 것 보다는 학습때만 클라우드에서 컴퓨팅에서 컴퓨팅 자원을 사용하는 것이 오히려 비용 효율적이라고 볼 수 있다. 하이퍼 패러미터 모델을 학습함에 있어서 모델에는 여러가지 튜닝이 가능한 패러미터가 있다. 예를 들어 학습 속도 (Learning Rate)나, 또는 뉴..

구글 클라우드 Vertex.AI Model 학습 및 모델 배포&서빙

Vertex.AI Model 학습 및 모델 배포&서빙 조대협 (http://bcho.tistory.com) 머신러닝 환경에서, 학습을 수행하기 위해서는 프레임웍에 맞는 환경 (파이썬,텐서플로우)등을 설치하고, 필요한 컴퓨팅 리소스 (CPU,GPU)등을 프로비저닝 한후, 학습을 진행해야 한다. 학습이 완료되면 서빙을 위해서 모델을 export 하고, 서빙을 위한 API 서버를 설치 한 후에, 모델을 배포해서 서빙을 해야 한다. 서빙시에는 학습시 데이터와 서빙 요창에 들어온 데이터가 크게 차이가 나지 않는지 (training & serving detection), 또는 서빙 요청이 들어온 데이터가 이전 서빙 요청이 들어온 데이터와 크게 차이가 나지 않는지 (data drift detection)등의 체크를 ..