본문 바로가기

Computer Science34

Chapter 4. Replication and other controllers: deploying managed pods 3장에서는 pod 를 직접 관리하는 방법에 대해 살펴봤다. 하지만 실무에서는 pod 의 관리가 자동으로 되길 원한다. 이를 위해 ReplicationController 나 Deployment 를 사용한다. 4.1 Keeping pods healthy Pod 내의 컨테이너가 (오류로 인해) 죽으면, Kubelet 이 자동으로 해당 컨테이너를 재시작한다. 하지만 컨테이너의 프로세스가 종료되지 않았는데 어플리케이션이 동작하지 않는 경우가 있고, (JVM OOM 에러) 어플리케이션이 deadlock 이나 무한 루프에 빠져서 동작하지 않는 경우가 생길 수도 있다. 이런 경우에도 컨테이너가 자동으로 재시작되게 해야한다. 물론 앱이 자체적으로 에러를 감지해서 프로세스를 종료할 수도 있겠지만, 내부적으로 에러를 감지하.. 2021. 3. 21.
Autodiff 직접 구현하기 원래 Julia 로 구현해둔 것이 있었는데, 친구가 코드가 안예쁘다고 해서 파이썬으로 다시 짰다. Julia 구현은 calofmijuck.tistory.com/30 참고! Disclaimer. 저는 torch, tf 등의 라이브러리에서 autodiff 를 어떻게 하는지 모릅니다. Autodiff Autodiff (Automatic Differentiation) 는 주어진 함수의 미분계수를 자동으로 계산하는 방법이다. 예를 들어, 함수 \(f(x) = x^2\) 에 입력 \(x = 2\) 를 주면 미분계수 \(f'(2) = 4\) 를 출력한다. 주로 ML 에서 역전파(backpropagation) 할 때 사용한다고 들었다. Forward 한 번 할 때 미분계수가 자동으로 계산돼서 좋을 것 같다. (잘 모른.. 2021. 3. 21.
Chapter 3. Pods: running containers in Kubernetes 다양한 쿠버네티스 오브젝트 (resources) 를 살펴보는 단원이다. 가장 기본이 되는 Pod 부터 시작한다. 이외의 모든 것들은 pod 를 관리하거나, pod 를 노출하거나, pod 에 의해 사용된다. 3.1 Introducing Pods Pod 는 컨테이너의 모임이며, 쿠버네티스의 기본적인 building block 이 된다. 하나 기억할 사실은, 하나의 pod 는 하나의 노드 위에 있게 되므로, pod 내부의 모든 컨테이너는 같은 노드에 존재하게 된다. 3.1.1 왜 Pod 를 사용하는가? 그냥 하나의 컨테이너 안에서 모든 것을 실행하면 안 되는 것인가? 하나의 프로세스라면 하나의 컨테이너 안에서 실행해도 괜찮지만, 여러 프로세스가 한꺼번에 동작하는 앱의 경우 한 컨테이너 안에서 돌아가게 되면 관.. 2021. 3. 17.
Chapter 2. First steps with Docker and Kubernetes 도커와 쿠버네티스를 사용하여 간단한 어플리케이션을 배포해 보자! 2.1 컨테이너 이미지 생성, 실행, 공유하기 2.1.1 도커 설치 도커 공식 홈페이지에 있는 대로 설치한다! Mac 이나 Windows 를 쓰면 도커가 VM을 세팅하고 VM 안에서 도커 데몬이 실행된다. (왜일까... Linux 가 아니면 안 돼서 그런가) 컨테이너 실행 $ docker run :[TAG] [COMMAND] 이미지를 다운받고 실행해주는 명령 예시로 docker run busybox echo "Hello world" 가 있는데, 별거 아닌 것 같아 보여도 한 줄로 앱이 통째로 설치되고 실행이 되고 있기 때문에 생각보다 대단한 것이다! docker run 이 실행될 때... 우선 해당 이미지의 latest version (IM.. 2021. 3. 8.
Chapter 1. Introduction to Kubernetes 후기 쿠버네티스를 공부하기 위한 motivation 을 잘 제공해 주는 듯 하다. 왜 쿠버네티스가 등장했으며, 왜 사용하며, 쿠버네티스가 어떤 것들을 해주는지 큰 그림을 볼 수 있게 해준다. 더 구체적으로 설명할 수도 있었지만, 저자가 일부러 디테일은 숨기고 큰 그림을 보여주려고 노력한 것 같다. GKE에서 쿠버네티스를 사용해본 적이 있고, 업무에도 사용하다 보니 아주 이해와 공감이 잘 됐다. 리눅스 컨테이너 기술이 namespace 와 control group 으로 가능해진다는 사실과 쿠버네티스 노드의 구성을 새롭게 알게 되었다. 쿠버네티스를 소개하는 장이기에 구체적으로 좀 정리해서 힘들었다. ㅎㅎ. Chapter 1. Introducing Kubernetes 기존에는 소프트웨어가 커다란 덩어리였지만 .. 2021. 2. 28.
Derivative of log determinant 이 포스트에서 증명하려는 등식은 Bishop의 PRML 책의 부록 C에서 발견한 다음 등식이다. \[\DeclareMathOperator{\tr}{tr}\newcommand{\inv}{^{-1}}\newcommand{\A}{\mathbf{A}} \frac{\partial}{\partial x} \log (\det \A) = \tr \left(\A \inv \frac{\partial \A}{\partial x}\right)\] 본문에서는 책에 주어진 명제 몇 가지를 이용하여 해당 등식을 증명하라고 했다. 저자의 의도대로 증명을 했으나, 증명에 약간 부족한 부분이 있다고 판단하여 추가로 증명을 했고, 결과를 정리하여 남긴다. 당연히, LaTeX 이다. 파일과 함께 이미지도 첨부한다. 2020. 8. 9.
육군훈련소에서 인터넷 편지 편하게 받기 Update. 이후의 이야기는 다음 글에서 확인해 주세요 1년 뒤 다시 찾아본 인터넷 편지 사이트 이 글은 작년에 쓴 글 [육군훈련소에서 인터넷 편지 편하게 받기] 이후의 이야기입니다. 육군훈련소에서 인터넷 편지 편하게 받기 2020년 5월 14일부터 6월 11일까지 육군훈련소에서 기초군사훈련 calofmijuck.tistory.com 2020년 5월 14일부터 6월 11일까지 육군훈련소에서 기초군사훈련을 받았다. 입소하게 되면 인터넷 편지만큼 재미있는 것이 없다던데, 육군훈련소 훈련병에게 인터넷 편지를 보내는 방법은 생각보다 복잡하다. 크게 두 가지 방법이 있는 것으로 아는데, 첫 번째는 육군훈련소 홈페이지에서 작성하는 방법이다. 훈련병의 입영 날짜, 생년월일 그리고 이름을 입력하면 검색이 가능하며 인.. 2020. 6. 13.
Back-propagation on Affine Layers 딥러닝을 하다 보면 affine layer를 반드시(!) 만나게 된다. Vectorized input/output에 대해 back-propagation을 처음으로 적용하게 되는 대상이기도 하다. 이 글은 딥러닝이나 affine layer의 역할을 설명하려는 것이 아니고, affine layer에서 gradient 구하는 과정을 헷갈려한 나 자신을 돌아보기 위함이 주목적이다. 두 번째 목적은 복잡한 notation을 정리하며, affine layer에서 gradient를 구하는 모든 과정을 분명하게 밝히는 것에 있다.\(\newcommand{\X}{\mathbf{X}}\newcommand{\Y}{\mathbf{Y}}\newcommand{\W}{\mathbf{W}}\newcommand{\x}{\mathbf{.. 2020. 4. 20.
Using different instances of activation layers in a neural network 심심할 때 딥러닝 공부를 하고자 Deep Learning from Scratch 책을 보며 틈틈이 공부하고 있다. 이번에 multi-layer로 이루어진 신경망을 구현하여 학습을 시키고 overfitting을 관측하고자 했는데, 책에 있는 결과를 재현하지 못해 엄청 애먹었다. Overfitting을 일부러 일으키고자, 데이터의 개수를 300개로 줄이고 훈련을 시켰다. 그에 비해 신경망의 층수는 6층이니, overfitting이 일어나고, 그래프의 마지막 부분에서도 알 수 있듯이 실제로 overfitting이 일어났다. 그런데 이제 문제가 되는 부분은, 150~200 epoch 사이, 그리고 250~275 epoch 부근에서 정확도가 요동치는 부분이었다. 이게 왜 그런 걸까 싶어서 한참을 고민하다가, 일단.. 2020. 4. 18.